- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
C语言基础与进阶测试题及答案
一、基础编程题(每题15分,共45分)
1.题目:变量运算与类型转换
编写程序:定义一个int类型变量a=10,一个float类型变量b=3.2,计算a/b的结果并输出,要求分别以“整数形式(舍去小数)”和“保留2位小数的浮点数形式”显示。
答案与解析
#includestdio.h
intmain(){
inta=10;
floatb=3.2f;//加f避免默认double类型转换,更规范
floatresult=a/b;//int与float运算,自动转换为float
//整数形式:强制类型转换,舍去小数部分
printf(整数形式:%d\n,(int)result);
//保留2位小数:%.2f控制格式
printf(浮点数形式(保留2位):%.2f\n,result);
return0;
}
输出结果:
整数形式:3
浮点数形式(保留2位):3.12
解析:
不同类型运算时,C语言会自动触发“隐式类型转换”(int→float),保证运算精度;
强制类型转换(int)result仅临时改变值的类型,不会修改result本身的float类型;
%.2f是格式化输出的核心,通过小数点后数字控制保留小数位数。
2.题目:循环与分支应用
编写程序:使用循环计算1~20中“能被3整除但不能被5整除”的数字之和,并输出所有符合条件的数字及最终的和。
答案与解析
#includestdio.h
intmain(){
intsum=0;//初始化累加和,避免未定义行为
printf(符合条件的数字:);
for(inti=1;i=20;i++){//C99及以上支持循环内定义变量
//核心判断:能被3整除(i%3==0)且不能被5整除(i%5!=0)
if(i%3==0i%5!=0){
printf(%d,i);
sum+=i;//满足条件则累加
}
}
printf(\n符合条件数字的和:%d\n,sum);
return0;
}
输出结果:
符合条件的数字:3691218
符合条件数字的和:48
解析:
循环变量i从1遍历到20,覆盖所有需判断的范围;
取余运算%是判断“整除”的核心(结果为0表示整除);
逻辑与确保两个条件同时满足,优先级高于||,无需额外加括号。
3.题目:函数参数传递
编写一个函数swap,实现“交换两个int类型变量的值”,在main函数中定义两个变量并调用swap,最后输出交换后的结果。(提示:注意值传递与地址传递的区别)
答案与解析
#includestdio.h
//关键:用指针接收变量地址,实现“地址传递”(修改原变量)
voidswap(int*x,int*y){
inttemp=*x;//用*获取指针指向的变量值
*x=*y;
*y=temp;
}
intmain(){
intm=5,n=8;
printf(交换前:m=%d,n=%d\n,m,n);
//传参时需加,获取变量的内存地址
swap(m,n);
printf(交换后:m=%d,n=%d\n,m,n);
return0;
}
输出结果:
交换前:m=5,n=8
交换后:m=8,n=5
解析:
若用“值传递”(函数参数为intx,inty),函数内修改的是参数副本,原变量不会变化;
指针*x的作用是“访问指针x指向的内存空间”,因此修改*x等价于修改原变量;
调用函数时,m表示“取变量m的地址”,必须与函数参数的指针类型匹配。
二、进阶编程题(每题20分,共40分)
1.题目:指针与数组
定义一个int数组arr={2,5,8,10,15},使用指针遍历数组,计算数组所有元素的平均值(保留1位小数),并将数组中“大于平均值”的元素输出。
答案与解析
#includestdio.h
intmain(){
intarr[]={2,5,8,10,15};
intlen=sizeof(arr)/sizeof(arr[0]);
文档评论(0)