C语言程序设计习题集及答案
电子信息工程学院 2014.9.1
内容简介
本习题集是为根据嘉应学院电子信息工程学院《C语言程序设计》课程教学大纲筛
选题目整理而成的。
本习题集共分10章,提供了361道选择题,85道填空题,42道编程题,题集覆盖了《C语言程序设计》的全部内容,满足嘉应学院电子信息工程学院《C语言程序设计》考试大纲的要求。
寄语
亲爱的同学们:
很高兴你们学习计算机的语言—C语言,她将带你进入一个全新的计算机的世界。我是你们的老师,但我更希望是你们的朋友,为你在学习C语言的道路上提供帮助。
同学们,“攻城不怕坚,攻书莫畏难。科学有险阻,苦战能过关。”,学习是辛苦的,但也充满了挑战和乐趣。我希望你们在学习C语言时,带着希望出发,体会一路的艰辛,最后满载收获而回。
朋友们,学习向来没有什么捷径可寻。“多看、多模仿、多操作”是我能给你们的唯一建议。祝你们学业有成。
杨久红 2014.9.1
I
目录
第一部分 习 题
第1章 C语言概述 ....................................................................................................................................... 1
1.1选择题 ............................................................................................................................................... 1 1.2填空题 ............................................................................................................................................... 2 1.3编程题 ............................................................................................................................................... 2 第2章 数据的存储与运算 ........................................................................................................................... 3
2.1选择题 ............................................................................................................................................... 3 2.2填空题 ............................................................................................................................................... 6 2.3编程题 ............................................................................................................................................... 7 第3章 最简单的程序设计-顺序程序设计 .................................................................................................. 8
3.1选择题 ............................................................................................................................................... 8 3.2填空题 ............................................................................................................................................. 13 3.3编程题 ............................................................................................................................................. 14 第4章 选择结构程序设计 ......................................................................................................................... 15
4.1选择题 ............................................................................................................................................. 15 4.2填空题 ............................................................................................................................................. 19 4.3编程题 ............................................................................................................................................. 20 第5章循环结构程序设计 ........................................................................................................................... 21
5.1选择题 ............................................................................................................................................. 21 5.2填空题 ............................................................................................................................................. 29 5.3编程题 ............................................................................................................................................. 30 第6章 利用数组处理批量数据 ................................................................................................................. 32
6.1选择题 ............................................................................................................................................. 32 6.2填空题 ............................................................................................................................................. 37 6.3编程题 ............................................................................................................................................. 38 第7章 用函数实现模块化程序设计 ......................................................................................................... 40
7.1选择题 ............................................................................................................................................. 40 7.2填空题 ............................................................................................................................................. 52 7.3编程题 ............................................................................................................................................. 57 第8章 善于使用指针 ................................................................................................................................. 58
8.1选择题 ............................................................................................................................................. 58
II
8.2填空题 ............................................................................................................................................. 70 8.3编程题 ............................................................................................................................................. 71 第9章 结构体 ........................................................................................................................................... 72
9.1选择题 ............................................................................................................................................. 72 9.2填空题 ............................................................................................................................................. 73 9.3编程题 ............................................................................................................................................. 74 第10章 利用文件保存数据 ....................................................................................................................... 75
10.1选择题 ........................................................................................................................................... 75 10.2填空题 ........................................................................................................................................... 77 10.3编程题 ........................................................................................................................................... 79
第二部分 参考答案
第1章C语言概述 ...................................................................................................................................... 81
1.1选择题 ............................................................................................................................................. 81 1.2填空题 ............................................................................................................................................. 81 1.3编程题 ............................................................................................................................................. 81 第2章 数据的存储与运算 ......................................................................................................................... 81
2.1选择题 ............................................................................................................................................. 81 2.2填空题 ............................................................................................................................................. 82 2.3编程题 ............................................................................................................................................. 82 第3章 最简单的程序设计-顺序程序设计 ................................................................................................ 83
3.1选择题 ............................................................................................................................................. 83 3.2填空题 ............................................................................................................................................. 83 3.3编程题 ............................................................................................................................................. 83 第4章 选择结构程序设计 ......................................................................................................................... 84
4.1选择题 ............................................................................................................................................. 84 4.2填空题 ............................................................................................................................................. 85 4.3编程题 ............................................................................................................................................. 85 第5章循环结构程序设计 ........................................................................................................................... 87
5.1选择题 ............................................................................................................................................. 88 5.2填空题 ............................................................................................................................................. 88 5.3编程题 ............................................................................................................................................. 88 第6章 利用数组处理批量数据 ................................................................................................................. 95
6.1选择题 ............................................................................................................................................. 95 6.2填空题 ............................................................................................................................................. 95 6.3编程题 ............................................................................................................................................. 95
III
第7章 用函数实现模块化程序设计 ....................................................................................................... 100
7.1选择题 ........................................................................................................................................... 100 7.2填空题 ........................................................................................................................................... 100 7.3编程题 ........................................................................................................................................... 100 第8章 善于使用指针 ............................................................................................................................... 104
8.1选择题 ........................................................................................................................................... 104 8.2填空题 ........................................................................................................................................... 104 8.3编程题 ........................................................................................................................................... 104 第9章 结构体 ......................................................................................................................................... 106
9.1选择题 ........................................................................................................................................... 106 9.2填空题 ........................................................................................................................................... 106 9.3编程题 ........................................................................................................................................... 106 第10章 利用文件保存数据 ..................................................................................................................... 107
10.1选择题 ......................................................................................................................................... 107 10.2填空题 ......................................................................................................................................... 107 10.3编程题 ......................................................................................................................................... 107
IV
第一部分 习 题 第1章 C语言概述
1.1选择题
1. 以下说法中正确的是( )。
(A)C语言程序总是从第一个定义的函数开始执行
(B)在C语言程序中,要调用的函数必须在main()函数中定义 (C)C语言程序总是从main()函数开始执行
(D)C语言程序中的main()函数必须放在程序的开始部分 2. 以下叙述中正确的是( )。
(A)C语言比其他语言高级
(B)C语言可以不用编译就能被计算机识别执行
(C)C语言以接近英语国家的自然语言和数学语言作为语言的表达形式 (D)C语言出现的最晚,具有其他语言的一切优点 3. 在一个C程序中( )。
(A)main函数必须出现在所有函数之前 (B)main函数可以在任何地方出现 (C)main函数必须出现在所有函数之后 (D)main函数必须出现在固定位置 4. 以下叙述中正确的是( )。
(A)C程序中注释部分可以出现在程序中任意合适的地方 (B)花括号\"{\"和\只能作为函数体的定界符
(C)构成C程序的基本单位是函数,所有函数名都可以由用户命名 (D)分号是C语句之间的分隔符,不是语句的一部分 5. 用C语言编写的代码程序( )。
(A)可立即执行 (B)是一个源程序
(C)经过编译即可执行 (D)经过编译解释即可执行 6. 以下叙述中错误的是( )。
(A)C语言源程序经编译后生成后缀为.obj的目标程序
(B)C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件(C)用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中 (D)C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令 7. 以下叙述中正确的是( )。
(A)C语言程序将从源程序中第一个函数开始执行
(B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行 (C)C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束 (D)main可作为用户标识符,用以命名任意一个函数作为主函数
1
1.2填空题
1.C语言源程序文件的后缀是 。
2.一个C语言源程序由若干函数组成,其中至少应含有一个 。
1.3编程题
编写一个C程序,输出以下信息: ******************************
Very good!
******************************
2
第2章 数据的存储与运算
2.1选择题
1. C语言提供的合法的数据类型关键字是( )。
(A)Double (B)short (C)integer (D)Char 2. 若有说明和语句:
int a=5; a++;
此处表达式a++的值是( )。 (A)7 (B)6 (C)5 (D)4 3. C89语言中最简单的数据类型包括( )。
(A)整型、实型、逻辑型 (B)整型、实型、字符型 (C)整型、字符型、逻辑型 (D)整型、实型、逻辑型、字符型
4. 在C语言中,要求运算数必须是整型的运算符是( )。
(A) %
(B) /
(C) <
(D) !
5. 以下有4个用户标识符,其中合法的一个是 ( )。
(A) for (B) 4d (C) f2_G3 (D) short 6. 下面程序的输出是( )。
main()
{ int x=10,y=3;
printf(\"%d\\n\(A) 0
(B) 1
(C) 3
(D) 不确定的值
7. C语言提供的合法的关键字是( )。
(A)Switch (B)cher (C)Case (D)default 8. 在C语言中,合法的字符常量是( )。
(A)'\\084' (B)'\\x43' (C)'ab' (D)\"\\0\"
9. 若已定义x和y为double类型,且x=1,则表达式:y=x+3/2的值是( (A)1 (B)2 (C)2.0 (D)2.5 10. 下列不正确的转义字符是( )。
(A)'\\\\' (B)'\\\" (C)'074' (D)'\\0'
11. 若有以下定义:
char a; int b; float c; double d;
则表达式a*b+d-c值的类型为( )。 (A) float (B) int (C) char (D) double 12. 以下程序的输出结果是( )。
main()
{ int a=12,b=12;
printf(\"%d,%d\\n\
)。3
}
(A) 10 10 (B) 12 12 (C) 11 10 (D) 11 13 13. 以下选项中属于C89语言的数据类型是( )。
(A) 复数型 (B) 逻辑型 (C) 双精度型 (D) 集合型 14. 设有 int x=11; 则表达式 (x++ * 1/3) 的值是( )。
(A) 3
(B) 4 (B) /
(C) 11 (C) =
(D) 12 (D) 〈=
(D) 说明不合法
15. C语言中运算对象必须是整型的运算符是( )。
(A) %=
16. 设有说明语句:char a=’\\72’;则变量a中( )。
(A) 包含1个字符 (B) 包含2个字符 (C) 包含3个字符 17. 下列选项中,合法的C语言关键字是( )。
(A) VAR
(B) cher
(C) integer (D) default
18. 以下选项中,非法的字符常量是( )。
(A) '\' (B) '\\17' (C)\"n\" (D) '\\xaa'
19. 若变量a是int类型,并执行了语句:a=‘A'+1.6;,则正确的叙述是( )。
(A) a的值是字符C (B) a的值是浮点型
(C) 不允许字符型和浮点型相加 (D) a的值是字符‘A’的ASCII值加上1。 20. 以下选项中不属于C语言的类型的是( )。
(A) signed short int (B) unsigned long int
(C) unsigned int (D) long short 21. 以下选项中合法的用户标识符是( )。
(A) long
(B) _2Test (C) 3Dmax
(D) A.dat
22. 已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常
量‘\\101’是( )。
(A) 字符A (B)字符a (C)字符e (D)非法的常量 23. 下列叙述中正确的是( )。
(A)C语言中既有逻辑类型也有集合类型 (B)C语言中没有逻辑类型但有集合类型 (C)C语言中有逻辑类型但没有集合类型 (D)C语言中既没有逻辑类型也没有集合类型 24. 下列关于C语言用户标识符的叙述中正确的是( )
(A)用户标识符中可以出现在下划线和中划线(减号) (B)用户标识符中不可以出现中划线,但可以出现下划线
(C)用户标识符中可以出现下划线,但不可以放在用户标识符的开头
(D)用户标识符中可以出现在下划线和数字,它们都可以放在用户标识符的开头 25. 有以下程序
main()
{ int i=10,j=1;
printf(\"%d,%d\\n\}
执行后输出结果是( )。 (A) 9,2 (B) 10,2 (C) 9,1 (D) 10,1
4
26. 以下选项中可作为C语言合法整数的是( )。
(A)10110B (B)0386
(C)0xffa
(D)x2a2 27. 以下不能定义为用户标识符的是( )。
(A)scan
(B)num
(C)_3com_
(D)int
28. 已定义ch为字符型变量,以下赋值语句中错误的是( )。
(A)ch='\\'; (B)ch=62+3; (C)ch=80; (D)ch='\\xaa';
29. 已定义c为字符型变量,则下列语句中正确的是( )。
(A)c='97';
(B)c=\"97\";
(C)c=97;
(D)c=\"a\";
30. 以下符合C语言语法的实型常量( )。
(A) 1.2E0.5 (B) 3.14.159E (C) .5E-3 (D) E15
31. 设有定义:float a=2,b=4,h=3;,以下C语言表达式与代数式计算结果不相符的是( (A) (a+b) *h/2 (B) (1/2)*(a+b) *h (C) (a+b) *h*1/2 (D) h/2*(a+b) 32. 下列选项中,不能用作标识符的是( )。
(A)_1234_ (B)_1_2 (C)int_2_ (D)2_int_ 33. 有以下程序
main()
{ int m=3,n=4,x; x=-m++; x=x+8/++n;
printf(\"%d\\n\}
程序运行后的输出结果是( )。 (A)3 (B)5 (C)-1 (D)-2 34. 有以下程序
main()
{ char a='a',b; printf(\"%c,\printf(\"%c\\n\}
程序运行后的输出结果是( )。
(A)b,b (B)b,c (C)a,b (D)a,c
35. 以下选项中可作为C语言合法常量的是( )。
(A)-80. (B) e1 (C)-8e1.0 (D)-80.0e 36. 以下不能定义为用户标识符的是( )。 (A)Main (B)_0
(C)_int (D)sizeof
37. 数字字符0的ASCII值为48,若有以下程序
main()
{ char a='1',b='2 '; printf(\"%c,\printf(\"%d\\n\}
程序运行后的输出结果是( )。 (A) 3,2 (B)50,2
(C)2,2
(D)2,50
) 。
5
38. 有以下程序
main()
{ int m=12,n=34;
printf(\"%d%d\printf(\"%d%d\\n\}
程序运行后的输出结果是( )。
(A)12353514 (B)12353513 (C)12343514 (D)12343513 39. 以下叙述中错误的是( )。
(A)用户所定义的标识符允许使用关键字 (B)用户所定义的标识符应尽量做到“见名知意” (C)用户所定义的标识符必须以字母或下划线开头 (D)用户定义的标识符中,大、小写字母代表不同标识 40. 以下不能正确计算代数式值的C语言表达式是( )。
(A)1/3*sin(1/2)*sin(1/2) (C)pow(sin(0.5),2)/3
(B)sin(0.5)*sin(0.5)/3
(D)1/3.0*pow(sin(1.0/2),2)
41. 以下能正确定义且赋初值的语句是( )。
(A)int n1=n2=10; (B)char c=32; (C)float f=f+1.1; (D)double x=12.3E2.5; 42. 以下不合法的用户标识符是( )。
(A)j2_KEY (B)Double (C)4d (D)_8_ 43. 以下不合法的字符常量是( )。
(A)′\\018′(B)′\\\"′ (C)′\\\\′ (A)4.3
(B)4.8
(D)′\\xcc′ (C)3.3
(D)3.8
44. 表达式3.6-5/2+1.2+5%2的值是( )。
45. 不可在C程序中用做用户标识符的标识符是( )。
(A)and (B)Date (C)Hi (D)case
46. 以下选项中,不合法的C语言数值常量是( )。
(A)028 (B)12. (C).177 (D)0x8A
47. 以下关于long、int和short类型数据占用内存大小的叙述中正确的是( )。
(A)均占4个字节 (B)根据数据的大小来决定所占内存的字节数 (C)由用户自己定义 (D)由C语言编译系统决定
48. 已知字符’A’的ASCII代码值是65,字符变量c1的值是’A’,c2的值是’D’。执行语句
printf(\"%d,%d\后,输出结果是()。 (A)A,B (B)A,68 (C)65,66 (D)65,68 49. 以下正确的字符串常量是( )。
(A)\"\\\\\\\" (B)’abc’ (C)OlympicGames (D)\"\"
2.2填空题
1. 23/4= 。
2. 下程序运行后的输出结果是 。
main()
6
{ char m;
m='B'+32; printf(\"%c\\n\}
3. 设x和y均为int型变量,且x=1,y=2,则表达式1.0+x/y的值为_ __。 4. 以下程序的输出结果是 。 main()
{ int a=1, b=2;
a=a+b; b=a-b; a=a-b; printf(\"%d,%d\\n\ }
5. 若有语句
int i=-19,j=i%4; printf(\"%d\\n\
则输出结果是 。
6. 已知字符A的ACSII码值为65,以下语句的输出结果是 。
char ch=’B’;
printf(“%c %d\\n”,ch,ch);
7. 设x、y均为整型变量,且x=10,y=3,则以下语句的输出结果是 。
printf(\"%d,%d\\n\
2.3编程题
1.假如我国国民生产总值的年增长率为10%,计算10年后我国国民生产总值与现在相比增长多少百分比?计算公式为:
其中r为年增长率;n为年数;P为与现在相比的百分比。
2. 在一个笼子里同时养着一些鸡和兔子,你想了解有多少只鸡和多少只兔,主人对你说:我只告诉你鸡和兔的总头数是16和总脚数是40,你能不能自己计算有多少只鸡和多少只兔?
7
第3章 最简单的程序设计-顺序程序设计
3.1选择题
1. 在下列选项中,不正确的赋值语句是( )。
(A)++t; (B)n1=(n2=(n3=0)); (C)k=i==j; (D)a=b+c=1; 2. 以下叙述中正确的是( )。
(A)用C程序实现的算法必须要有输入和输出操作 (B)用C程序实现的算法可以没有输出但必须要输入 (C)用C程序实现的算法可以没有输入但必须要有输出 (D)用C程序实现的算法可以既没有输入也没有输出
3. 若变量已正确定义并赋值,下面符合C语言语法的表达式是( )。
(A) a:=b+1 (B) a=b=c+2 (C) int 18.5%3 (D) a=a+7=c+b
4. 若变量a、i已正确定义,且i已正确赋值,合法的语句是( )。
(A) a==1
(B) ++i; (C) a=a++=5; (D) a=int(i);
5. 设a和b均为double型变量,且a=5.5,b=2.5,则表达式(int)a+b/b的值是((A)6.500000 (B)6 (C) 5.500000 (D) 6.000000
6. C语言中用于结构化程序设计的三种基本结构是 ( )。
(A)顺序结构、选择结构、循环结构 (B)if、switch、break (C)for、while、do-while (D)if、for、continue 7. 以下选项中非法的表达式是( )。
(A)0<=x<100 (B)i=j==0
(C)(char)(65+3) (D)x+1=x+1
8. 有以下定义语句
double a,b; int w; long c;
若各变量已正确赋值,则下列选项中正确的表达式是( )。 (A)a=a+b=b++ (B)w%((int)a+b) (C)(c+w)%(int)a (D)w=a==b;
9. 以下选项中,与k=n++完全等价的表达式是( )。
(A) k=n,n=n+1 (B) n=n+1,k=n (C) k=++n (D) k+=n+1 10. 以下叙述中错误的是( )。
(A)C语句必须以分号结束
(B)复合语句在语法上被看作一条语句 (C)空语句出现在任何位置都不会影响程序运行 (D)赋值表达式末尾加分号就构成赋值语句 11. 以下叙述中错误的是( )。
(A)算法正确的程序最终一定会结束 (B)算法正确的程序可以有零个输出 (C)算法正确的程序可以有零个输入
(D)算法正确的程序对于相同的输入一定有相同的结果 12. 设有如下的变量定义:
。 8
)int i=8, k, a, b;
unsigned long w=5; double x=1. 42, y=5.2;
则以下符合C语言语法的表达式是( )。 (A) a+=a-=(b=4)*(a=3) (B) x%(-3); (C) a=a*3=2 (D) y=float(i)
13. 以下程序的输出结果是 ( )。
main( )
{ int i=010,j=10,k=0x10; printf(\"%d,%d,%d\\n\ }
(A)8,10,16 (B)8,10,10 (C)10,10,10 (D)10,10,16
14. 已知字母A的ASCII码为十进制的65,下面程序的输出是( )。
main()
{ char ch1,ch2; ch1='A'+'5'-'3'; ch2='A'+'6'-'3';
printf(\"%d,%c\\n\
(A) 67,D (B) B,C (C) C,D (D) 不确定的值 15. 若有以下定义和语句:
int u=010,v=0x10,w=10; printf(\"%d,%d,%d\\n,u,v,w); 则输出结果是( ) 。
(A)8,16,10 (B)10,10,10 (C)010,16,10 (D)16,16,16 16. 若有以下定义和语句
char c1='b',c2='e';
printf(\"%d,%c\\n\则输出结果是( )。 (A)2,M (B)3,E
(C)2,E (D)输出项与对应的格式控制不一致,输出结果不确定 17. 下列可作为C语言赋值语句的是( )。
(A) x=3
(B) a=b=6
(C) i--; (D) y=int(x);
18. 设i是int型变量,f是float型变量,用下面的语句给这两个变量输入值:
scanf(\"i=%d,f=%f\
为了把100和765.12分别赋给i和f,则正确的输入为( )。 (A) 100 765.12 (B) i=100,f=765.12
(C) 100765.12 (D) x=100y=765.12
19. 以下叙述中正确的是( )。
(A) 输入项可以是一个实型常量,如:scanf(\"%f\
(B) 只有格式控制,没有输入项,也能正确输入数据到内存,例如:scanf(\"a=%d,b=%d\"); (C) 当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如:scanf(\"%4.2f\(D) 当输入数据时,必须指明变量地址,例如:scanf(\"%f\20. 以下程序的输出结果是( )。
main( )
9
{ int k=17;
printf(\"%d,%o,%x \\n\",k,k,k); }
(A) 17,021,0x11 (B) 17,0x11,021
(B) 17,17,17 (D) 17,21,11
21. 下列程序的输出结果是 ( )。
main()
{ double d=3.2; int x,y; x=1.2; y=(x+3.8)/5.0; printf(\"%d \\n\ } (A) 3 (B) 3.2 (C) 0 22. 下列程序执行后的输出结果是 ( )。
main()
{ int x='f'; printf(\"%c \\n\(A) G (B) H (C) I 23. 下列程序的运行结果是( ) 。
#include { int a=2,c=5; printf(\"a=%d,b=%d\\n\(A) a=%2,b=%5 (B) a=2,b=5 (C) a=d, b=d (D) a=%d,b=%d 24. x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是 ( )。 (A) input x、y、z; 25. 若有以下程序段, int c1=1,c2=2,c3; c3=1.0/c2*c1; 则执行后,c3中的值是( )。 (A) 0 (B) 0.5 (C) 1 (D) 2 26. 若有定义:int a=8,b=5,c;,执行语句c=a/b+0.4;后,c的值为( )。 (A) 1.4 (B) 1 (C) 2.0 (D) 2 27. 以下程序段的输出结果是( )。 int a=1234; printf(\"%2d\\n\ (A) 12 (B) 34 (C) 1234 (D) 提示出错、无结果 28. 以下非法的赋值语句是( )。 (A) n=(i=2,++i); (B)j++; (C) ++(i+1); (D)x=j>0; 29. 已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1,j的值为2,k的值 为3,以下选项中正确的输入语句是( )。 (A) scanf(“%2d%2d%2d”,&i,&j,&k); (B) scanf(“%d %d %d”,&i,&j,&k); (C) scanf(“%d,%d,%d”,&i,&j,&k); (D) scanf(“i=%d,j=%d,k=%d”,&i,&j,&k); 10 (D) 3.07 (D) J (B) scanf(\"%d%d%d\ (C) scanf(\"%d%d%d\ (D) read(\"%d%d%d\ 30. 设有定义:long x=-123456L;,则以下能够正确输出变量x值的语句是( )。 (A)printf(“x=%d\\n”,x); (B) printf(“x=%1d\\n”,x); (C)printf(“x=%8dL\\n”,x); (D)printf(“x=%LD\\n”,x); 31. 若有以下程序: main() { int k=2,i=2,m; m=(k+=i*=k);printf(“%d,%d\\n”,m,i); } 执行后的输出结果是( )。 (A) 8,6 (B) 8,3 (C) 6,4 (D) 7,4 32. 若有以下程序段 int m=0xabc,n=0xabc; m-=n; printf(\"%x\\n\ 执行后输出结果是( )。 (A) 0X0 (B) 0x0 (C) 0 (D) 0XABC 33. 有以下程序段 int m=0,n=0; char c='a'; scanf(\"%d%c%d\ printf(\"%d,%c,%d\\n\ 若从键盘上输入:10A10<回车>,则输出结果是( )。 (A) 10,A,10 (B) 10,a,10 (C) 10,a,0 (D) 10,A,0 34. 有以下程序 main() { int a; char c=10; float f=100.0; double x; a=f/=c*=(x=6.5); printf(\"%d %d %3.1f %3.1f\\n\} 程序运行后的输出结果是( )。 (A)1 65 1 6.5 (B)1 65 1.5 6.5 (C)1 65 1.0 6.5 (D)2 65 1.5 6.5 35. 有定义语句:int x, y;,若要通过scanf(\"%d,%d\语句使变量x得到数值11,变量y得到 数值12,下面四组输入形式中,错误的是( )。 (A)11 12<回车> (B)11, 12<回车>(C)11,12<回车> (D)11,<回车>12<回车> 36. 设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位 四舍五入的是( )。 (A)x=x*100+0.5/100.0; (B)x=(x*100+0.5)/100.0; (C)x=(int)(x*100+0.5)/100.0; (D)x=(x/100+0.5)*100.0; 37. 若以下选项中的变量已正确定义,则正确的赋值语句是 ( )。 (A) x1=26.8%3 (B) 1+2=x2 (C) x3=0x12 (D) x4=1+2=3; 38. 有以下程序 main( ) { int x=102,y=012; 11 printf(“%2d,%2d\\n”,x,y); } 执行后输出结果是 ( ) 。 (A) 10,01 (B) 02,12 (C) 102,10 (D) 02,10 39. 以下4个选项中,不能看作一条语句的是 ( )。 (A) {;} (B) a=0,b=0,c=0; (C) if(a>0); (D) if(b==0) m=1;n=2; 40. 有以下程序 main() { int m=0256,n=256; printf(\"%o %o\\n\} 程序运行后的输出结果是( )。 (A)0256 0400 (B)0256 256 (C)256 400 (D)400 400 41. 有以下程序 main() { int a=666,b=888; printf(\"%d\\n\} 程序运行后的输出结果是( )。 (A)错误信息 (B)666 (C)888 (D)666,888 42. 有以下程序 main() { char a,b,c,d; scanf(\"%c,%c,%d,%d\printf(\"%c,%c,%c,%c\\n\} 若运行时从键盘上输入:6,5,65,66<回车>。则输出结果是( )。 (A)6,5,A,B (B)6,5,65,66 (C)6,5,6,5 (D)6,5,6,6 43. 以下叙述中正确的是( )。 (A)调用printf函数时,必须要有输出项 (B)使用putchar函数时,必须在之前包含头文件stdio.h (C)在C语言中,整数可以以二进制、八进制或十六进制的形式输出 (D)调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码 44. 以下程序的功能是:给r输入数据后计算半径为r的圆面积s。程序在编译时出错。main() { int r; float s; scanf(\"%d\ s=pi*r*r; printf(\"s=%f\\n\} 出错的原因是( )。 (A)注释语句书写位置错误 (B)存放圆半径的变量r不应该定义为整型 (C)输出语句中格式描述符非法 (D)计算圆面积的赋值语句中使用了非法变量 45. 有以下程序 12 #include { char c1='1',c2='2'; c1=getchar(); c2=getchar(); putchar(c1); putchar(c2); } 当运行时输入:a<回车> 后,以下叙述正确的是( )。 (A)变量c1被赋予字符a,c2被赋予回车符 (B)程序将等待用户输入第2个字符 (C)变量c1被赋予字符a,c2中仍是原有字符2 (D)变量c1被赋予字符a,c2中将无确定值 46. 若变量均已正确定义并赋值,以下合法的C语言赋值语句是( )。 (A)x=y==5; (B)x=n%2.5; (C)x+n=1; (D)x=5=4+1; 47. 程序运行后的输出结果是( )。 #include printf(\"a=%d,b=%d\\n\} (A)a=3,b=3 (B)a=20,b=20 (C)a=20,b=3 (D) a=3,b=20 3.2填空题 1. 若变量a,b已定义为int类型并赋值21和55,要求用printf函数以a=21,b=55的形式输出, 请写出完整的的输出语句 。 2. 一个良好的程序,无论多么复杂,都可以由三种基本结构组成,分别是 、 和 ,用这三种基本结构构成的程序称为“结构化程序”。 3. 执行以下程序时输入1234567,则输出结果是_ _____。 main() { int a=1,b; scanf(\"%2d%2d\,&b); printf(\"%d %d\\n\} 4. 若有程序 main() { int i,j; scanf(\"i=%d,j=%d\";&i,&j); printf(\"i=%d,j=%d\\n\} 要求给i赋10,给j赋20,则应该从键盘输入 。 13 5. 有以下语句段 int n1=10,n2=20; printf(“ ”,n1,n2); 要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。 n1=10 n2=20 6. 以下程序段的输出结果是 __ ___ 。 int i=9; printf(\"%o\\n\ 7. 已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>,则输出结果 是 。 #include a=getchar();scanf(\"%d\a=a-'A'+'0';b=b*2; printf(\"%c %c\\n\} 8. 已知字母A的ASCII码为65。以下程序运行后的输出结果是 。 main() { char a, b; a='A'+'5'-'3'; b=a+'6'-'2' printf(\"%d %c\\n\ 3.3编程题 1. 设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。请编程序。 2. 输入一个华氏温度,要求输出一个摄氏温度。公式为: 3. 输入三角形的三边长,求三角形面积。 为简单起见,设输入的三边长a、b、c能构成三角形。从数学知识已知求三角形面积的公式为 其中s=(a+b+c)/2 4. 输入一个小写字母,将其转换为大写字母。 14 第4章 选择结构程序设计 4.1选择题 1. 表达式:10!=9的值是( )。 (A)true (B)非零值 (C)0 (D)1 2. 能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是( )。(A) a>=10 or a<=0 (B) a>=0|a<=10 (C) a>=10 &&a<=0 (D) a>=10‖a<=0 3. 有以下程序 main() { int a,b,c=246; a=c/100%9; b=(-1)&&(-1); printf(\"%d,%d\\n\} 输出结果是( )。 (A) 2,1 (B) 3,2 (C) 4,3 (D) 2,-1 4. 若变量c为char类型,能正确判断出c为小写字母的表达式是((A) 'a'<=c<= 'z' (B) (c>= 'a')||(c<= 'z') (C) ('a'<=c)and ('z'>=c) (D) (c>= 'a')&&(c<= 'z') 5. 下面程序的输出是( )。 main() { int a=-1,b=4,k; k=(a++<=0)&&(!(b--<=0)); printf(\"%d %d %d%\\n\(A) 0 0 3 (B) 0 1 2 (C) 1 0 3 (D) 1 1 2 6. 有如下程序段 int a=14,b=15,x; char c=’A’; x=(a&&b)&&(c<’B’); 执行该程序段后,x的值为( )。 (A) true (B) false (C) 0 (D) 1 7. 表示数学上的关系x<=y<=z的C语言表达式为( )。 (A) (x<=y)&&(y<=z) (B) (x<=y)AND(y<=z) (C) (x<=y<=z) (D) (x<=y)&(y<=z) 8. 设x,y,z,t均为int型变量,则执行以下语句后,t的值为( )。 x=y=z=1; t=++x||++y&&++z; (A) 不定值 (B) 2 (C) 1 (D) 0 9. 阅读以下程序: )。15 main() { int x; scanf(\"%d\ if(x--<5) printf(\"%d\",x); else printf(\"%d\ } 程序运行后,如果从键盘上输入5,则输出结果是 ( )。 (A)3 (B) 4 (C) 5 (D) 6 10. 以下程序输出结果是( )。 main() { int m=5; if(m++>5) printf(\"%d\\n\else printf(\"%d\\n\} (A) 7 (B) 6 (C) 5 (D) 4 11. 语句:printf(\"%d\",(a=2)&&(b= -2);的输出结果是( )。 (A) 无输出 (B) 结果不确定 (C) -1 (D) 1 12. 能正确表示a和b同时为正或同时为负的逻辑表达式是( )。 (A) (a>=0‖b>=0)&&(a<0‖b<0) (B) (a>=0&&b>=0)&&(a<0&&b<0) (C) (a+b>0)&&(a+b<=0) (D) a*b>0 13. 设 int x=1, y=1; 表达式(!x||y--)的值是( )。 (A) 0 (B) 1 (C) 2 (D) -1 14. 有如下程序,该程序的输出结果是( )。 main( ) { int x=1,a=0,b=0; switch(x){ case 0: b++; case 1: a++; case 2: a++;b++; } printf(“a=%d,b=%d\\n”,a,b); } (A) a=2,b=1 (B) a=1,b=1 (C) a=1,b=0 (D) a=2,b=2 15. 有如下程序 main( ) { float x=2.0,y; if(x<0.0) y=0.0; else if(x<10.0) y=1.0/x; else y=1.0; printf(“%f\\n”,y); } 该程序的输出结果是( )。 (A) 0.000000 (B) 0.250000 (C) 0.500000 (D) 1.000000 16. 有如下程序 16 main() { int a=2,b=-1,c=2; if(a)c=2; else if(b<0) c=0; else c++; printf(“%d\\n”,c); } 该程序的输出结果是( )。 (A) 0 (B) 1 (C) 2 (D) 3 17. 若执行以下程序时从键盘上输入9,则输出结果是( )。 main() { int n; scanf(\"%d\ if(n++<10) printf(\"%d\\n\else printf(\"%d\\n\} (A) 11 (B) 10 (C) 9 (D) 8 18. 以下程序的输出结果是( )。 main() { int a=4,b=5,c=0,d; d=!a&&!b||!c; printf(\"%d\\n\} (A) 1 (B) 0 (C) 非0的数 (D) -1 19. 已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1&&y+z/2的值是((A) 6 (B) 0 (C) 2 (D) 1 20. 有以下程序 main() { int a=15,b=21,m=0; switch(a%3) { case 0:m++;break; case 1:m++; switch(b%2) { default:m++; case 0:m++;break; } } printf(“%d\\n”,m);} 程序运行后的输出结果是( )。 (A) 1 (B) 2 (C) 3 (D) 4 21. 有以下程序 main() { int a=5,b=4,c=3,d=2; if(a>b>c) printf(\"%d\\n\ 。17 ) else if((c-1>=d)==1) printf(\"%d\\n\ else printf(\"%d\\n\ 执行后输出结果是( ) 。 (A) 2 (B) 3 (C) 4 (D) 编译时有错,无结果 22. 若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是()。 (A)abs(x-y)<10 (B)x-y>-10&& x-y<10 (C) !(x-y)<-10||!(y-x)>10 (D)(x-y)*(x-y)<100 23. 有以下程序 main() { int a=3,b=4,c=5,d=2; if(a>b) if(b>c) printf(\"%d\else printf(\"%d\printf(\"%d\\n\} 程序运行后的输出结果是( )。 (A)2 (B)3 (C)43 (D)44 24. 有以下程序 main() { int a,b,d=25; a=d/10%9; b=a&&(-1); printf(\"%d,%d\\n\} 程序运行后的输出结果是( )。 (A)6,1 (B)2,1 (C)6,0 (D)2,0 25. 当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个 选项是( )。 (A)k%2 (B)k%2==1 (C)(k%2)!=0 (D)!(k%2)==1 26. 设有定义:int a=2,b=3,c=4;,则以下选项中值为0的表达式是( )。 (A)(!a==1)&&(!b==0) (B)(amain() {int a=0,b=0,c=0,d=0; if(a=1) b=1;c=2; else d=3; printf(\"%d,%d,%d,%d\\n\} 18 (A)0,1,2,0 (B)0,0,0,3 (C)1,1,2,0 (D)编译有错 28. 已有定义:char c; ,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为 大写字母的表达式是( )。 (A)isupper(c) (B)’A’<=c<=’Z’ (C)’A’<=c&&c<=’Z’ (D)c<=(‘z’-32)&&(‘a’-32)<=c 4.2填空题 1. 以下程序用于判断a、b、c能否构成三角形,若能,输出YES,否则输出NO。当给a、b、c 输入三角形三条边长时,确定a、b、c能构成三角形的条件是需同时满足三个条件:a+b>c,a+c>b,b+c>a。请填空。 main() {float a,b,c; scanf(\"%f%f%f\ if( )printf(\"YES\\n\");/*a、b、c能构成三角形*/ else printf(\"NO\\n\");/*a、b、c不能构成三角形*/ } 2. 表示条件:x>10且x<100或x<0的C语言表达式是 。 3. 若x为int类型,请以最简单的形式写出与逻辑表达式!x等价的C语言关系表达式 。 4. 以下程序运行后的输出结果是 。 main() { int a=1,b=3,c=5; if (c=a+b) printf(\"yes\\n\"); else printf(\"no\\n\"); } 5. 表示“整数x的绝对值大于5”时值为“真”的C语言表达式是 。 6. 若从键盘输入58,则以下程序输出的结果是 。 main() { int a; scanf(\"%d\ if(a>50) printf(\"%d\if(a>40) printf(\"%d\if(a>30) printf(\"%d\} 7. 以下程序运行后的输出结果是 。 main() { int x=10,y=20,t=0; if(x==y)t=x;x=y;y=t; printf(“%d,%d \\n”,x,y);} 8. 若有以下程序 main() { int a=4,b=3,c=5,t=0; 19 if(aprintf(\"%d %d %d\\n\} 执行后输出结果是 。 9. 有以下程序 main( ) { int n=0,m=1,x=2; if(!n) x-=1; if(m) x-=2; if(x) x-=3; printf(“%d\\n”,x); } 执行后输出结果是 10. 以下程序运行后的输出结果是 。 main() { int a=1,b=2,c=3; if(c=a) printf(\"%d\\n\else printf(\"%d\\n\} 4.3编程题 1. 有一函数: 写一程序,输入x,输出y值。 2. 给一个不多于5位的正整数,要求:(1)求出它是几位数;(2)分别打印出每一位数字; 3. 由键盘输入3个整数x,y,z,输出其中的最大数,请编程序。 4. 给出一百分制成绩,要求输出成绩等级‘A’、 ‘B’、 ‘C’、 ‘D’、 ‘E’。90分以上为‘A’, 80~89分为‘B’, 70~79分为‘C’, 60~69分为‘D’,60分以下为‘E’。 20 第5章循环结构程序设计 5.1选择题 1. t为int类型,进入下面的循环之前,t的值为0 while( t=l ) { ……} 则以下叙述中正确的是 ( ) (A) 循环控制表达式的值为0 (B) 循环控制表达式的值为1 (C) 循环控制表达式不合法 (D) 以上说法都不对 2. 有以下程序 main( ) { int i,s=0; for(i=1;i<10;i+=2) s+=i+1; printf(“%d\\n”,s); } 程序执行后的输出结果是 ( )。 (A) 自然数1~9的累加和 (B) 自然数1~10的累加和 (C) 自然数1~9中的奇数之和 (D) 自然数1~10中的偶数之和 3. 以下程序段的输出结果是( )。 int x=3; do { printf(\"%3d\ } while(!(- -x)); (A)1 (B)30 (C)1 -2 (D)死循环 4. 以下程序中,while循环的循环次数是( )。 main() { int i=0; while(i<10) { if(i<1) continue; if(i==5) break; i++; } ...... } (A) 1 (B) 10 (C) 6 (D) 死循环,不能确定次数 5. 有以下程序 main() { int a=1,b; for(b=1;b<=10;b++) { if(a>=8)break; if(a%2==1){a+=5;continue;} 21 a-=3; } printf(\"%d\\n\ } 程序运行后的输出结果是( )。 (A)3 (B) 4 (C)5 (D)6 6. 有以下程序 main() { int i; for(i=0;i<3;i++) switch(i) { case 1: printf(\"%d\ case 2: printf(\"%d\ default: printf(\"%d\ } } 执行后输出结果是( )。 (A) 011122 (B) 012 (C) 012020 (D) 120 7. 下面程序的输出是( )。 main() {int y=9; for(;y>0;y--) {if(y%3==0) {printf(\"%d\(A)741 (B)852 (C)963 (D)875421 8. 若i,j已定义为int类型,则以下程序段中内循环体的总的执行次数是( for (i=5;i;i--) for(j=0;j<4;j++){...} (A)20 (B)25 (C)24 (D)30 9. 执行语句: for(i=l;i++<4;);后,变量i的值是( )。 (A) 3 (B) 4 (C) 5 (D) 不定 10. 假定a和b为int型变量,则执行以下语句后b的值为( )。 a=1; b=10; do { b-=a; a++; } while (b--<0); (A) 9 (B) -2 (C) -1 (D) 8 11. 设j为int型变量,则下面for循环语句的执行结果是( )。 for( j=10;j>3;j--) { if(j%3)j--; --j; --j; printf(\"%d \} (A) 6 3 (B) 7 4 (C) 6 2 (D) 7 3 )。22 12. 有以下程序 main() { int x,i; for(i=1;i<=50;i++) { x=i; if(++x%2==0) if(x%3==0) if(x%7==0) printf(\"%d,i); } } 输出结果是( )。 (A) 28 (B) 27 (C) 42 (D) 41 13. 在执行以下程序时,如果从键盘上输入ABCdef<回车>,则输出( )。 #include while((ch=getchar())!='\\n') { if(ch>='A' && ch<='Z') ch=ch+32; else if(ch>='a' && ch<='z') ch=ch-32; printf(\"%c\} printf(\"\\n\"); } (A) ABCdef (B) abcDEF (C) abc (D) DEF 14. 执行以下程序段时( )。 x=-1; do {x=x*x; } while(! x); (A) 循环体将执行一次 (B) 循环体将执行两次 (C) 循环体将执行无限次 (D) 系统将提示有语法错误 15. 执行以下程序后,输出的结果是( )。 main () { int y=10; do { y - -;} while(- - y); printf(\"%d\\n\(A) -1 (B) 1 (C) 8 (D) 0 16. 在下列选项中,没有构成死循环的程序段是( )。 (A) int i=100 ; (B) for( ; ;); while(1) { i=i%100+1; if(i>100)break; } (C) int k=1000; (D) int s=36; do{++k;} while(k>=10000); while(s);--s; 17. 运行以下程序后,如果从键盘上输入 china#<回车>,则输出结果为( )。 23 #include { int v1=0,v2=0; char ch; while((ch=getchar())!='#') switch(ch) { case 'a': case 'h': default: v1++; case '0': v2++; } printf(\"%d,%d\\n\} (A) 2,0 (B) 5,0 (C) 5,5 (D) 2,5 18. 以下程序的输出结果是( )。 main( ) { int x=10,y=10,i; for(i=0;x>8;y=++i) printf(\"%d,%d \",x--,y); } (A) 10 1 9 2 (B) 9 8 7 6 (C) 10 9 9 0 (D) 10 10 9 1 19. 以下程序的输出结果是( )。 main( ) { int n=4; while(n--)printf(\"%d \",--n); } (A) 2 0 (B) 3 1 (C) 3 2 1 (D) 2 1 0 20. 以下程序的输出结果是( )。 main( ) { int i; for(i=1;i<6;i++) { if(i%2){printf(\"#\");continue;} printf(\"*\"); } printf(\"\\n\"); } (A) #*#*# (B) ##### (C) ***** (D) *#*#* 21. 以下循环体的执行次数是 ( )。 main() { int i,j; for(i=0,j=1; i<=j+1; i+=2, j--)printf(\"%d \\n\ } (A) 3 (B) 2 (C) 1 (D) 0 22. 以下叙述正确的是 ( )。 24 (A) do-while语句构成的循环不能用其它语句构成的循环来代替。 (B) do-while语句构成的循环只能用break语句退出。 (C) 用do-while语句构成的循环,在while后的表达式为非零时结束循环。 (D) 用do-while语句构成的循环,在while后的表达式为零时结束循环。 23. 有以下程序 main() { int i=0,s=0; do{ if(i%2){i++;continue;} i++; s +=i; }while(i<7); printf(\"%d\\n\} 执行后输出结果是( )。 (A) 16 (B) 12 (C) 28 (D) 21 24. 有如下程序 #include { printf(\"%d\该程序的执行结果是( )。 (A) 321 (B) 23 (C) 不输出任何内容 (D) 陷入死循环 25. 有如下程序 main( ) { int n=9; while(n>6) {n--;printf(“%d”,n);} } 该程序段的输出结果是( )。 (A) 987 (B) 876 (C) 8765 (D) 9876 26. 有以下程序段 int k=0; while(k=1)k++; while 循环执行的次数是( )。 (A) 无限次 (B) 有语法错,不能执行 (C) 一次也不执行27. 以下程序的输出结果是( )。 main() { int a, b; for(a=1, b=1; a<=100; a++) { if(b>=10) break; if (b%3= =1) { b+=3; continue; } } (D) 执行1次25 printf(\"%d\\n\ (A) 101 (B) 6 (C) 5 (D) 4 28. 以下程序的输出结果是( )。 main() { int a=0,i; for(i=1;i<5;i++) { switch(i) { case 0: case 3:a+=2; case 1: case 2:a+=3; default:a+=5; } } printf(\"%d\\n\} (A) 31 (B) 13 (C) 10 (D) 20 29. 以下程序的输出结果是( )。 #include { int i=0,a=0; while(i<20) { for(;;) { if((i%10)==0) break; else i--; } i+=11; a+=i; } printf(\"%d\\n\} (A) 21 (B) 32 (C) 33 (D) 11 30. 有以下程序段 int n=0,p; do{scanf(“%d”,&p); n++;}while(p!=12345 &&n<3); 此处do—while循环的结束条件是( )。 (A) p的值不等于12345并且n的值小于3 (B) p的值等于12345并且n的值大于等于3 (C) p的值不等于12345或者n的值小于3 (D) p的值等于12345或者n的值大于等于3 31. 若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)s=a; for(b=1;b<=c;b++) s=s+1; 则与上述程序段功能等价的赋值语句是 ( )。 26 (A)s=a+b; (B)s=a+c; (C)s=s+c; (D)s=b+c; 32. 有以下程序 main() { int k=4,n=0; for( n printf(\"%d,%d\\n\} 程序运行后的输出结果是( )。 (A)1,1 (B)2,2 (C)3,3 (D)4,4 33. 有以下程序 main( ) { int x=0,y=5,z=3; while(z-->0&&++x<5) y=y-1; printf(“%d,%d,%d\\n”,x,y,z); } 程序执行后的输出结果是( )。 (A) 3,2,0 (B) 3,2,-1 (C) 4,3,-1 (D) 5,-2,-5 34. 有以下程序 main() { int i; for(i=0;i<3;i++) switch(i) { case 0:printf(\"%d\case 2:printf(\"%d\default:printf(\"%d\} } 程序运行后的输出结果是 ( )。 (A)022111 (B)021021 (C)000122 (D)012 35. 有以下程序 main() { int i=0,s=0; for (;;) { if(i==3||i==5) continue; if (i==6) break; i++; s+=i; }; printf(\"%d\\n\} 27 程序运行后的输出结果是( ) 。 (A)10 (B)13 (C)21 (D)程序进入死循环 36. 有以下程序 main() { int k=5,n=0; while(k>0) { switch(k) { default : break; case 1 : n+=k; case 2 : case 3 : n+=k; } k--; } printf(\"%d\\n\} 程序运行后的输出结果是( )。 (A)0 (B)4 (C)6 (D)7 37. 要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,的程序段是( )。 (A)while((ch=getchar())!=′N′)printf(\"%c\(B)while(ch=getchar()!=′N′)printf(\"%c\(C)while(ch=getchar()==′N′)printf(\"%c\(D)while((ch=getchar())==′N′)printf(\"%c\38. 有以下程序 main() {int y=10; while(y--);printf(\"y=%d\\n\",y); } 程序执行后的输出结果是( )。 (A)y=0 (B)y=-1 (C)y=1 (D)while构成无限循环 39. 有以下程序 main() {int i,j,x=0; for(i=0;i<2;i++) {x++; for(j=0;j<=3;j++) {if(j%2)continue; x++; } x++; } printf(\"x=%d\\n\",x); } 28 以下正确 程序执行后的输出结果是( )。 (A)x=4 (B)x=8 (C)x=6 (D)x=12 40. 若变量已正确定义,有以下程序段 i=0; do {printf(\"%d,\printf(\"%d\\n\其输出结果是( )。 (A)0,0 (B)0,1 (C)1,1 (D)程序进入无限循环 41. 有以下程序 #include {int i,j,m=55; for(i=1;i<=3;i++) for(j=3;j<=i;j++) m=m%j; printf(\"%d\\n\} 程序的运行结果是()。 (A)0 (B)1 (C)2 (D)3 5.2填空题 1. 以下程序运行后的输出结果是 。 main() { int i,m=0,n=0,k=0; for(i=9; i<=11;i++) switch(i/10) { case 0: m++;n++;break; case 10: n++; break; default: k++;n++; } printf(\"%d %d %d\\n\} 2. 要使以下程序段输出10个整数,请填入一个整数。 for(i=0;i<= ;printf(“%d\\n”,i+=2)); 3. 若输入字符串:abcde<回车>,则以下while循环体将执行 次。while((ch=getchar())==’e’) printf(“*”); 4. 以下程序运行后的输出结果是_ 。 main() { int i=10, j=0; do { j=j+i; i--; } while(i>2); printf(\"%d\\n\ } 29 5. 以下程序的输出结果是 。 main() {int s,i; for(s=0,i=1;i<3;i++,s+=i); printf(\"%d\\n\6. 有以下程序: #include while((c=getchar( ))!=’?’) putchar(--c);} 程序运行时,如果从键盘输入:Y?N?<回车>,则输出结果为 。 7. 执行以下程序后,输出'#'号的个数是 。 #include for(i=1; i<5; i++) for(j=2; j<=i; j++) putchar('#'); } 8. 有以下程序 main( ) { int t=1,i=5; for(;i>=0;i--) t*=i; printf(“%d\\n”,t); } 执行后输出结果是 。 5.3编程题 1. 输入两个正整数m和n,求其最大公约数和最小公倍数。 2. 求 n! (即求1!+2!+3!+4!+…+10!)。 n1203. 计算1到10之间奇数之和及偶数之和。 4. 有一分数序列 2/1,3/2,5/3,8/5,13/8,21/13,…· 求出这个数列的前20项之和。 5. 打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。 例如,153是一水仙花数,因为153=13+53+33。 6. 输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。 7. 求100以内的素数。 8. 求出1到1000之内能被7或11整除 但不能同时被7和11整除的所有整数。要求输出结果5 个一行。 9. 编写一个程序,求出1~100之间所有每位数的乘积小于每位数的和的数。例如:13满足1*3<1+3. 30 10. 编写一个程序,求出1~100之间所有每位数的乘积大于每位数的和的数。例如:98满足9*8>9+8. 11. 编写一个程序,从3个红球,5个白球,6个黑球中任意取出8个球,且其中必须有黑球,输出 所有可能的方案。 12. 编写一个程序,从3个红球,5个白球,6个黑球中任意取出8个球,且其中必须有白球,输出 所有可能的方案。 13. 编写一个程序,从3个红球,5个白球,6个黑球中任意取出8个球,且其中必须有红球,输出 所有可能的方案。 31 第6章 利用数组处理批量数据 6.1选择题 1. 下列对C语言字符数组的描述中错误的是( )。 (A)字符数组可以存放字符串 (B)字符数组中的字符串可以整体输入、输出 (C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 (D)不可以用关系运算符对字符数组中的字符串进行比较 2. 下面程序运行的结果是( )。 main() { char ch[7]={“65ab21”}; int i,s=0; for(i=0;ch[i]>='0' && ch[i]<='9';i+=2) s=10*s+ch[i]-'0'; printf(\"%d\\n\} (A) 2ba56 (B) 6521 (C) 6 (D) 62 3. 有定义语句:int b;char c[10];,则正确的输入语句是( )。 (A) scanf(\"%d%s\(C) scanf(\"%d%s\ (D) scanf(\"%d%s\4. 有以下程序段 int j; float y; char name[50]; scanf(\"%2d%f%s\ 当执行上述程序段,从键盘上输入55566 7777abc后,y的值为( (A)55566.0 (B)566.0 (C)7777.0 (D)566777.0 5. 不能把字符串:Hello!赋给数组b的语句是( )。 (A)char b[10]={'H','e','l','l','o','!'}; (B)char b[10];b=\"Hello!\"; (C)char b[10];strcpy(b,\"Hello!\"); (D)char b[10]=\"Hello!\"; 6. 若有以下说明: int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g; 则数值为4的表达式是( )。 (A)a[g-c] (B)a[4] (C)a['d'-'c'] (D)a['d'-c] 7. 以下程序的输出结果是( ) main() { int i, k, a[10], p[3]; k=5; for (i=0;i<10;i++) a[i ]=i; for (i=0;i<3;i++) p[i ]=a[i *(i+1)]; for (i=0;i<3;i++) k+=p[i] *2; )。 32 printf(\"%d\\n\ (A) 20 (B) 21 (C) 22 (D)23 8. 以下程序的输出结果是( )。 (A) 1,5,9 (B) 1,4,7 (C) 3,5,7 (D)3,6,9 main() { int i, x[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++) printf(\"%d,\ 9. 函数调用:strcat(strcpy(str1,str2),str3)的功能是( )。 (A)将串str1复制到串str2中后再连接到串str3之后 (B)将串str1连接到串str2之后再复制到串str3之后 (C)将串str2复制到串str1中后再将串str3连接到串str1之后 (D)将串str2连接到串str1之后再将串str1复制到串str3中 10. 有以下程序 main() {int i,t[][3]={9,8,7,6,5,4,3,2,1}; for(i=0;i<3;i++) printf(\"%d\ } 程序执行后的输出结果是( )。 (A)7 5 3 (B)3 5 7 (C)3 6 9 (D)7 5 1 11. 给出以下定义: char x[ ]=\"abcdefg\"; char y[ ]={'a','b','c','d','e','f','g'}; 则正确的叙述为( )。 (A) 数组x和数组y等价 (B) 数组x和数组y的长度相同 (C) 数组x的长度大于数组y的长度 (D) 数组x的长度小于数组y的长度12. 下列描述中不正确的是( )。 (A) 字符型数组中可以存放字符串 (B) 可以对字符型数组进行整体输入、输出 (C) 可以对整型数组进行整体输入、输出 (D) 不能在赋值语句中通过赋值运算符\"=\"对字符型数组进行整体赋值 13. 有以下程序 main() { char p[]={'a', 'b', 'c'}, q[]=\"abc\"; printf(\"%d %d\\n\}; 程序运行后的输出结果是( )。 (A)4 4 (B)3 3 (C)3 4 (D)4 3 14. 执行下面的程序段后,变量k中的值为 ( )。 int k=3, s[2]; s[0]=k; k=s[1]*10; (A) 不定值 (B) 33 (C) 30 (D) 10 设有数组定义: char array [ ]=\"China\"; 则数组 array所占的空间为 ( )。 (A) 4个字节 (B) 5个字节 (C) 6个字节 (D) 7个字节 33 15. 下列程序执行后的输出结果是 ( )。 main() { char arr[2][4]; strcpy(arr,\"you\"); strcpy(arr[1],\"me\"); arr[0][3]='&'; printf(\"%s \\n\ } (A) you&me (B) you (C) me (D) err 16. 若有以下的定义:int t[3][2];能正确表示t数组元素地址的表达式是( )。 (A) &t[3][2] (B) t[3] (C) t[1][0] 17. 以下程序的输出结果是( )。 main() { char w[ ][10]={ \"ABCD\for(k=1;k<3;k++) printf(\"%s\\n\} (A) ABCD (B) ABCD (C) EFG (D) EFGH FGH EFG JK IJKL KL IJ O M 18. 当执行下面的程序时,如果输入ABC,则输出结果是( )。 #include \"stdio.h\" #include \"string.h\" main() { char ss[10]=\"1,2,3,4,5\"; gets(ss); strcat(ss, \"6789\"); printf(\"%s\\n\} (A) ABC6789 (B) ABC67 (C) 12345ABC6 (D) ABC456789 19. 假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数 是( )。 (A) 3 (B) 6 (C) 10 (D) 20 20. 以下程序的输出结果是 ( )。 main() { int i, a[10]; for(i=9;i>=0;i--) a[i]=10-i; printf(\"%d%d%d\ } (A) 258 (B) 741 (C) 852 (D) t[2] (D) 369 21. 以下数组定义中不正确的是( )。 (A) int a[2][3]; (B) int b[][3]={0,1,2,3}; (C) int c[100][100]={0}; (D) int d[3][]={{1,2},{1,2,3},{1,2,3,4}}; 22. 以下程序的输出结果是( )。 main() 34 { int a[4][4]={{1,3,5},{2,4,6},{3,5,7}}; printf(\"%d%d%d%d\\n\ } (A) 0650 (B) 1470 (C) 5430 (D) 输出值不定 23. 已有定义:char a[]=\"xyz\,以下叙述中正确的是( )。 (A)数组a和b的长度相同 (B)a数组长度小于b数组长度 (C)a数组长度大于b数组长度 (D)上述说法都不对 24. 以下程序的输出结果是( )。 main() { char cf[3][5]={\"AAAA\printf(\"\\\"%s\\\"\\n\} (A) \"AAAA\" (B) \"BBB\" (C) \"BBBCC\" (D) \"CC\" 25. 若有定义:int aa[8];,则以下表达式中不能代表数组元素aa[1]的地址的是((A) &aa[0]+1 (B) &aa[1] (C) &aa[0]++ (D) aa+1 26. 以下程序的输出结果是( )。 main() { int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1; for(i=0;i<3;i++) for(j=i;j<=i;j++) t=t+b[j][j]; printf(\"%d\\n\} (A) 3 (B) 4 (C) 1 (D) 9 27. 有以下程序 main() { char a[]={‘a’,‘b’,‘c’,‘d’, ‘e’, ‘f’, ‘g’,‘h’,‘\\0’}; int i,j; i=sizeof(a); j=strlen(a); printf(“%d,%d\\b”,i,j); } 程序运行后的输出结果是( )。 (A) 9,9 (B) 8,9 (C) 1,8 (D) 9,8 28. 有以下程序 main() { int p[7]={11,13,14,15,16,17,18},i=0,k=0; while(i<7&&p[i]%2){k=k+p[i];i++;} printf(\"%d\\n\} 执行后输出结果是( )。 (A) 58 (B) 56 (C) 45 (D) 24 29. 有以下程序 main() { char s[]=\"\\n123\\\\\"; printf(\"%d,%d\\n\ 。 35 )} 执行后输出结果是( )。 (A) 赋初值的字符串有错 (B) 6,7 (C) 5,6 (D) 6,6 30. 以下不能正确定义二维数组的选项是( )。 (A)int a[2][2]={{1},{2}}; (B)int a[][2]={1,2,3,4}; (C)int a[2][2]={{1},2,3}; (D)int a[2][]={{1,2},{3,4}}; 31. 有以下程序 main( ) { char a[]=”abcdefg”,b[10]=”abcdefg”; printf(“%d %d\\n”,sizeof(a) ,sizeof(b) ); } 执行后输出结果是( )。 (A) 7 7 (B) 8 8 (C) 8 10 (D) 10 10 32. 以下能正确定义二维数组的是( )。 (A)int a[][3]={0}; (B)int a[][3]=2{2*3}; (C)int a[][3]={}; (D)int a[2][3]={{1},{2},{3,4}}; 33. 有以下程序 main() { char a[7]=\"a0\\0a0\\0\"; int i,j; i=sizeof(a); j=strlen(a); printf(\"%d %d\\n\ } 程序运行后的输出结果是( )。 (A)2 2 (B)7 6 (C)7 2 (D)6 2 34. 以下能正确定义一维数组的选项是( )。 (A)int a[5]={0,1,2,3,4,5}; (B)char a[]={0,1,2,3,4,5}; (C)char a={'A','B','C'}; (D)int a[5]=\"0123\"; 35. 以下叙述中错误的是( )。 (A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出 (B)数组名代表的是数组所占存储区的首地址,其值不可改变 (C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息 (D)可以通过赋初值的方式确定数组元素的个数 36. #include main() { char p[]={'a', 'b', 'c'}, q[10]={'a', 'b', 'c'}; printf(\"%d %d\\n\} 以下叙述中正确的是( )。 (A)在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3 (B)由于p数组中没有字符串结束符,长度不能确定;但q数组中字符串长度为3 (C)由于q数组中没有字符串结束符,长度不能确定;但p数组中字符串长度为3 (D)由于p和q数组中都没有字符串结束符,故长度都不能确定 36 37. 以下能正确定义字符串的语句是( )。 (A)char str[]={′064′};(B)char str=\"kx43\"; (C)char str=\"; (D)char str[]=\"\0\"; 38. 以下数组定义中错误的是( )。 (A)int x[][3]={0}; (B)int x[2][3]={{l,2},{3,4},{5,6}}; (C)int x[][3]={{l,2,3},{4,5,6}}; (D)int x[2][3]={l,2,3,4,5,6}; 39. 若要求从键盘读入含有空格字符的字符串,应使用函数( )。 (A)getc() (B)gets() (C)getchar() (D)scanf() 40. 若有定义语句:int a[3][6]; ,按在内存中的存放顺序,a数组的第10个元素是( )。 (A)a[0][4] (B)a[1][3] (C)a[0][3] (D)a[1][4] 6.2填空题 1. 下面程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。请填空。 #include #include { char a[]=\"clanguage\ int i, j, k; k=strlen(a); for(i=0; i<=k-2; i+=2) for(j=i+2; j<=k; j+=2 ) if( ) { t=a[i]; a[i]=a[j]; a[j]=t; } puts(a); printf(\"\\n\"); } 2. 下列程序段的输出结果是 。 main() { char b[]=\"Hello,you\"; b[5]=0; printf(\"%s \\n\ } 3. 以下程序的输出结果是 。 main() { char s[]=\"abcdef\"; s[3]=‘\\0'; printf(\"%s\\n\4. 有以下程序 main() { int m[][3]={1,4,7,2,5,8,3,6,9}; int i,j,k=2; for(i=0;i<3;i++) 37 { printf(\"%d \} 执行后输出结果是 。 5. 以下程序运行后的输出结果是 _ ___ 。 main() { int a[4][4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}}; int i=0,j=0,s=0; while(i++<4) { if(i==2||i==4) continue; j=0; do{ s+= a[i][j]; j++; } while(j<4); } printf(\"%d\\n\} 6. 以下程序的输出结果是 。 main() {int a[3][3]={{1,2,9},{3,4,8},{5,6,7}},i,s=0; for(i=0;i<3;i++) s+=a[i][i]+a[i][3-i-1]; printf(\"%d\\n\} 7. 若有定义语句:char s[100],d[100]; int j=0, i=0;,且s中已赋字符串,请填空以实现字符串拷贝。 (注:不得使用逗号表达式) while(s[i]){ d[j]= __ ;j++;} d[j]=0; 8. 以下程序运行后的输出结果是 。 main() { int i,n[]={0,0,0,0,0}; for(i=1;i<=4;i++) { n[i]=n[i-1]*2+1; printf(\"%d \} } 9. 以下程序运行后的输出结果是 。 #include { char ch[]=\"abc\for(i=0;i<3;i++) strcpy(x[i],ch); for(i=0;i<3;i++) printf(\"%s\printf(\"\\n\");} 6.3编程题 1. 已知一个班10个学生的成绩,要求输入这10个学生的成绩,然后求出它们的平均成绩。 38 2. 已知5个学生的4门课的成绩,要求求出每个学生的平均成绩,然后对平均成绩从高到低将各 学生的成绩排序记录。 3. 从字符串中删除指定的字符。同一字母的大小写按不同字符处理。 例如:若程序执行时,输入字符串为:turbo c and Borland c++,从键盘上输入字符:n,则输出后变为:turbo c ad borlad c++,如果输入的字符串不存在,则字符串照原样输出。(10分) 4. 要求用数组实现求fibonacci数列40个数,并且每输出5个数换行。这个数列有如下特点:第1, 2两个数为1,1。从第3个数开始,该数是其前面两个数之和。即: f1=1 (n=1) f2=1 (n=2) fn=fn-1+fn-2 (n≥3) 5. 求一个3×3矩阵主对角线元素之和。 6. 将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1。要求改为1,4,5,6,8。 7. 有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母、小写字母、 数字、空格以及其他字符的个数。 8. 用冒泡法对10个整数排序。 39 第7章 用函数实现模块化程序设计 7.1选择题 1. 以下程序的输出结果是( ) int f() { static int i=0; int s=1; s+=i;i++; return s; } main() { int i,a=0; for(i=0;i<5;i++) a+=f(); printf(\"%d\\n\} (A) 20 (B) 24 (C) 25 (D) 15 2. 有以下程序 #define N 20 fun(int a[],int n,int m) { int i,j; for(i=m;i>=n;i--)a[i+1]=a[i]; } main() { int i,a[N]={1,2,3,4,5,6,7,8,9,10}; fun(a,2,9); for(i=0;i<5;i++)printf(\"%d\ } 程序运行后的输出结果是( )。 (A)10234 (B)12344 (C)12334 3. 在C语言中,形参的缺省存储类别是( )。 (A) auto (B) register (C) static (D) extern 4. 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是 ( )。 (A) 地址传递 (B) 单向值传递 (D) 传递方式由用户指定 (C) 由实参传给形参,再由形参传回实参 5. 若程序中定义了以下函数 double myadd(double a,double b) { return (a+b); } 并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是( )。 40 (D)12234 (A) double myadd(double a,b) (B) double myadd(double,double); (C) double myadd(double b,double a); (D) double myadd(double x,double y); 6. 以下对C语言函数的有关描述中,正确的是( )。 (A)在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 (B)C函数既可以嵌套定义又可以递归调用 (C)函数必须有返回值,否则不能使用函数 (D)C程序中有调用关系的所有函数必须放在同一个源程序文件中 7. 以下叙述中不正确的是( )。 (A)在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值 (B)在C中,在调用函数时,实际参数和对应形参在类型上只需赋值兼容 (C)在C中,外部变量的隐含类别是自动存储类别 (D)在C中,函数形参可以说明为register变量 8. 有以下程序 main( ) { int i,s=0; for(i=1;i<10;i+=2) s+=i+1; printf(“%d\\n”,s); } 程序执行后的输出结果是 ( )。 (A) 自然数1~9的累加和 (B) 自然数1~10的累加和 (C) 自然数1~9中的奇数之和 (D) 自然数1~10中的偶数之和 9. 以下叙述中不正确的是( )。 (A) 在不同的函数中可以使用相同名字的变量 (B) 函数中的形式参数是局部变量 (C) 在一个函数内定义的变量只在本函数范围内有效 (D) 在一个函数内的复合语句中定义的变量在本函数范围内有效 10. 设有以下函数: f ( int a) { int b=0; static int c = 3; b++; c++; return(a+b+c); } 如果在下面的程序中调用该函数,则输出结果是( )。 main() { int a = 2, i; for(i=0;i<3;i++) printf(\"%d\\n\ } (A) 7 (B) 7 (C) 7 (D) 7 8 9 10 7 9 11 13 7 41 11. 有以下程序 int abc(int u,int v); main () { int a=24,b=16,c; c=abc(a,b); printf(\"%d\\n\} int abc(int u,int v) { int w; while(v) { w=u%v; u=v; v=w } return u; } 输出结果是( )。 (A) 6 (B) 7 (C) 8 (D) 9 12. 以下程序运行后,输出结果是( )。 func(int a, int b) { static int m=0,i=2; i+=m+1; m=i+a+b; return(m); } main() { int k=4,m=1,p; p=func(k,m);printf(\"%d,\p=func(k,m);printf(\"%d\\n\} (A) 8,15 (B) 8,16 (C) 8,17 (D) 8,8 13. 以下程序运行后,输出结果是( )。 int d=1; fun(int p) { int d=5; d+=p++; printf(\"%d \} main() { int a=3; fun(a); d+=a++; printf(\"%d\\n\ (A) 8 4 (B) 9 9 (C) 9 5 (D) 4 4 14. 以下程序的输出结果是( )。 int d=1; fun(int p) { static int d=5; 42 d+=p; printf(\"%d \",d); return(d); } main( ) { int a=3; printf(\"%d \\n\",fun(a+fun(d))); } (A) 6 9 9 (B) 6 6 9 (C) 6 15 15 (D) 6 6 15 15. 以下叙述中错误的是( )。 (A)C程序必须由一个或一个以上的函数组成 (B)函数调用可以作为一个独立的语句存在 (C)若函数有返回值,必须通过return语句返回 (D)函数形参的值也可以传回给对应的实参 16. 有如下函数调用语句 func(rec1,rec2+rec3,(rec4,rec5)); 该函数调用语句中,含有的实参个数是( )。 (A) 3 (B) 4 (C) 5 (D) 有语法错误 17. 有如下程序 int func(int a,int b) { return(a+b);} main() { int x=2,y=5,z=8,r; r=func(func(x,y),z); printf(“%d\\n”,r); } 该程序的输出的结果是( )。 (A) 12 (B) 13 (C) 14 (D) 15 18. 在C语言中,函数的隐含存储类别是( )。 (A) auto (B) static (C) extern (D) 无存储类别 19. 下列叙述中正确的是( )。 (A) C语言编译时不检查语法 (B) C语言的子程序有过程和函数两种(C) C语言的函数可以嵌套定义 (D) C语言所有函数都是外部函数 20. 以下所列的各函数首部中,正确的是( )。 (A) void play(var :Integer,var b:Integer) (B) void play(int a,b) (C) void play(int a,int b) (D) Sub play(a as integer,b as integer) 21. 以下程序的输出结果是( )。 fun(int x, int y, int z) { z=x*x+y*y; } main() { int a=31; fun(5,2,a); printf(\"%d\ 43 } (A) 0 (B) 29 (C) 31 (D) 无定值 22. 当调用函数时,实参是一个数组名,则向函数传送的是( )。 (A) 数组的长度 (B) 数组的首地址 (C) 数组每一个元素的地址 (D) 数组每个元素中的值 23. 以下只有在使用时才为该类型变量分配内存的存储类说明是( )。 (A) auto和static (B) auto和register (C) register和static (D) extern和register 24. 以下程序的输出结果是( )。 long fun( int n) { long s; if(n= =1 || n= =2) s=2; else s=n-fun(n-1); return s; } main() { printf(\"%ld\\n\(A) 1 (B) 2 (C) 3 (D) 4 25. 以下函数值的类型是( )。 fun ( float x ) { float y; y= 3*x-4; return y; } (A) int (B) 不确定 (C) void (D) float 26. 以下程序的输出结果是( )。 int a, b; void fun() { a=100; b=200; } main() { int a=5, b=7; fun(); printf(\"%d%d\\n\ (A) 100200 (B) 57 (C) 200100 (D) 75 27. 若有以下程序 #include { void f(int n); f(5); } void f(int n) { printf(\"%d\\n\ 则以下叙述中不正确的是( )。 44 (A) 若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f (B) 若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f (C) 对于以上程序,编译时系统会提示出错信息:提示对对f函数重复说明 (D) 函数f无返回值,所以可用void将其类型定义为无值型 28. 以下程序的输出结果是( )。 f(int b[],int m,int n) { int i,s=0; for(i=m;i {int x,a[]={1,2,3,4,5,6,7,8,9}; x=f(a,3,7); printf(\"%d\\n\} (A) 10 (B) 18 (C) 8 (D) 15 29. 以下叙述中正确的是( )。 (A) 构成C程序的基本单位是函数 (B) 可以在一个函数中定义另一个函数 (C) main()函数必须放在其它函数之前 (D) 所有被调用的函数一定要在调用之前进行定义 30. 以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出, 程序如下: main() { int n,k; float score,sum,ave; sum=0.0; for(n=1;n<=10;n++) { for(k=1;k<=4;k++) { scanf(“%f”,&score); sum+=score; } ave=sum/4.0; printf(“NO%d:%f\\n”,n,ave); }} 上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。这条语句是( )。 (A) sum=0.0; (B) sum+=score; (C) ave=sun/4.0; (D) printf(“NO%d:%f\\n”,n,ave); 31. C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是( )。 (A) void (B) int (C) float (D) double 32. 有以下程序 float fun(int x,int y) { return(x+y); } main() { int a=2,b=5,c=8; 45 printf(“%3.0f\\n”,fun((int)fun(a+c,b),a-c)); } 程序运行后的输出结果是( )。 (A) 编译出错 (B) 9 (C) 21 (D) 9.0 33. 以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序 void sort(int a[],int n) { int i,j,t;