2月2日作业 C语言笔试题整理

1、请简述gcc的编译步骤

预处理:展开头文件、删除注释、替换宏

编译:检查语法正确性,生成汇编文件

汇编:把汇编语言转换为二进制文件,生成目标文件

链接:把多个目标文件链接为可执行文件

2、C语言中基本数据类型有哪些,占用多少字节?

有无符号整行 int/unsigned int  4字节

有无符号字节型 char/unsigned char 1字节

短整型 short 2字节

有无符号长整型 long/unsigned long (32位4字节)64位8字节

单精度浮点型 float 4字节

双精度浮点型 double 8字节

3、C语言的存储类型有哪些?

auto:自动类型,局部变量默认不写存储类型就是auto

static:静态存储类型,延长生命周期

register:寄存器类型

extern:外部变量

修饰词:

const:修饰的变量特点不可以改变值

volatile:防止内存优化,保存内存的可见性

4、大小端存储的区别,判断大小端存储的方法

大端存储:地址高位存储数据低位,地址低位存储数据高位。大型网络

小端存储:地址高位存储数据高位,地址低位存储数据低位。计算机存储

int main(int argc, const char *argv[])
{int a = 0x12345678;printf("a = %d\n",a);short b = a;if(b == 0x1234){printf("big\n");}else if(b == 0x5678){printf("small\n");}return 0;
}
union
{char a;int b;
}u;
int main()
{u.b = 0x12345678;if(u.a == 0x12){printf("big\n");}else if(u.a == 0x78){printf("small\n");}return 0;
}
int main()
{int a = 0x12345678;char *p = (char *)&a;if(*p == 0x12){printf("big\n");}else if(*p == 0x78){printf("small\n");}return 0;
}

5、给定一个无序数组,使用冒泡排序或者选择排序使其形成一个有序序列

void show(int arr[10])
{for(int i = 0;i < 10;i++){printf("%d ",arr[i]);}printf("\n");
}
void maopao(int arr[10])
{for(int i = 1;i < 10;i++){for(int j = 0;j < 10-i;j++){if(arr[j+1] < arr[j]){int t = arr[j];arr[j] = arr[j+1];arr[j+1] = t;}}}printf("冒泡排序结果如下:");show(arr);
}
void sselect(int arr[10])
{for(int i = 0;i < 9;i++){int max = arr[i];for(int j = i+1;j < 10;j++){if(arr[j] > max){int t = arr[i];arr[i] = arr[j];arr[j] = t;}}}printf("简单选择排序后结果如下:");show(arr);
}
int main(int argc, const char *argv[])
{int arr[10] = {19,11,32,67,44,4,92,44,6,10};maopao(arr);sselect(arr);return 0;
}

6、实现strcpy函数

char *mystrcpy(char *dts,char *src)
{int i = 0;while(*(src+i) != '\0'){*(dts+i) = *(src+i);i++;}*(dts+i) = '\0';return dts;
}

7、实现strcat函数

char *mystrcat(char *dts,char *src)
{int i = 0;int j = 0;while(*(dts+i) != '\0'){i++;}while(*(src+j) != '\0'){*(dts+i) = *(src+j);i++;j++;}*(dts+i) == '\0';return dts;
}

8、实现strcmp函数

int mystrcmp(char *str1,char *str2)
{int i = 0;while(*(str1+i) != '\0' && *(str2+i) != '\0'){if(*(str1+i) != *(str2+i)){return *(str1+i)-*(str2+i);}i++;}return 0;
}

9、实现字符串逆置

#include <myhd.h>
int main(int argc, const char *argv[])
{char a[20] = "hello";int i = 0;int j = 0;while(*(a+j) != '\0'){j++;}j--;while(i<j){char t = *(a+i);*(a+i) = *(a+j);*(a+j) = t;i++;j--;}printf("a = %s\n",a);return 0;
}

10、写一个宏函数,判断两数大小

#define MAX(a,b) ((a<b?a:b))

11、以下程序的运行结果是什么

int fun(int a,int b)
{return ((a&b) + (a|3));
}
int main(int argc, const char *argv[])
{int a = 10;int b = 20;int s = fun(a,b);printf("%d\n",s);return 0;
}

答案:11

12、下面代码的输出结果什么是

void main( ){unsigned char ucNum;for (ucNum = 0; ucNum < 500; ucNum++){}printf(“%d”, ucNum);
}

