说明所有答案均在VC6.0环境下调试运行通过项目一 参考答案 一、单项选择题1.C 2.D 3.C 4.C 5.A 6.C 二、填空题1. main2. .c3. 编译或汇编4. 录入并编辑5. 语法、逻辑 三、应用题 1. C语言的主要特点如下1C语言上一种模块化的程序设计语言。2C语言简洁结构紧凑使用方便灵活。3运算极其丰富数据处理能力强。4可移植性好。5可以直接调用系统功能实现对硬件的操作。 2. 高级语言高级语言要是相对于低级语言而言的它更类似人类的自然语言 基本脱离了机器的硬件系统用人们更易理解的方式编写程序。 低级语言低级语言是指机器语言和汇编语言低级语言是面向机器的语言 和具体机器的指令系统密切相关。 3. /* 编写一个简单的C语音程序完成如下功能即在屏幕上显示*/#include stdio.hvoid main(){printf(**************************\n);printf(M E N U\n);printf(**************************\n);} 4. 34 四、实训题2.(3) Sum is 792.(4) 3.0, 4.0, 5.0,The area is 6.02.(5) /* 编写一个程序求56和23的差 */void main(){int a 56,b 23,c;c a-b;printf(%d-%d %d\n,a,b,c);}2.(6) /*华氏温度与摄氏温度的转换*/void main(){float hua,she;printf(请输入华氏温度);scanf(%f,hua);she (hua-32)/1.8;printf(对应的摄氏温度为%f\n,she);}项目二 参考答案 三、单项选择题1.D 2.B 3.A 4.C 5.C 6.A 7.A 8.D 9.C 10.C 四、填空题6. 287. sinx*sinx*(ab)/(a-b)8. -19. 6.6 三、应用题 1. 答字符常量和字符串常量的区别从以下3方面比较1定界符不同字符常量使用单引号而字符串常量使用双引号。2长度不同3存储要求不同 2. (1) a 24 (2) a 10 (3) a 60 (4) a 0 (5) a 0 (6) a 0 3. 9,11,9,10 4. /*从键盘上输入2个int型数据比较其大小并输出其中较小的数*/ void main() {int x,y,min;printf(请输入两个整数:);scanf(%d %d,x,y);if(xy)min y;elsemin x;printf(较小的数是%d\n,min); } 5. /* 编程实现输入km数输出其英里数。*/ #include stdio.h void main() {float yingli,gongli;printf(请输入公里数);scanf(%f,gongli);yingli gongli/1.60934;printf(对应的英里数为%f\n,yingli); } 6. /*从键盘输入任意一个float型数据然后将该数保留两位小数输出*/ void main() {float f;printf(请键盘输入一个float型数据:);scanf(%f,f);printf(保留两位小数位:%.2f\n,f); } 7./*从键盘上输入任意一个小写字母然后将该字符转换为对应大写字母输出 并同时输出该字母的ASCII码值。*/ void main() {char ch;printf(请输入一个小写字母:);scanf(%c,ch);printf(对应的大写字母:%c, ASCII值为:%d\n,ch-32,ch); } 四、实训题2.(1)/*编程:利用sizeof()函数计算C语言各种数据类型在VC6.0开发 环境下所占用的存储空间大小。*/#include stdio.hvoid main(){int length;length sizeof(float);printf(VC6.0环境下float型数据的存储空间大小为%d\n,length);length sizeof(int);printf(VC6.0环境下int型数据的存储空间大小为%d\n,length);length sizeof(char);printf(VC6.0环境下char 型数据的存储空间大小为%d\n,length);}2.(2)/* 编程:利用函数sqrt 求从键盘输入的任意正整数的平方根。*/#include stdio.h#include math.hvoid main(){int n;double fg;printf(请输入一个正整数);scanf(%d,n);fg sqrt(n);printf(%d的平方根为%lf\n,n,fg);}2.(3) /*输入下列源代码改正其中存在的错误使其调试通过记录正 常运行结果。*/#include stdio.hvoid main(){int y,m,d;printf(请输入三个整数:);scanf(%d,%d,%d,y,m,d);printf(这三个整数是:%d,%d,%d\n,y,m,d);}项目三 参考答案 五、单项选择题1.D 2.A 3.①B②A4.A 5.C 6.C 7.D 六、填空题10.100,144,6411.65,101,41,A12.3.141593,3.1416,3.14213.31.42,3.14e001 (表示空格)14.c K15.a 1,b ,c 2 (表示空格)16.a 12b 34517.c A18.n 64 三、编程题 1. /*编写程序从键盘输入圆锥体的半径r和高度h计算其体积。*/ #include stdio.h void main() {float r,h,v;printf(请输入圆锥体的半径和高度);scanf(%f%f,r,h);v 3.1415*r*r/3;printf(v %f\n,v); } 2. /*编写程序输入一个字符输出其对应的ASCII码。*/ #include stdio.h void main() {char ch;printf(请输入一个字母);scanf(%c,ch);printf(ASCII码为%d\n,ch); } 3./*编写程序输入一个三位整数把三个数字逆序组成一个新数再输出。例如输入369 输出963。*/ #include stdio.h void main() {int n,g,s,b;printf(请输入一个三位整数);scanf(%d,n);b n/100; /*分离出百位*/s n0/10;g n0;n g*100s*10b;/*重新组合成新数字*/printf(新组合的数字为%d\n,n); }项目四 参考答案 七、选择题1.B 2.D 3.B 4.B 5.A 6.D 7.C 8.B 9.BEF 10. B 11.D 12.D13.A 八、填空题19.720. ||21.0.500000 三、编程题 1. /*编程计算下列分段函数值。*/ 注意此题书本上印刷出错正确的表达式应该如下2.5 ∗x x 1 y x −1 ≤ x ≤ 13 ∗x (x − 1) #include stdio.h void main() {double x,y;printf(请输入自变量x 的值);scanf(%lf,x);if(x1)y 2.5*x;else if(x -1 x 1)y x;elsey 3*x;printf(y %lf\n,y); } 2. /*编程将一个百分制转换成等级制成绩。*/ void main() { int score;printf(请输入一个百分制成绩);scanf(%d,score);if(score0 ||score100)printf(输入的成绩不合理重新输入\n);else{switch(score/10){case 10:case 9: printf(%d分 等级为A级\n,score);break;case 8: printf(%d分 等级为B级\n,score);break;case 7: printf(%d分 等级为C级\n,score);break;case 6: printf(%d分 等级为D级\n,score);break;default:printf(%d分 等级为E级\n,score);break;}} } 3. /*编程输入三边的长度并判断这三边能否构成三角形。*/ #include stdio.h void main() {float a,b,c;printf(请输入三条边长:);scanf(%f%f%f,a,b,c);if(abc acb bca)printf(%f,%f,%f三边可以构成三角形\n,a,b,c);elseprintf(%f,%f,%f三边无法构成三角形\n,a,b,c); }项目五 参考答案 九、单项选择题1.C 2.D 3. C 4.B 5.C 6.C 7.D 8.A 9.C 10.B 11.C 12. D13. D 14. B 15.B 16.B 17.B 18.C 19.D 二、填空题22.5023.b i124.4125.DEF26.sum 1627.i 100 j%3! 0 三、实训题 1./*输入两个正整数求其中最大公约数和最小公倍数。*/ /*利用辗转相除法求最大公约数两数乘积除以最大公约数即为最小公倍数*/ #include stdio.h void main() {int a,b,t,u,v,w,gys,gbs;printf(请输入两个正整数);scanf(%d%d,a,b);if(ab){t a;a b;b t;}u a;v b;do{ w u%v;u v;v w;}while(v! 0);gys u;gbs (a*b)/gys;printf(最大公约数 %d\n最小公倍数 %d\n,gys,gbs); } 2./*输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。 */ #include stdio.h void main() {char ch;int letters 0,space 0,digits 0,others 0; /*letters为字母个数,digits为数字个数,space为空格个数,others为其他 字符个数*/printf(please input a line characters:\n);ch getchar();while(ch! \n){if(ch a ch z ||ch A ch Z) letters;else if(ch 0 ch 9) digits;else if (ch ) space;else others;ch getchar();}printf(letters:%d\n,letters);printf(space:%d\n,space);printf(digits:%d\n,digits);printf(others:%d\n,others); } 修改后 /*输入一行字符分别统计出其中的大、小写字母、空格、数字和其他字符的个数。*/ #include stdio.h void main() {char ch;int uletters 0,lletters 0,space 0,digits 0,others 0;/*uletters为大写字母个数,lletters为小写字母个数digits为数字个 数,space为空格个数,others为其他字符个数*/printf(please input a line characters:\n);ch getchar();while(ch! \n){if(ch a ch z ) lletters;else if(ch A ch Z) uletters;else if(ch 0 ch 9) digits;else if (ch ) space;else others;ch getchar();}printf(uletters:%d\n,uletters);printf(lletters:%d\n,lletters);printf(space:%d\n,space);printf(digits:%d\n,digits);printf(others:%d\n,others); } 3. /*利用单循环结构123……10*/ #include stdio.h void main() {int i;long s 0,x 1;for(i 1;i 10;i){x x*i;s sx;}printf(s %ld\n,s); } /*利用双重循环结构123……10*/ #include stdio.h void main() {int i,j;long s 0,x 1;for(i 1;i 10;i){x 1;for(j 1;j i;j)x x*j;s sx;}printf(s %ld\n,s); }项目六 参考答案 十、单项选择题1.C 2.B 3. D 4.A 5.A 6.C 7.C 8.A 9.D 10.A 11.D 二、填空题28.x 2,y 3a 1,b 229.1830.2.80000031.16.00000032.733. 81012 (表示空格)34.n 100n 80n 6035.a 5a*a 25a*a*a 8 三、实训题 1. /*编写一个判素数的函数在主函数输入一个整数输出是否素数的信息。 */ int sushu(int n) {int i,t;for(i 2;in;i)if (n%i 0)break;if(in)t 0;elset 1;return t; } void main() { int n,t;printf(please input a int number:);scanf(%d,n);t sushu(n);if (t 1)printf(%d是素数\n,n);elseprintf(%d是非素数\n,n); }111 2. /*编写程序计算s1 */2!3!n! long fun(int n) {long p 1;int i;for(i 1;i n;i)p p*i;return p; } void main() {int n,i;double s 0;printf(please input a int number: );scanf(%d,n);for(i 1;i n;i)s s1.0/fun(i);printf(%.5lf\n,s); } 3. /*用递归法将一个整数转换成字符串。*/ void change(int n) {if (n/10! 0)change(n/10);printf(%c,n48); /*字符’0’的ASCII是48*/ } void main() {int n;printf(please input a int number: );scanf(%d,n);change(n);printf(\n); } 4. 1 不用全局变量 /*求两个整数的最大公约数和最小公倍数。用一个函数求最大公约数用另一函 数根据求出的最大公约数求最小公倍数。*/ #include stdio.h int findgys(int m,int n) /*求最大公约数*/ {int v;while(n){项目七 参考答案 十一、 单项选择题1.B 2.B 3. C 4.C 5.C 6.B 7.C 8.D 9.A 10.C 二、填空题36.6037.ABCDCD 38.无结果 注意for语句最右边再加一个 “”号for(i 0;i;printf(%d\n,n));39.440.065041.1042.3, 5, 743.1844.645.18 注意原题需修改标红处void main(){ int a{{1,2},{3,4},{5,6}},i,j,s 0;for(i 1;i3;i)for(j 0;j3;j)s a;printf(%d\n,s);}46.EFGHIJKL 三、实训题 1. /*编写一个单科学生成绩处理程序*/ #define N 16 #include stdio.h void main() {int acount 0,bcount 0,ccount 0,dcount 0,ecount 0;int s 0; float ave;int score,i; printf(please input %d students score\n,N); for(i 0;iN;i){scanf(%d,score);s score;switch(score/10){ case 10:case 9: acount;break;case 8:bcount;break;case 7:ccount;break;case 6:dcount;break;default:ecount;}}ave (float)s/N;printf(ave %.2f\n,ave);printf(A grade is %d ,%.2f%%\n,acount,100*acount*1.0/N);printf(B grade is %d ,%.2f%%\n,bcount,100*bcount*1.0/N);printf(C grade is %d ,%.2f%%\n,ccount,100*ccount*1.0/N);printf(D grade is %d ,%.2f%%\n,dcount,100*dcount*1.0/N);printf(E grade is %d ,%.2f%%\n,ecount,100*ecount*1.0/N);} 说明成绩等级的划分可以参考课本项目四实训题。项目八 参考答案 十二、 单项选择题1.D 2.A 3. C 二、填空题47. 20048. #include “math.h” 三、实训题 1. (1) /*用宏定义编程实现输入三个整数按由小到大顺序输出。*/ #define swap(a, b) { t a; a b; b t; } #include stdio.h void main() {int a,b,c,t;printf(please input three int number: \n);scanf(%d%d%d,a,b,c);if(ab) swap(a,b);if(ac) swap(a,c);if(bc) swap(b,c);printf(%d%d%d\n,a,b,c); } 1.(2) /*利用函数实现从三个整数中找出最大数。*/ #include stdio.h int findmax(int a,int b) {int max;if(ab)max a;elsemax b;return max; } void main() {int a,b,c,max;printf(please input three int number:\n);scanf(%d%d%d,a,b,c); max findmax(findmax(a,b),c);printf(max %d\n,max); } 修改后 /*利用带参数的宏实现从三个整数中找出最大数。*/ #define FMAX(a,b) (a)(b)?(a):(b) #include stdio.h void main() {int a,b,c,max;printf(please input three int number:\n);scanf(%d%d%d,a,b,c); max FMAX(FMAX(a,b),c);printf(max %d\n,max); }项目九 参考答案 十三、 选择题 1.A 2.D 3.ACD BEH 4.AE BEDFGI 5.CG 6.D 7.A 8.C 9.C1 2 1 2 10.D 说明第7小题印刷有误最后两行正确格式 十四、 填
《C语言程序设计(第3版)》课后答案.pdf
发布时间:2026/5/21 18:46:02
说明所有答案均在VC6.0环境下调试运行通过项目一 参考答案 一、单项选择题1.C 2.D 3.C 4.C 5.A 6.C 二、填空题1. main2. .c3. 编译或汇编4. 录入并编辑5. 语法、逻辑 三、应用题 1. C语言的主要特点如下1C语言上一种模块化的程序设计语言。2C语言简洁结构紧凑使用方便灵活。3运算极其丰富数据处理能力强。4可移植性好。5可以直接调用系统功能实现对硬件的操作。 2. 高级语言高级语言要是相对于低级语言而言的它更类似人类的自然语言 基本脱离了机器的硬件系统用人们更易理解的方式编写程序。 低级语言低级语言是指机器语言和汇编语言低级语言是面向机器的语言 和具体机器的指令系统密切相关。 3. /* 编写一个简单的C语音程序完成如下功能即在屏幕上显示*/#include stdio.hvoid main(){printf(**************************\n);printf(M E N U\n);printf(**************************\n);} 4. 34 四、实训题2.(3) Sum is 792.(4) 3.0, 4.0, 5.0,The area is 6.02.(5) /* 编写一个程序求56和23的差 */void main(){int a 56,b 23,c;c a-b;printf(%d-%d %d\n,a,b,c);}2.(6) /*华氏温度与摄氏温度的转换*/void main(){float hua,she;printf(请输入华氏温度);scanf(%f,hua);she (hua-32)/1.8;printf(对应的摄氏温度为%f\n,she);}项目二 参考答案 三、单项选择题1.D 2.B 3.A 4.C 5.C 6.A 7.A 8.D 9.C 10.C 四、填空题6. 287. sinx*sinx*(ab)/(a-b)8. -19. 6.6 三、应用题 1. 答字符常量和字符串常量的区别从以下3方面比较1定界符不同字符常量使用单引号而字符串常量使用双引号。2长度不同3存储要求不同 2. (1) a 24 (2) a 10 (3) a 60 (4) a 0 (5) a 0 (6) a 0 3. 9,11,9,10 4. /*从键盘上输入2个int型数据比较其大小并输出其中较小的数*/ void main() {int x,y,min;printf(请输入两个整数:);scanf(%d %d,x,y);if(xy)min y;elsemin x;printf(较小的数是%d\n,min); } 5. /* 编程实现输入km数输出其英里数。*/ #include stdio.h void main() {float yingli,gongli;printf(请输入公里数);scanf(%f,gongli);yingli gongli/1.60934;printf(对应的英里数为%f\n,yingli); } 6. /*从键盘输入任意一个float型数据然后将该数保留两位小数输出*/ void main() {float f;printf(请键盘输入一个float型数据:);scanf(%f,f);printf(保留两位小数位:%.2f\n,f); } 7./*从键盘上输入任意一个小写字母然后将该字符转换为对应大写字母输出 并同时输出该字母的ASCII码值。*/ void main() {char ch;printf(请输入一个小写字母:);scanf(%c,ch);printf(对应的大写字母:%c, ASCII值为:%d\n,ch-32,ch); } 四、实训题2.(1)/*编程:利用sizeof()函数计算C语言各种数据类型在VC6.0开发 环境下所占用的存储空间大小。*/#include stdio.hvoid main(){int length;length sizeof(float);printf(VC6.0环境下float型数据的存储空间大小为%d\n,length);length sizeof(int);printf(VC6.0环境下int型数据的存储空间大小为%d\n,length);length sizeof(char);printf(VC6.0环境下char 型数据的存储空间大小为%d\n,length);}2.(2)/* 编程:利用函数sqrt 求从键盘输入的任意正整数的平方根。*/#include stdio.h#include math.hvoid main(){int n;double fg;printf(请输入一个正整数);scanf(%d,n);fg sqrt(n);printf(%d的平方根为%lf\n,n,fg);}2.(3) /*输入下列源代码改正其中存在的错误使其调试通过记录正 常运行结果。*/#include stdio.hvoid main(){int y,m,d;printf(请输入三个整数:);scanf(%d,%d,%d,y,m,d);printf(这三个整数是:%d,%d,%d\n,y,m,d);}项目三 参考答案 五、单项选择题1.D 2.A 3.①B②A4.A 5.C 6.C 7.D 六、填空题10.100,144,6411.65,101,41,A12.3.141593,3.1416,3.14213.31.42,3.14e001 (表示空格)14.c K15.a 1,b ,c 2 (表示空格)16.a 12b 34517.c A18.n 64 三、编程题 1. /*编写程序从键盘输入圆锥体的半径r和高度h计算其体积。*/ #include stdio.h void main() {float r,h,v;printf(请输入圆锥体的半径和高度);scanf(%f%f,r,h);v 3.1415*r*r/3;printf(v %f\n,v); } 2. /*编写程序输入一个字符输出其对应的ASCII码。*/ #include stdio.h void main() {char ch;printf(请输入一个字母);scanf(%c,ch);printf(ASCII码为%d\n,ch); } 3./*编写程序输入一个三位整数把三个数字逆序组成一个新数再输出。例如输入369 输出963。*/ #include stdio.h void main() {int n,g,s,b;printf(请输入一个三位整数);scanf(%d,n);b n/100; /*分离出百位*/s n0/10;g n0;n g*100s*10b;/*重新组合成新数字*/printf(新组合的数字为%d\n,n); }项目四 参考答案 七、选择题1.B 2.D 3.B 4.B 5.A 6.D 7.C 8.B 9.BEF 10. B 11.D 12.D13.A 八、填空题19.720. ||21.0.500000 三、编程题 1. /*编程计算下列分段函数值。*/ 注意此题书本上印刷出错正确的表达式应该如下2.5 ∗x x 1 y x −1 ≤ x ≤ 13 ∗x (x − 1) #include stdio.h void main() {double x,y;printf(请输入自变量x 的值);scanf(%lf,x);if(x1)y 2.5*x;else if(x -1 x 1)y x;elsey 3*x;printf(y %lf\n,y); } 2. /*编程将一个百分制转换成等级制成绩。*/ void main() { int score;printf(请输入一个百分制成绩);scanf(%d,score);if(score0 ||score100)printf(输入的成绩不合理重新输入\n);else{switch(score/10){case 10:case 9: printf(%d分 等级为A级\n,score);break;case 8: printf(%d分 等级为B级\n,score);break;case 7: printf(%d分 等级为C级\n,score);break;case 6: printf(%d分 等级为D级\n,score);break;default:printf(%d分 等级为E级\n,score);break;}} } 3. /*编程输入三边的长度并判断这三边能否构成三角形。*/ #include stdio.h void main() {float a,b,c;printf(请输入三条边长:);scanf(%f%f%f,a,b,c);if(abc acb bca)printf(%f,%f,%f三边可以构成三角形\n,a,b,c);elseprintf(%f,%f,%f三边无法构成三角形\n,a,b,c); }项目五 参考答案 九、单项选择题1.C 2.D 3. C 4.B 5.C 6.C 7.D 8.A 9.C 10.B 11.C 12. D13. D 14. B 15.B 16.B 17.B 18.C 19.D 二、填空题22.5023.b i124.4125.DEF26.sum 1627.i 100 j%3! 0 三、实训题 1./*输入两个正整数求其中最大公约数和最小公倍数。*/ /*利用辗转相除法求最大公约数两数乘积除以最大公约数即为最小公倍数*/ #include stdio.h void main() {int a,b,t,u,v,w,gys,gbs;printf(请输入两个正整数);scanf(%d%d,a,b);if(ab){t a;a b;b t;}u a;v b;do{ w u%v;u v;v w;}while(v! 0);gys u;gbs (a*b)/gys;printf(最大公约数 %d\n最小公倍数 %d\n,gys,gbs); } 2./*输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。 */ #include stdio.h void main() {char ch;int letters 0,space 0,digits 0,others 0; /*letters为字母个数,digits为数字个数,space为空格个数,others为其他 字符个数*/printf(please input a line characters:\n);ch getchar();while(ch! \n){if(ch a ch z ||ch A ch Z) letters;else if(ch 0 ch 9) digits;else if (ch ) space;else others;ch getchar();}printf(letters:%d\n,letters);printf(space:%d\n,space);printf(digits:%d\n,digits);printf(others:%d\n,others); } 修改后 /*输入一行字符分别统计出其中的大、小写字母、空格、数字和其他字符的个数。*/ #include stdio.h void main() {char ch;int uletters 0,lletters 0,space 0,digits 0,others 0;/*uletters为大写字母个数,lletters为小写字母个数digits为数字个 数,space为空格个数,others为其他字符个数*/printf(please input a line characters:\n);ch getchar();while(ch! \n){if(ch a ch z ) lletters;else if(ch A ch Z) uletters;else if(ch 0 ch 9) digits;else if (ch ) space;else others;ch getchar();}printf(uletters:%d\n,uletters);printf(lletters:%d\n,lletters);printf(space:%d\n,space);printf(digits:%d\n,digits);printf(others:%d\n,others); } 3. /*利用单循环结构123……10*/ #include stdio.h void main() {int i;long s 0,x 1;for(i 1;i 10;i){x x*i;s sx;}printf(s %ld\n,s); } /*利用双重循环结构123……10*/ #include stdio.h void main() {int i,j;long s 0,x 1;for(i 1;i 10;i){x 1;for(j 1;j i;j)x x*j;s sx;}printf(s %ld\n,s); }项目六 参考答案 十、单项选择题1.C 2.B 3. D 4.A 5.A 6.C 7.C 8.A 9.D 10.A 11.D 二、填空题28.x 2,y 3a 1,b 229.1830.2.80000031.16.00000032.733. 81012 (表示空格)34.n 100n 80n 6035.a 5a*a 25a*a*a 8 三、实训题 1. /*编写一个判素数的函数在主函数输入一个整数输出是否素数的信息。 */ int sushu(int n) {int i,t;for(i 2;in;i)if (n%i 0)break;if(in)t 0;elset 1;return t; } void main() { int n,t;printf(please input a int number:);scanf(%d,n);t sushu(n);if (t 1)printf(%d是素数\n,n);elseprintf(%d是非素数\n,n); }111 2. /*编写程序计算s1 */2!3!n! long fun(int n) {long p 1;int i;for(i 1;i n;i)p p*i;return p; } void main() {int n,i;double s 0;printf(please input a int number: );scanf(%d,n);for(i 1;i n;i)s s1.0/fun(i);printf(%.5lf\n,s); } 3. /*用递归法将一个整数转换成字符串。*/ void change(int n) {if (n/10! 0)change(n/10);printf(%c,n48); /*字符’0’的ASCII是48*/ } void main() {int n;printf(please input a int number: );scanf(%d,n);change(n);printf(\n); } 4. 1 不用全局变量 /*求两个整数的最大公约数和最小公倍数。用一个函数求最大公约数用另一函 数根据求出的最大公约数求最小公倍数。*/ #include stdio.h int findgys(int m,int n) /*求最大公约数*/ {int v;while(n){项目七 参考答案 十一、 单项选择题1.B 2.B 3. C 4.C 5.C 6.B 7.C 8.D 9.A 10.C 二、填空题36.6037.ABCDCD 38.无结果 注意for语句最右边再加一个 “”号for(i 0;i;printf(%d\n,n));39.440.065041.1042.3, 5, 743.1844.645.18 注意原题需修改标红处void main(){ int a{{1,2},{3,4},{5,6}},i,j,s 0;for(i 1;i3;i)for(j 0;j3;j)s a;printf(%d\n,s);}46.EFGHIJKL 三、实训题 1. /*编写一个单科学生成绩处理程序*/ #define N 16 #include stdio.h void main() {int acount 0,bcount 0,ccount 0,dcount 0,ecount 0;int s 0; float ave;int score,i; printf(please input %d students score\n,N); for(i 0;iN;i){scanf(%d,score);s score;switch(score/10){ case 10:case 9: acount;break;case 8:bcount;break;case 7:ccount;break;case 6:dcount;break;default:ecount;}}ave (float)s/N;printf(ave %.2f\n,ave);printf(A grade is %d ,%.2f%%\n,acount,100*acount*1.0/N);printf(B grade is %d ,%.2f%%\n,bcount,100*bcount*1.0/N);printf(C grade is %d ,%.2f%%\n,ccount,100*ccount*1.0/N);printf(D grade is %d ,%.2f%%\n,dcount,100*dcount*1.0/N);printf(E grade is %d ,%.2f%%\n,ecount,100*ecount*1.0/N);} 说明成绩等级的划分可以参考课本项目四实训题。项目八 参考答案 十二、 单项选择题1.D 2.A 3. C 二、填空题47. 20048. #include “math.h” 三、实训题 1. (1) /*用宏定义编程实现输入三个整数按由小到大顺序输出。*/ #define swap(a, b) { t a; a b; b t; } #include stdio.h void main() {int a,b,c,t;printf(please input three int number: \n);scanf(%d%d%d,a,b,c);if(ab) swap(a,b);if(ac) swap(a,c);if(bc) swap(b,c);printf(%d%d%d\n,a,b,c); } 1.(2) /*利用函数实现从三个整数中找出最大数。*/ #include stdio.h int findmax(int a,int b) {int max;if(ab)max a;elsemax b;return max; } void main() {int a,b,c,max;printf(please input three int number:\n);scanf(%d%d%d,a,b,c); max findmax(findmax(a,b),c);printf(max %d\n,max); } 修改后 /*利用带参数的宏实现从三个整数中找出最大数。*/ #define FMAX(a,b) (a)(b)?(a):(b) #include stdio.h void main() {int a,b,c,max;printf(please input three int number:\n);scanf(%d%d%d,a,b,c); max FMAX(FMAX(a,b),c);printf(max %d\n,max); }项目九 参考答案 十三、 选择题 1.A 2.D 3.ACD BEH 4.AE BEDFGI 5.CG 6.D 7.A 8.C 9.C1 2 1 2 10.D 说明第7小题印刷有误最后两行正确格式 十四、 填