答案:无输出

13、输入一个数,判断是否为完数

int main(int argc, const char *argv[])
{int n;int sum;scanf("%d",&n);for(int i = 1;i < n;i++){if(n%i == 0){sum+=i;}}if(summ == n){printf("ok");}else{printf("no");}return 0;
}

14、打印下面图形

_

__F

___FE

____FED

_____FEDC

______FEDCB

_______FEDCBA

for(int i=1;i<=7;i++)
{for(int j=1;j<=i;j++){printf("_");}char ch='G';for(int j=1;j<=i-1;j++){printf("%c",ch-j);}printf("\n");
}

15、打印九九乘法表

for(int i=1;i<=9;i++)
{for(int j=1;j<=i;j++){printf("%d*%d=%-4d",j,i,j*i);}printf("\n");
}

16、循环输入10个数,计算最大差max-min

int max,min;for(int i=1;i<=10;i++){printf("please enter %d num:",i);scanf("%d",&num);if(i==1)max=min=num;if(max <num)max=num;if(min >num)min=num;}printf("max-min=%d\n",max-min);

17、计算二维数组的最大值和最小值

int main(int argc, const char *argv[])
{int m,n;printf("please enter m,n:");scanf("%d %d",&m,&n);int arr[m][n];int max,min;//循环输入for(int i=0;i<m;i++){for(int j=0;j<n;j++){scanf("%d",&arr[i][j]);}}max=min=arr[0][0];for(int i=0;i<m;i++){for(int j=0;j<n;j++){if(max<arr[i][j])max=arr[i][j];if(min>arr[i][j])min=arr[i][j];}}printf("max=%d  min=%d\n",max,min);return 0;
}

18、循环输入一维数组,交换最小值,和第二大值{不允许使用排序}

int arr[]={12,34,54,76,6,76,34,2};int n=sizeof(arr)/sizeof(arr[0]);//计算最大值和最小值int first_max=arr[0],first_min=arr[0];int first_maxi=0,first_mini=0;for(int i=0;i<n;i++){if(first_max<arr[i]){first_max=arr[i];first_maxi=i;}if(first_min>arr[i]){first_min=arr[i];first_mini=i;}}//计算第二大int second_max=first_min;int second_maxi=0;for(int i=0;i<n;i++){if(i==first_maxi)continue;if(second_max<arr[i]){second_max=arr[i];second_maxi=i;}}arr[first_mini]=second_max;arr[second_maxi]=first_min;for(int i=0;i<n;i++){printf("%d ",arr[i]);}

19、输入一个年月日,判断平年闰年,并确定是该年哪一天

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{int year = 0;int month = 0;int day = 0;int i = 1;int sum = 0;printf("请输入年 月 日:");scanf("%d%d%d",&year,&month,&day);if(month>=13||month<=0){printf("错误的月份\n");}else if((month==1||3||5||7||8||10||12) && (day>31||day<0)){printf("该日不存在\n");}else if(((year%4==0&&year%100!=0)||(year%100==0&&year%400==0))&&(month==4||6||9||11)&&(day>30||day<0)){printf("该日不存在\n");}else if((~(year%4==0&&year%100!=0)||(year%100==0&&year%400==0))&&(month==2)&&(day>28||day<0)){printf("该日不存在\n");}else if(((year%4==0&&year%100!=0)||(year%100==0&&year%400==0))&&(month==2)&&(day>29||day<0)){printf("该日不存在\n");}else{if(year%4==0&&year%100!=0||year%100==0&&year%400==0){	printf("%d是闰年\n",year);switch
sum = day+max(month,1)*31+max(month,2)*29+max(month,3)*31+max(month,4)*30+max(month,5)*31+max(month,6)*30+max(month,7)*31+max(month,8)*31+max(month,9)*30+max(month,10)*31+max(month,11)*30;printf("%d年%d月%d日是今年的第%d天\n",year,month,day,sum);}else{			printf("%d是平年\n",year);
sum = day+max(month,1)*31+max(month,2)*28+max(month,3)*31+max(month,4)*30+max(month,5)*31+max(month,6)*30+max(month,7)*31+max(month,8)*31+max(month,9)*30+max(month,10)*31+max(month,11)*30;printf("%d年%d月%d日是今年的第%d天\n",year,month,day,sum);}}return 0;
}

20、输入4个整数,判断最大值和最小值

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{int a=0,b=0,c=0,d=0;int max = 0;printf("请输入四个数:");scanf("%d%d%d%d",&a,&b,&c,&d);if(a>b){max=a;}else{max=b;}if(max>c){max=max;}else{max=c;}if(max>d){max=max;}else{max=d;}printf("max=%d\n",max);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/664198.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Java SSM框架实现校园兼职系统项目【项目源码+论文说明】

基于java的SSM框架实现校园兼职系统演示 摘要 社会的发展和科学技术的进步&#xff0c;互联网技术越来越受欢迎。网络计算机的生活方式逐渐受到广大人民群众的喜爱&#xff0c;也逐渐进入了每个学生的使用。互联网具有便利性&#xff0c;速度快&#xff0c;效率高&#xff0c;…

买电脑注意事项之CPU型号后面的字母都代表什么意思

在 CPU 型号后面的字母通常表示该 CPU 的一些特性或用途。不同的字母可能代表不同的系列、性能级别、功耗特性等。以下是一些常见的 CPU 后缀字母及其可能的含义&#xff1a; U&#xff08;例如&#xff1a;i5-8250U&#xff09;: Ultra Low Power&#xff1a;表示低功耗&#…

Elasticsearch(简称ES)性能优化 实践

Elasticsearch&#xff08;简称ES&#xff09;性能优化主要包括以下几个方面&#xff1a; 索引优化&#xff1a; 选择合适的分片数&#xff1a;根据业务需求和数据量合理设置分片数&#xff0c;避免过多或过少分片造成性能问题。分片数过多会导致创建分片速度变慢、集群易崩溃…

[office] excel计算客户名单的人数 COUNTA 函数:“销售额”不仅是金额的总和 #知识分享#职场发展#知识分享

excel计算客户名单的人数 COUNTA 函数&#xff1a;“销售额”不仅是金额的总和 前文中介绍的 SUM 函数&#xff0c;是在日常工作中使用频率最高的函数之一。但是&#xff0c;在实际操作时也会出现问题。比如在计算销售额总和时&#xff0c;SUM 函数得出的结果为金额总和。但是…

RISC-V指令格式

RISC-V指令格式 1 RISC-V指令集命名规范2 RISC-V指令集组成2.1 基础整数指令集2.2 扩展指令集 3 RISC-V指令格式3.1 指令表述3.2 指令格式 本文属于《 RISC-V指令集基础系列教程》之一&#xff0c;欢迎查看其它文章。 1 RISC-V指令集命名规范 前面提到过RV32I&#xff0c;这是…

本地部署 SalesGPT

本地部署 SalesGPT 0. 背景1. SalesGPT 项目介绍2. SalesGPT 项目 Github 地址3. 本地部署 SalesGPT4. 运行 SalesGPT 0. 背景 最近有同事想玩玩 SalesGPT&#xff0c;结果发现使用 OpenAI API 时&#xff0c;会发生超过 Limit 的问题无法继续对话。 今天尝试通过本地部署开源…

5. 基础网络服务与应用配置

5.1 实验一&#xff1a;FTP 基础配置实验 5.1.1 实验介绍 5.1.1.1 关于本实验 设备支持多种文件管理方式&#xff0c;用户根据任务和安全性要求选择合适的文件管理方式。 用户可以通过直接登录系统、FTP&#xff08;File Transfer Protocol&#xff09;、TFTP&#xff08;T…

从编程中理解:大脑的短期记忆和长期记忆

在编程中,我们可以将大脑的短期记忆和长期记忆类比为程序中的变量作用域和持久化存储。在Unity C#编程环境下,可以这样解释: 假设金庸武侠世界中的人物张无忌正在修炼九阳真经。我们用C#代码来模拟他学习武功的过程,其中涉及的“短期记忆”与“长期记忆”。 public class…

第8章 SpringBoot任务管理

学习目标 熟悉SpringBoot整合异步任务的实现 熟悉SpringBoot整合定时任务的实现 熟悉SpringBoot整合邮件任务的实现 开发web应用时,多数应用都具备任务调度功能。常见的任务包括异步任务,定时任务和发邮件任务。我们以数据库报表为例看看任务调度如何帮助改善系统设计。报表可…

【深度学习】数据归一化/标准化 Normalization/Standardization

目录 一、实际问题 二、归一化 Normalization 三、归一化的类型 1. Min-max normalization (Rescaling) 2. Mean normalization 3.Z-score normalization (Standardization) 4.非线性归一化 4-1 对数归一化 4-2 反正切函数归一化 4-3 小数定标标准化&#xff08;Demi…

Day17、18、19学习记录

#c语言知识 内存管理 1.作用域 &#xff08;1&#xff09;代码块作用域&#xff08;代码块是{}之间的一段代码&#xff09; &#xff08;2&#xff09;函数作用域 &#xff08;3&#xff09;文件作用域 2.局部变量&#xff08;自动变量auto&#xff09;&#xff1a; 在函…

jmeter-03界面介绍

文章目录 主界面介绍测试计划介绍线程组介绍线程组——选择测试计划&#xff0c;右键-->添加-->线程-->线程组 主界面介绍 测试计划介绍 测试计划&#xff1a;本次测试所需要的所有内容&#xff0c;即父线程 线程组介绍 jmeter讲究一个概念&#xff1a;一个线程一…

Linux内存管理:(十一)页面分配之慢速路径

文章说明&#xff1a; Linux内核版本&#xff1a;5.0 架构&#xff1a;ARM64 参考资料及图片来源&#xff1a;《奔跑吧Linux内核》 Linux 5.0内核源码注释仓库地址&#xff1a; zhangzihengya/LinuxSourceCode_v5.0_study (github.com) 1. 水位管理和分配优先级 页面分配…

小白水平理解面试经典题目_二维数组类LeetCode 2966 Divide Array【排序算法实现】

2966 将数组划分为具有最大差值的数组 小白渣翻译&#xff1a; 给定一个大小为 n 的整数数组 nums 和一个正整数 k 。 将数组分成一个或多个大小为 3 的数组&#xff0c;满足以下条件&#xff1a; nums 的每个元素都应该位于一个数组中。一个数组中任意两个元素之间的差异小…

力扣每日一题 ---- 1906. 查询差绝对值的最小值

本题中&#xff0c;我们的题目求的是差值的最小值&#xff0c;我们考虑一个因素&#xff0c;当前题目中给出的数组是没有排序过的&#xff0c;那么想要求的差值&#xff0c;是不是要两两配对进行判断差值最小值。这里我们就很费时间了&#xff0c; O(N^2)的时间复杂度&#xf…

【LeetCode】27.移除元素 (快慢指针法)

题目 图解 思路 运行代码 代码 采用 LeetCode 的格式模板 int removeElement(int* nums, int numsSize, int val) {int Left 0;int Right 0;while(Right < numsSize){if(nums[Right] ! val) {nums[Left] nums[Right];Left;}Right;}return Left;// 此时 Left 刚好是数组的…

FANUC机器人开机时无法进入系统,示教器黑屏故障处理总结

FANUC机器人开机时无法进入系统&#xff0c;示教器黑屏故障处理总结 故障描述&#xff1a; FANUC机器人开机时&#xff0c;示教器在初始化时显示&#xff1a;EMAC initial call failed&#xff08;示教器上电时会进入boot画面&#xff0c;左上角会出现一些白色的英文提示&#…

从编程中理解:退一步海阔天空

编程中,“退一步海阔天空”的理念指的是在面对问题时,有时过于纠结于细节或局部优化,反而会陷入困境。这时,如果能暂时放下手中的具体工作,从更高的层面或者换个角度来审视整个系统的设计和架构,可能会发现更好的解决方案。在Unity游戏开发中,这一原则体现为对代码的模块…

Linux系统漏洞一键检测与修复工具

支持检测及修复漏洞的列表 OpenSSL CVE-2021-3712 OpenSSH CVE-2021-41617 sudo CVE-2021-3156 glibc CVE-2018-11236 polkit CVE-2021-4034 wget CVE-2017-13090 kernel CVE-2016-5195 bash CVE-2016-7543 samba CVE-2021-…

算法基础,一维,二维前缀和差分详解

目录 1.前缀和 1.一维前缀和 例题&#xff1a;【模板】前缀和 2.二维前缀和 例题&#xff1a;【模板】二维前缀和 2.差分 1.一维差分 1.性质&#xff1a;d[i]的前缀和等于a[i] 2.性质&#xff1a;后缀区间修改 例题&#xff1a;【模板】差分 2.二维差分 例题&#x…