C语言

更新时间:2024-05-15 23:55:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《C语言程序设计》课程自测

1章 C语言概述 一、判断题

1. C语言程序中,任何英语单词均可以作标识符。( )答案为×

2. 在C语言的源程序中,注释使用越多,编译之后的可执行程序的执行效率越低。( )答案为×

3. C语言是一种面向过程的语言。( )答案为√

4. 当主程序执行完毕时,亦即程序执行完毕。 ( )答案为√ 5. C程序有且仅有一个main()函数。 ( )答案为√ 6. C语言中不区分大小写英文字母。 ( )答案为×

7. 用C语言编写的程序是一种需要经过编译和连接才能运行的程序。( )答案为√ 8. C语言是一门对标识符大小写敏感的程序设计语言。( )答案为√ 二、单选题

1. 一个C程序的组成部分可以是( )。

A) 一个主函数和一至若干个其他函数 B) 一至若干个主函数

C) 一个主程序和一至若干个其他函数 D) 一个主程序和一至若干个子程序 答案为A

2. 以下叙述的是( )。

A)在C程序中,main函数必须位于程序的最前面 B)C程序的每行中只能写一条语句 C)C语言本身没有输入输出语句

D)在对一个C程序进行编译的过程中,可发现注释中的拼写错 答案为C

3. C语言规定,C程序执行的开始处为( )。

A) 源程序中排列在最前面的函数 B) 一个指定的系统库函数 C) 用户指定的一个特定函数 D) 程序的主函数 答案为D

4. 一个C程序的执行是从( )。

(A)本程序的main函数开始,到main函数结束

(B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 (C)本程序的main函数开始,到本程序文件的最后一个函数结束 (D)本程序文件的第一个函数开始,到本程序main函数结束 答案为A

5. 一个C语言程序是由( )组成。

(A) 一个函数 (B) 一个或若干个函数(C) 一个过程 (D) 一个过程或若干个过程 答案为B

6. 下列说法中错误的是( )。

(A) 程序的执行总是从主函数开始。 (B) 主函数可以调用任何非主函数的其它函数 (C) 任何非主函数可以调用其它任何非主函数 (D) 程序可以从任何非主函数开始执行 答案为D

7. C程序的基本单位是( )。

A)函数 B)过程 C)语句 D)子程序

答案为A

8. C语言规定:在一个源程序中,main函数的位置( )。

A)必须在最开始 B)必须在系统调用的库函数的后面 C)可以任意 D)必须在最后

答案为C

9. 下列四组选项中,均不是C语言关键字的选项是( )。 A) define B) gets C) include D) while IF char scanf go type printf case pow 答案为A

10. 以下叙述不的是( )。

A)一个C源程序可由一个或多个函数组成 B)一个C源程序必须包含一个main函数 C)C程序的基本组成单位是函数 D)在C程序中,注释说明只能位于一条语句的后面 答案为D

11. 以下的C语言标识符是( )。

A) abc1_ B) _abc1 C) ABC1_ D) Abc1 ABCD 错误 答案为ABCD

12. C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( )。 A) 必须为字母 B) 必须为下划线 C) 必须为字母或下划线 D) 可以是字母、数字和下划线中任一种字符 答案为C 三、多选题

1. 有关C语言特点的表述的是( )

(A)语言程序简洁、紧凑 (B)C语言可移植性强 (C)C语言可以实现直接对硬件进行操作

(D)C语言是一种面向对象的程序设计语言 (E)C语言是一种结构化的程序设计语言 答案为ABCE

2. 结构化程序设计的基本结构包括( )

A)从上到下的结构 B)选择结构 C)循环结构 D)顺序结构 E)分支结构 答案为BCD

2章 数据类型 运算符和表达式 一、判断题

1. 在C语言中,不同类型的数据不可以在一起进行算术运算。( )答案为× 2. 由于计算机的计算精度很高,所以在C语言中程序计算1.0/3*3的结果肯定等于1。( )答案为×

3. 当一个C语言表达式中同时含有字符型、整型、单精度和双精度类型数据参加运算时,按照\由低到高\的原则,所有的数据都必须先转换为双精度类型数据后方能参加运算。( )答案为×

4. 赋值运算符优先于条件运算符。( )答案为×

5. C语言与其他高级语言一样,对于所有的同级运算符均遵循左结合原则。( )答案为×

6. 如果被定义函数的返回值类型是整型或字符型,使用前可以不必进行说明。( )答案为√

7. 表达式128>>2的值是32。( )答案为√ 8. 若x为整型变量、j为实型变量,当执行语句:x=(int)j;后,j也变为整型变量。( )答案为×

9. int a=4,b=0; 则表达式~a&&!b的值是1.( )答案为√

10. 赋值运算符优先于条件运算符.( )答案为× 11. !''的优先级可以比''/''高。( )答案为√

12. 两个char 型数据相加,其结果为char型。( )答案为×

13. 若有定义int a; float b=2.1; 则a=int(b+3)是合法的赋值表达式。( )答案为×

14. 若有int a=4,b=0;则表达式a&&!b的值为0。( )答案为√ 15. 对于int n=3;执行n+=n-=n*n;后n 的值是9。( )答案为× 16. 表达式15>>2的值为2。 ( )答案为×

17. 用语句a=a+b,b=a-b,a=a-b;可以交换a,b两个变量的值。( )答案为√

18. 在C语言中,定义int a=b=c=5;是错0的,而int a,b,c; a=b=c=5;是的.( )答案为√

19. 表达式“5=3”是一个关系表达式,且其值为0。( )答案为×

20. 若有定义int a,b; 则下列语句可用于实现交换a,b的值。( )a=a^b;b=b^a;a=a^b;答案为√

21. 若有定义int a=3,b=4,c=5; 则a+b>c&&b= =c的值为1。( )答案为× 22. int x=3,y=2; 则表达式(y++==--x)?y++:x++的值为3。( )答案为√ 23. 设int x=3,y=2;表达式(y++==--x)?y++:x++的值是3。( )答案为√ 24. 已知int a=5,b=5; 则表达式: ++a>b?a:b-->++a?++b:a的值为6。( )答案为√ 25. 表达式~(~1<<3)的值是15。( )答案为√ 二、单选题

1. 下面四个选项中,均是合法整型常量的选项是( )。 A) 160 B)-0xcdf C) -0l D)-0x48a -0xffff 0la 986,012 2e5 011 0xe 0668 0x 答案为A

2. 设有定义:int m=1,n=-1;则执行语句printf(\后的输出结果是( )。 A) –1 B) 0 C) 1 D) 2

答案为B

3. 设x,y,z,t均为int型变量,则执行以下语句后,t的值为( )。 x=y=z=1;t=++x||++y&&++z;

(A)不定值 (B)2 (C)1 (D)0 答案为C

4. 执行下列程序段后,变量a,b,c的值分别是( )。 int x=10,y=9; int a,b,c;

a=(--x==y++)?--x:++y; b=x++;

c=y;

(A)a=9,b=9,c=9 (B)a=9,b=10,c=9 (C)a=1,b=11,c=10 (D)a=8,b=8,c=10 答案为D

5. 执行下面的程序段后,B的值为( )。 int x=35; char z=''A''; int B;

B=((x&15)&&(z<''a''));

(A) 0 (B) 1 (C) 2 (D) 3 答案为B

6. 表达式11&10的结果用二进制表示为( )。

A)11 B)3 C)1 D)10 答案为D

7. 设有语句int a=3;则执行语句a+=a-=a*a后,变量a的值是( )。 (A) 3 (B) 0 (C) 9 (D) -12 答案为D

8. 在下列选项中,不的赋值语句是( )。

A)t/=5; B)n1=(n2=(n3=0)); C)k=i= =j; D)a=b+c=1; 答案为D

9. 设x为int型变量,则执行以下语句后,x的值为( )。 x=10;x+=x-=x-x;

A)10 B)20 C)0 D)-20 答案为B

10. 若有int a=1,b=2,c=3,d=4;则表达式: a++

11. 以下选项中( )是的C语言赋值语句。 A)x=3,y=5 B)a=b=6 C)i--; D)y=int(x); 答案为C

12. 设有如下的变量定义: 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) 答案为A

13. 假定有以下变量定义:int k=7,x=12;则值为3的表达式是( )

A)x%=(K%=5) B)x%=(k-k%5) C)x%=k-k%5 D)(x%=k)-(k%=5) 答案为D

14. 设有如下定义:int a=1,b=2,c=3,d=4,m=2,n=2;则执行表达式:(m=a>b)&&(n=c>d)后,n的值为( )。

A)1 B)2 C)3 D)0 答案为B

15. 当c的值不为0时,在下列选项中能将c的值赋给变量a、b的语句是( )。 A)c=b=a; B)(a=c)‖(b=c); C)(a=c)&&(b=c); D)a=c=b;

答案为C

16. 设a、b、c、d、m、n均为int型变量,且 a=5,b=6,c=7,d=8,m=2,n=2,则逻辑表达式(m=a>b)||(n=c>d)运算后,n的值位为( )。 A) 0 B) 1 C)2 D) 3 答案为D

17. 假定w、x、y、z、m均为int型变量,有如下程序段: w=1; x=2; y=3; z=4; m=(w

则该程序运行后,m的值是( )。

A) 4 B) 3 C) 2 D) 1 答案为D

18. 整型变量x和y的值相等,且为非0值,则以下选项中,结果为0的表达式是( )。 A) x || y B) x | y C) x & y D) x ^ y 答案为D

19. 下列( )表达式不满足:当x的值为偶数时值为\真\,为奇数时值\假\。 A)X%2= =0 B) ! x%2 !=0 C)(x/2 * 2-x)= =0 D) !(x%2) 答案为B

20. 设整型变量x的值为5,y的值为2,则值为1的表达式是( )。 A)!(y= =x/2) B)Y!=x%3 C)X>0&&y<0 D)X!=y||x>=y 答案为D

21. 假设整型变量a为2,使b的值为0的表达式是( )。

A)b=a/2 B)b=6-(--a) C)b=a%2 D)b=a>3? 0:1 答案为C

22. 若有int b=2;则表达式(b>>2)/(b>>1)的值是( )。 A) 0 B) 2 C) 4 D) 8 答案为A

23. 设int x=3,y=4,z=5; 则下面表达式中值为0的是( )。

A)x&&y B)x<=y C)x||y+z&&y-z D)!((x

24. 假设x=2.5,a=7,y=4.7,则表达式:x+a%3*(int)(x+y)%2/4的值为( )。 A)2.5 B)2.75 C)3 D)9.5 答案为A

25. 已知a=12,表达式a+=a-=a*=aA)A)144 B)-12 C)0 D)24 答案为C

26. 假设a=3,b=4,c=5,则逻辑表达式:

!(a+b)+c-1&&b+c/2的值是( )。 A)true B)false C)0 D) 1 答案为D

27. 若int a=3,b=4;则执行c=a++>2||b-->=4之后, b变量的值为( )。 A)3 B)0 C)4 D)2 答案为C

28. 以下( )表达式取值是正确

的。

A)1&&a的结果为1 B)3&5的结果为0 C)3|5的结果为0 D)3||''a''的结果为0 答案为A

29. 设有语句a=4;则执行语句a-=a+=a*a;后,变量a 的值是( )

A)4 B)0 C)20 D)16 答案为B

30. 设有int a=4,b=6;则表达式 a&b的值为( ) A)3 B)4 C)11 D)12 答案为B

31. 以下哪个表达式的值为4( )

A)11/3 B)11.0/3 C)(flaot)11/3 D)(int)(11.0/3+0.5) 答案为D 32. 表达式k=(12>10)?4:1?2:3的值为(A)1 B)2 C)3 D)4 答案为D

33. 假设所有变量均为整型,则表达式:(a=2,b=5,b++,a+b)的值为( )。 A)7 B)8 C)6 D)2 答案为B

34. 下列程序的输出结果是 ( )。 main( )

{int a=016; a%=6-1;

printf(\ a+=a*=a/=3; printf(\

printf(\ }

A)403 B)402 C)424 D)413 答案为C

35. 数学 式4<|x|<10的C语言表达式为( )。

A)4-10&&x<-4

B)4-10&&x<-4

C)4-10||x<-4 D)4-10||x<-4 答案为A 36. 以下不正确的表达式是A)a>b B)c--,++b,a+=1 C)a=c+b>n-m=k D)p++ 答案为C

37. 有定义int a=3,b=4,c=5; 执行完表达式a++>--b&&b++>c--&&++c后,a,b,c的值分别为( )。 A)3 4 5 B) 4 3 5 C)4 4 4 D)4 4 5 答案为B

38. 在下面C语言的函数说明语句中,正确的是( )。 A) int fun(int x, int y); B) int fun(int x,y); C) int fun(x,y);

D) int fun(int x; int y); 答案为A

39. 2. 字符串常量“ab c\\nt\\012\\xa1*2”在内存中所占的存储空间数是( )。 A) 11 B) 13 C) 15 D) 18

)

( )。

答案为A

40. 设x,y分别为单精度和双精度类型变量,则下列选项( )可将表达式x+y的运算结果强制转换为整型数据。

A) (int)x+y B) int(x)+y C) int(x+y) D) (int)(x+y) 答案为D

41. 在执行语句if((x=y=2)>=x&&(x=5))y*=x;后变量x、y的值应分别为( )。 A) 2、2 B) 5、2 C) 5、10 D) 执行时报错 答案为C

42. 当z的值不为0时,不能地将z的值赋给变量x和y的是( )。 A) x=y=z B) x=z,y=z C) (x=z)||(y=z) D) (x=z)&&(y=z) 答案为C

43. 设有整型变量a, 实型变量f,双精度型变量x,则表达式10+''b''+x*f值的类型为( )。

(A) int (B) float (C) double (D) 不能确定

答案为C

44. 设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是( )。 (A) x && y; (B) x<=y; (C) x || y + z && y – z ; (D) !((x

45. 表达式 a < b || ~ c & d 的运算顺序是 ( )。 (A) ~, & , < , || (B) ~ , ||, &, <

(C) ~, & , || ,< (D) ~ , < , & , || 答案为D

46. 在位运算中,操作数每左移一位,其结果相当于 ( )。

(A)操作数乘以2 (B)操作数除以2 (C)操作数除以4 (D)操作数乘以4 答案为A

47. 若有int k=5; float x=1.2;则表达式(int)(x+k)的值是( )。 (A)5 (B)6.2 (C)7 (D)6 答案为D

48. 表达式k=(12<10)?4:1?2:3的值为( )。 (A) 1 (B) 2 (C) 3 (D) 4 答案为B

49. 字符串\的长度为( ) (A) 4 (B) 1 (C) 16 (D) 17 答案为A

50. 如a为int型,则与表达式a等价的C语言关系表达式是( ) (A) a>0 (B) a!=0 (C) a==0 (D) a<0 答案为B

51. C语言在判断一个量时,用( )表示逻辑真值。 (A) true (B) T (C) 整型值0 (D) 非0整型值 答案为D

52. 下列哪组运算符的优先级相同且运算次序从左到右( )。 A)() [] -> . B)++ -- += C)< & | ^ D)&& ||

答案为A

53. 已知:int x = 1, y = 2, z =0; 则执行:z = x > y ? 10 : 20 , z的值为( )。

A)10 B)20 C)1 D)2 答案为B

54. 若已定义x和y为double类型,则表达式x=2,y=x+10/4 的值是( ) 。 A) 2 B) 4 C) 4.0 D) 4.5 答案为C

55. sizeof(''a''+10)的值为( )类型。

A)int B) float C) double D)char 答案为A

56. 若有float x=2.5,y=4.7;int a=7; 则表达式x+a%3*(int)(x+y)%2/4的值为( )。 A)4.0 B)3.0 C)2.75 D)2.5 答案为D

57. int x=3,y=2;则条件表达式x>y?1:2.3的值为( )。 A)1 B)1.0 C)2.3 D)2

答案为B 58. 已知:int x = 1, y = 2, z ; 则执行:z = x > y ? ++x : ++y , z的值为( )。

(A) 1 (B) 2 (C) 3 (D) 4 答案为C

59. C语言中,运算对象必须是整型数的运算符是( )。 A)% B)/ C)%和/ D)* 答案为A

60. 若有关系x≥y≥z,应使用( )C语言表达式。

A)(x>=y)&&(y>=z) B)(x>=y)AND(y>=z) C)(x>=y>=z) D)(x>=y)&(y>=z) 答案为A

61. 以下能表示a≥10或a≤0的合法的C语言关系表达式是( )。

A)a>=10 or a<=0 B)a>=10│a<=0 C)a>=10||a<=0 D)a>=10||a<=0 答案为C

62. 若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是( )。 A)1 B)2 C)2.0 D)2.5 答案为C

63. 若t为double类型,表达式t=1,t+5,t的值是( ) 。 A)1 B)6.0 C)1.0 D)6 答案为C

64. 在以下一组运算符中,优先级最高的运算符是( )。 A)<= B)= C)% D)&& 答案为C

65. 若有以下定义: | char a;int b;

float c; double d;

则表达式a*b+d-c值的类型为( )。

A)float B)int C)char D)double 答案为D

66. 表示关系x≤y≤z的C语言表达式为( )。

A)(x<=y)&&(y<=z) B)(x<=y)AND(y<=z) C)(x<=y<=z) D)(x<=y)&(y<=z) 答案为A

67. 设x,y,z,t均为int型变量,则执行以下语句后,t的值为( ) 。 x=y=z=1; t=x||y&&z;

A)不定值 B)2 C)1 D)0 答案为C

A)4 B 16 C 32 D 52 答案为C 69. 以下合法的赋

68. 设x.y.z和k都是int型变量,则执行表达式:x=(y=4,z=16,k=32)后,x的值为( )

值语句是( )

A) x=y=100 B) d--; C) x+y; D) c=int(a+b); 答案为B

70. 以下能表示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 答案为D

71. 在以下的四个运算符中,优先级最低的运算符是( ) A)<= B)/ C)!= D)&& 答案为D

72. 在以下的四个运算符中,优先级最高的运算符为( )。

A)?: B)++ C)& D)+= 答案为B

73. 设a和b为int型变量,且a的值为15,b的值为240,则表达式(a&b)&b||b的值为( )

A)0 B)1 C)true D)False 答案为B

74. 假设有 int x=11; 则表达式 (x++ * 1/3) 的值是 ( ) A) 3 B) 12 C) 11 D) 0 答案为A

75. 以下关于运算符优先顺序的描述中,的是( ) A)关系运算符<算术运算符<赋值运算符 B)逻辑运算符<关系运算符<算术运算符 C)算术运算符<关系运算符<赋值运算符 D)赋值运算符<关系运算符<算术运算符 答案为D 76.

sizeof

(double)

A)整型表达式 B)实型表达式 C)不合法的表达式 D)函数 答案为A

77. 设有整型变量a,实型变量f,双精度型变量x,则表达式10+''b''+x*f的值的类型为( ) A)int B)float C)double D)不能确定

答案为D

78. 若有int k=5; flaot x=1.2; 则表达式(int)(x+k)的值是( ) A)5 B)6.2 C)7 D)6

答案为D

79. 下面对变量赋初值的是( )

A)int a=b=c=1; B)int a=1,b=c=2; C)int a=1,b=1,c=1; D)int a=b=1,c=2; 答案为C

80. 设有以下语句:int a=3,b=6,c; c=a^b<<2; 则c的二进制值是( )。 A)00011011 B) 00010100 C)00011100 D)00011000 答案为A

81. 当a=3,b=2,c=1时, 表达式f=a>b>cA)1 B)0 C)3 D)2 答案为B 82.

x=2,y=1,则表达式

执行完后

f

的值是(

)

x>y?1:1.5的值为( )

A)1 B)1.5 C)1.0 D)2 答案为C

83. 在位运算中,操作数每左移一位,其结果相当于( A)操作数乘以2 B)操作数除以2 C)操作数乘以4 D)操作数除以4 答案为A

84. 在位运算中,某操作数 右移3位,其结果相当于( A)操作数乘以6 B)操作数除以6 C)操作数乘以8 D)操作数除以8 答案为D

85. 在C语言中,若以下变量均为int型,则下面程序段的输出结果是( )。 s=6,u=6; u=s++; u++;

)

)

printf(\

A)7 B)6 C)5 D)4 答案为B

86. 若有定义:int x=3;double y; 则执行语句y=(double)x;后,变量x的数据类型为( )。

A)int B)char C)flaot D)double 答案为A

87. 若有定义double x,y; 则表达式x=1,y=x+3/2的值为( )。

A)1 B)2 C)2.0 D)2.5 答案为C

88. 若有定义int x,y,t; 则执行语句: x=y=3,t=++x||++y;后,y的值为( )。 A)不定值 B)4 C) 3 D)1 答案为C

89. 若x、i、j和k都是int型变量,则计算下面表达式后,x的值为( )。 x=(i=4,j=16,k=32)

A) 4 B) 16 C) 32 D) 52 答案为C

90. 假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是( )。 A)7 B)8 C)6 D)2 答案为B

三、多选题 1. C语言中,若在一个复合语句和复合语句所在的函数中都定义了一个同名的变量,则该两变量( )。

printf(\

}

A)0,0,1 B)-1,1,1 C)0,1,0 D)0,0,0 答案为A

15. 以下程序运行后,m的值为( ) 。 #include void main( ) { int m,n,k;

m=(n=4)+(k=10-7); printf(\

}

A)4 B)3 C)7 D)14 答案为C

16. 下面程序的输出结果是( )。 main( ) {int x=10;

printf(\ }

A)9 B)-9 C)11 D)-11 答案为D

17. 以下程序的输出结果是( )。

main( )

{int x=10,y=10;

printf(\ }

A)10,10 B)9,9 C)9,10 D)10,9 答案为D

18. printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列,如果字符串长度大于5,则输出按方式 ( )。

A) 从左起输出该字符串,右补空格 B) 按原字符长从左向右全部输出 C) 右对齐输出该字串,左补空格 D) 输出错0信息 答案为B

19. putchar函数可以向终端输出一个

A) 整型变量表达式值 B) 实型变量值 C) 字符串 D) 字符或字符型变量值 答案为D

20. 根据定义和数据的插入方式,输入语句的形式为( )。 已有定义:float f1,f2; 数据的输入方式:4.52 3.5 A)scanf(\B)scanf(\C)scanf(\ %2.1f\

D)scanf(\答案为B

21. 已知ch是字符型变量,下面不的赋值语句是( )。

A)ch=''a+b'' B) ch=''\\O''; C)ch=''7''+''9''; D)ch=5+9; 答案为A

22. 假设int a=4; 以下不的语句是( )。 A)a+1=4; B){a+++ D)printf(\答案为A

23. 如下程序的执行结果是( )。 main()

{ int x=023; printf(\

}

A) 17 B) 18 C) 23 D) 24 答案为B

24. 以下程序的输出结果是( ) 。 main( )

{char x=040;

printf(\ }

A)100 B)80 C)120 D)64 答案为D

25. 假如一个整型变量的最大允许值为32767,那么运行如下程序后屏幕上会输出的结果是( ) main()

{ int a,b; a=32767; b=a+1;

printf(“%d,%d”,a,b); }

A) 32767,32768 B) 32767,-32768 C) 32767,0 D) 运行时报错 答案为B

26. 已知字母A的ASCII码为十进制的65,下面程序的输出是 main()

{ char ch1,ch2; ch1=''A''+''5''-''3''; ch2=''A''+''6''-''3'';

printf(\ }

A) 67,D B) B,C C) C,D D) 不确定的值 答案为A

27. 请读程序片段:int i=65536; printf(\

上面程序片段的输出结果是( )。

A) 65536 B) 0 C) 有语法错0,无输出结果 D) -1 答案为B

28. 在下列程序段中: int x, y ;

+4;a/=4}

C)

;

scanf(\

若输入的数据为:12345678,则x、y的值分别为( )。 A) 123,456 B)123,678 C)12345 678 D)无法得到的值 答案为B

29. 有如下程序,输入数据12 345后,y的值是( )。 #include main()

{ int x; float y;

scanf(\ }

(A)12.000000 (B)345.000000 (C)12345.000000 (D)0.000000 答案为B

30. 有如下程序,若要求a1,a2,c1,c2的值分别为10,20,A,B,的数据输入是( ) main() {int a1,a2; char c1,c2;

scanf(\ scanf(\ }

(A)1020AB (B)10 20AB (C)10 20 AB (D)10 20AB 答案为D

31. 下列语句的输出为( )。

int x=-1;

printf(\

A) -1,65535,177777 B)-1,-1,-1

C) -1,32767,-177777 D)-1,32768,177777

答案为A

32. 若有定义int a=3; 则执行完printf(\语句后,a 的值为( )。 A)-3 B)2 C)-2 D)3 答案为B

33. 以下程序的输出结果是( )。 int x=3,y=4; void main( ) { int x,y=5; x=y++;

printf(\ }

A)3 B) 4 C) 5 D) 6 答案为C

34. 设有如下定义:int x=10,y=3,z; 则语句: z=(x%y,x/y));

printf(“%d\\n”,Z); 的输出结果是( )

A)1 B)0 C)4 D)3

答案为D

35. 以下程序的输出结果是 ( ) .

main( ) { int a=3;

printf(\ ); }

A) -6 B)12 C) 0 D) –12 答案为D

36. 设有定义:int x=1,y=-1;则语句:

printf(\ 的输出结果是( ). A)1 B)0 C)-1 D)2 答案为B

37. 设有如下定义: int x=10,y=3,z; 则语句: printf(\ 的输

出结果是( )。 A)1 B)0 C)4 D)3 答案为D

38. (17) 下列程序的输出结果是( ) main( ) {

int x,y;

double

d=3.2;

x=1.2; y=(x+3.8)/5.0;

printf(\ \\n\ d*y);

} A) 3 B) 3.2 C) 0 D) 3.07 答案为A

39. 已知E的ASCII码是69,则执行以下语句的结果是( )。 printf(\

A)66 B)A C)B D)E 答案为A

40. 执行下面程序后,n的值为( ) 。 main( )

{int n,a=2,b=3,c=4; n=(n>b)?b:c;

n=(a

prefix

=

b)?a

/>

n=(n

A)5 B)4 C)3 D)2

41. 以下程序执行完后,a 的值为( ) #inlcude void main( ) {int a;

printf(\ }

A)65 B)20 C)15 D)10

答案为C

42. 下面程序的运行结果是( ) main( ) {int n;

(n=6*4,n+6),n*2; printf(\ }

A)30 B)24 C)60 D)48 答案为B

43. 下面程序的运行结果是( ) main( )

{int x=0,y=0;

while (!!x) y+=++x;

A)1 B)0 C)控制表达式非法 答案为B

44. 下面程序的运行结果是( ) main( )

{int n,a=2,b=3,c=4; n=(a

A)5 B)4 C)3 D) 2 答案为B

45. 以下程序的运行结果为( )。 main( )

{unsigned a=3,b=10;

printf(\ }

A)3 B)10 C) 13 D)14 答案为C

46. 以下程序的运行结果为( )。 main( )

{int x=17,y=26;

printf(\ A)5 B)8 C)2 D)26 答案为A

47. 以下程序的输出结果是( ) 。 main( ) {int a=-1,b=4,k;

k=(++a,0)&&!(b--<=0);

printf(\

A)1,0,4 B)1,0,3 C)0,0,3答案为D

48. 以下程序的输出是( ). main( )

{int a,b,d=241;

printf(\ D)程序执行无限次n=(n>b)?b:c;

D)0,0,4

}

}

}

a=d/100%9;

b=(-1)&&(-1);

printf(\

A)6,1 B)2,1 C)6,0 D)2,0 答案为B

49. 下列程序段的输出结果是()。 int x=1 , y=1 , z;

z=1||++x&&y--;

printf(\

A) 1,1,1 B) 2,0,1 C)2,1,1 D)2,0,0 答案为A

50. 下列程序的运行结果是( ). #include

main( ) {unsigned a,b,c; a=0x255; b=a<<4;

x=(~b)&0xff ; printf(\ A)0x55 B)0xaf C)0x50 D)0xda 答案为B

51. 若有定义int a=25,b=14,c=19;则以下三目运算符构成的语句的执行结果是( )

a++<=25&&b--<=2&&c++ ? pritnf(\

A)25,14,19 B)26,13,19 C)25,13,19 D)26,14,19 答案为B

52. 以下程序的输出结果是( ). main( )

{int a=-1,b=4,k;

k=(++a,1)&&!b-->=0;

printf(\

A)1,0,4 B)1,0,3 C)0,0 3 D)0,0,4 答案为C

三、多选题

1. 结构化程序设计思想应该包括( )。 (A)使用顺序、分支、循环三种基本结构; (B)限制使用goto语句;

(C)应该使用自顶向下、逐步求精的方法;

(D)应该使用模块化的方法;

(E)编码过程中,变量名的命名只要程序员自己明白就可以了; 答案为ABCD

2. 对于scanf()函数,下列说法的是( )。

A)如果相邻格式符之间没有数据分隔,则对应的输入数据之间可用空格、回车分隔。 B)输入数据时不能指定精度。

C)在用格式说明符\输入单个字符时,空格字符和转义字符是无效字符,即不能被输入。

D)遇到空格、或者回车时,系统认为一个数据输入结束。

答案为ABD

3. 已知ch是字符型变量,下面的赋值语句是( )。

A)ch=''123''; B) ch=''\\xff''; C)ch=''t''; D)ch=\; 答案为BC

4. 若有定义int a,b; float x;,则以下不的赋值语句是( )。 A)a=1,b=2, B)b++; C)a=b=5 D)b=int(x); 答案:A,C,D 答案为ACD

4章 条件语句 一、判断题

1. 在if...else语句中,else总是和它上面最近且未曾配对的if配对。( ) 答案为√ 2. 在if(<表达式>) <语句序列1> else<语句序列2>中的语句序列1和语句序列2可以为复合语句。( ) 答案为√ 3. C语言在判断一个量是否为真时,以非0值代表“真”,以0值代表“假”。( ) 答案为√

4. 与下列程序段等价的赋值语句是 y=x>0?1:x<0?-1:0 ( ) 答案为× if(x>0)y=1; else if(x<0) y=-1; else y=0; 二、单选题

1. 有如下程序 main( )

{ float x=4.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.0 B) 0.25 C) 0.5 D) 1.0 答案为B

2. 为了避免嵌套的if-else语句的二义性,C语言规定else总是与()组成配对关系。 (A)缩排位置相同的if (B)在其之前未配对的if (C)在其之前未配对的最近的if (D)同一行上的if 答案为C

3. 为了避免嵌套的if-else语句的二义性,C语言规定else总是与( )组成配对关系。 (A)缩进位置相同的if (B)在其之前未配对的if (C)在其之前最近的未配对的if (D)同一行上的if 答案为C

4. 设int a=0,b=5,c=2;选择可执行x++的语句是( )。 (A)if(a) x++ (B)if(a=b) x++; (C)if(a=

答案为B

5. 下列程序段运行后,x的值是( )。 int a,b,c,x; a=b=c=0;x=35; if(!a) x--; else if(b); if(c) x=3;

else x=4;

A)3 B)4 C)34 D)35 答案为B

6. 若要求在if后一对圆括号中表示a不等于0的关系,则能表示这一关系的表达式为 A)a<>0 B)!a C)a=0 D)a 答案为D

7. 假定所有变量均已定义, ok1=1; ok2=2; ok3=3; x=15; if(!ok1) x--;

else if (ok2) if (ok3) x=3; else x=4;

上面程序段运行后x的值是:( )

A)14 B)4 C)15 D)3 答案为D

8. 在C语言的if语句中,用作判断的表达式为( ).

A)关系表达式 B)逻辑表达式 C)算术表达式 D)任意表达式

答案为D

9. 以下程序的运行情况是( ) . #inlcude

void main( )

{int x=3,y=0,z=0;

if (x=y+z) printf(\ else printf(\

A)有语法错0不能通过编译 B)输出**** C)可以通过编译, 不能通过连接, 不能运行 D)输出####

答案为D

10. 若要求在if后一对圆括号中表示count等于0的关系, 则能表示这一关系的表达式为( )

A) count B) ! count C) count=0 D) count!=0 答案为B

11. 以下程序的输出结果是( )。 #include main()

{ int a=1,b=4,c=2;

float y=4.0,z;

z=(a+b)/c+sqrt((double)y)*1.2/c; printf(%f\\n\

}

A)3.500000 B)3.700000 C)3.200000 D)4.400000 答案为C

12. 若有定义int x,y;下面选项中合法的if语句( ) (A)if(a==b)x++; (B)if(a=b)x++; (Cif(a=>b)x++; 答案为A

13. 下面程序的输出是( )。 #include main( )

{int x=100,a=10,b=20; int v1=5,v2=0; if (a

if (v2) x=10;

x=-1;

printf(\ }

(A)100 (B)-1 (C)1 (D)10 答案为B

14. 有一C语言源程序如下: main()

{ int a,b=-1;scanf(\

if(a) if(a>0) b=1; else b=0; }

该程序所表示的数学函数关系是( )

15. 运行下列程序并用键盘输入53,48,32 后,在屏幕上的内容是( main () {

int i,j,k;

scanf (\ &j, &k); if (i>50) printf(\ else if (i>40) printf(\ else if (i>30) printf(\ else printf(\}

。 ) A)53 B)48 C)32 D)Error 答案为A

16. 若有int i = 10,j=0; 并执行下列程序段: switch ( i ) {

case 9: i += 1; break; case 10:

case 11: i -= 2; break; default: j+= 3; break; }

则变量i的结果是( )。

A)13 B)10 C)11 D)8 答案为D

17. 若 int i = 10,执行下列程序: switch ( i )

{ case 9: i += 1; case 10:

case 11: i -= 1; default: i += 1; }

则变量i的结果是( )。

(A)10 (B)11 (C)12 (D)9 答案为A

18. 若给定条件表达式(m)?(a++): (a--),则其中表达式m( )。

A)和(m==0)等价 B)和(m==1)等价 C)和(m!=0)等价 D)和(m!=1)等价 答案为C

19. 以下程序段的运行结果是( )。 int a=7,b=8,c=9; if(a>b)

a=b,b=c;c=a;

printf(\ A)7,8,7 B)7,9,7 C)8,9,7 D)7,8,9 答案为A

20. 要判断字符变量ch中的值是否为数字字符,则的表达式是( )。 A)ch≥0&&ch≥9 B)ch>=0&&ch<=9 C)ch>=''0''&&ch<=''9'' D)ch≥''0''ch≥''9'' 答案为C

21. 两次运行以下程序,若从键盘上分别输入6和4,则输出结果是( )。 main( ) {int x;

scanf(\

if(x++>5) printf(\

A)7和5 B)7 C)7和4 D)6和4 答案为B

22. 下面程序的输出是( )。 main( ) {int y=9; for(;y>0;y--)

if(y%3==0) {printf(“%d”,- -y);continue;} }

A)741 B)852 C)963 D)875421 答案为B

23. 假定所有变量均已说明,下列程序段运行后x的值是( )。 a=b=c=0;x=35; if(!a)x--;

else if(b)

if(c) x=3; else x=4; A)34 B)4 C)35 D)3 答案为B

24. 下面程序的运行结果是( )。 main( ) {int k=3;

if (k++>3) printf(\ else printf(\ } A)5 B) 4 C)3 D)2 答案为C

25. 下面程序的输出结果为( ) 。 main( )

{int x=0,a=10,b=20,c=15;

if (a>b) if(b

printf(\ }

A)0 B)1 C)2 D)不确定 答案为A

26. 下列程序的输出结果是( ) #include main( ) {int a,b,c; a=1;b=2 c=3;

a=(c=a>b)&&(b=c

A)1,2,3 B)0,2,0 C)1,2,0 D)1,0,0 答案为B 三、多选题

1. 如果t<>0,则把变量a的值赋给变量c,否则把变量b的值赋给变量c,能实现此功能

的语句有( )。

(A)c=t?a:b; (B)c=!t?a:b; (C)if(t)c=a;else c=b; (D)if(!t)c=a;else c=b; (E)c=t!=0?a:b; 答案为ACE

2. 以下叙述的有( )

A)if ((x=12;)!=0)?? B) if ((x=12)!=0)?? C) 赋值语句与赋值表达式是不同的 D)在if 语句中的表达式不能有赋值语句 E)在if 语句中不能有赋值表达式 答案为BCD

3. 若int a,b,sum; 则计算a+|b|的值的方法( ) 。

A) sum=a>0?a+b:a-b; B) sum=b>0?a+b:a-b; C) if (a>0) sum=a+b; else sum=a-b; D) if (b>0) sum=a+b; else sum=a-b; E) if (b>0) sum=a-b; else sum=a+b; 答案为BD

4. 已定义int a,b,x,下列语句中合法的条件语句是( )。 A)if(a=b) ++x; C)if(a!=b) ++x; D)if(a<>b) ++x; E)if(a>=b) ++x; 答案为CE

A)''A''<=c<=''Z'' B)''Z''>=c>=''A'' C)c>=''A''&& ''Z''>=c D)c>=''A''&&c<=''Z'' E)c>=''A''||c<=''Z'' 答案为CD

5章 循环结构 一、判断题

1. continue 语句可以用于switch结构中。( )答案为× 2. break语句只能用于循环语句中。( )答案为× 3. do......while循环语句至少要执行一次循环体。答案为√ 4. 语句while(!E);中的条件!E等价于E==0。( )答案为√

5. 语句for(; ; ) {循环体} 和 while(1) {循环体}是等价的。( )答案为√ 6. 在C语言中,for语句既可以用于计数类型循环又可以用于条件类型循环。( )答案为√ 二、单选题

1. 若N为整型变量,则for(N=10;N=0;N--);循环里的循环体被( )。

A) 无限循环 B) 执行10次 C) 执行一次 D) 一次也不执行 答案为D

2. 下列程序段运行后i的值是( )。 int i=10 switch(i+1)

{case 10:i++;break; case 11:++i;

case 12: ++i;break; default:i=i+1;

}

A)11 B)13 C)12 D)14 答案为C

3. 下面的程序,描述的是( )

5. 若变量c定义为char型,则能判断c为大写字母的有( )

main()

{ int x=3; do

{printf(\ while(!(--x));

}

(A)输出的是1 (B)输出的是1和-2 (C)输出的是3和0 (D)是死循环 答案为B

4. 执行下面程序后,a的值是( )。 #include void main ()

{ int a;

printf(“%d\\n”,(a=3*5,a*4,a+5));

}

(A)65 (B)20 (C)15 (D)10 答案为B

5. 以下程序的输出结果为( )。 #include main() { int i;

for (i=0;i<10; i++) ; printf(\}

(A) 0 (B) 123456789 (C) 0123456789 (D) 10 答案为D

6. C语句for(;;){ ??}是指( )。

(A)无意义 (B)无限循环 (C)循环执行1次 (D)循环执行0次 答案为B

7. 以下程序的输出结果是: main ( )

{ int n = 4

while (n--)printf (\ }

A)2 0 B)3 1 C)3 2 1 D)2 1答案为A

8. 设int a=1,则执行完循环While(a++<5);a的值是:

A)6 B)5 C)1 D)-264 答案为A

9. 在下列for循环中,其循环次数是( ) for(x=1,y=0;(y!=123)&&(x<4); x++);

A)4 B)3 C)1 D)无数多次 答案为B

10. 有如下程序

0 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 答案为A

11. 若有定义float x,y;int a,b;则合法的switch语句是( ) (A)switch(a) {case 3+x:printf(\ case 4:printf(\ (B)switch(a)

case 3 printf(\

case 4 printf(\

(C)switch(b) {default: a++; case 1:printf(\ case 1+2:printf(\ }

(D)switch(a+b);

{case 1+2:printf(\ case 1:printf(\ default: a++; 答案为C

12. 循环语句for(x=0,y=0;(y!=123)||(x<4);x++);的循环次数是( )。 (A)3 (B)4 (C)无限次 (D)不确定次

答案为C

13. 下述程序的输出结果是( ) #include void main() {int x=9; for (;x>0;x--) {if (x%3= =0)

{printf(\

continue; } } }

(A)741 (B)852 (C)963 (D)875421 答案为B

14. 假定a和b为int型变量,则执行以下语句后b的值为( ) a=1;b=10; do {b-=a;a++;} while (b--<0);

(A)9 (B)-2 (C)-1 (D)8 答案为D

15. 循环语句for (x=0,y=0;(y!=123)||(x<4);x++);的循环执行( ) (A)无限次 (B)不确定次 (C)4次 (D)3次 答案为A

16. 设x和y均为int型变量,则执行下面的循环后,y的值为( ) for(y=1,x=1;y<=50;y++)

{if (x>=10) break;

if (x%2==1) {x+=5;continue;} x-=3; }

(A)2 (B)4 (C)6 (D)8 答案为C

17. 语句while(!e==0);什么时候将会陷入死循环( ) A)e==0 B)e!=0 C)e!=1 D)e!=-1 答案为B

18. 执行下面程序段的结果是( )。 int x=23;

do

{ printf(\

}while (!x);

(A)打印出321 (B)打印出23 (C)不打出任何内容 (D)陷入死循环 答案为B

19. 循环语句for(a=0,b=0;(b!=45)||(a<5);a++);的循环次数是( ) (A) 4 (B) 3 (C) 5 (D) 无数多次 答案为D

20. 以下不是死循环的语句( )。

(A) for ( ; ; x ++= i); (B) while (1) {x++;}

(C) for ( i = 10; ; i-- ) sum -= i;

(D) for ( ; (c = getchar()) != ‘\\n’;) sum -= i;

答案为D

21. 若 int x = 3; 且有下面的程序片段,则输出结果为( )。 do

{ printf ( \ , x -= 2 ); }while ( !( --x ));

(A) 1 (B) 30 (C) 1-2 (D) 死循环 答案为C

22. 以下程序的输出结果是( ) 》 main ( )

{ int n = 4 ; while (n--)

printf (\ }

A)20 B)31 C)321 D)210 答案为A

23. 语句while (!E);中的表达式!E等价于( ) 。

A)E= =0 B)E!=1 C)E!=0 D)E==1 答案为A

24. 以下程序段( )。 int x=-1; do {x=x*x;}

while A)是死循环 B)循环执行2次 C)循环执行1 次 D)有语法错0 答案为C

25. 对以下程序段,描述的是( ) 。 int k=5; while (k=0) k=k-1;

printf(\

A)循环体被执行了5次 B)循环体是无限循环 C)循环体一次也不执行 D)循环 体被执行一次 答案为C

26. 以下语句执行完后i 的值为( )。 for(x=0,y=3,i=0;(y>3)&&(x<4);x++,y++) i++; A)0 B)1 C)2 D)3 答案为A

27. 下面程序的运行结果是( )。 main( )

{int x=0,y=0;

while (1) y=++x; printf(\

}

A) 1 B)控制表达式非法 C)无限循环 D)0 答案为C

28. 下面程序段的输出结果是( ) 。

(!x); int x=3;

do {printf(\ while

A) 1 B) 130 C)12 D) 死循环 答案为D

29. 执行下列程序段之后,b的值为( ) 。 int a=1,b=10; do {b-=a; a++;} while(b--<0);

A)9 B)-2 C)-4 D)8 答案为D

30. 在下述程序中,判断i>j共执行了( )次。 #include void main()

{int i=0,j=10,k=2,s=0; for (;;) { i+=k;

if (i>j)

{printf(\ break; }

s+=i; } }

(A)4 (B)7 (C)5 (D)6 答案为D 三、多选题

1. 在下列语句所构成的程序结构中,break语句和continue语句均可使用的是( ) (A)用goto语句和if语句构成的循环 (B)while循环 (C)do-while循环 (D)for循环 (E)switch语句构成的分支结构 答案为BCD

2. 与for(表达式1;;表达式3);语句等价的选项有( )。

(A)for(表达式1;1;表达式3); (B)for(表达式1;0;表达式3); (C)表达式1;while(1)表达式3; (D)表达式1;while(0)表达式3; (E)表达式1;while(3)表达式3;

答案为ACE

3. 在while(<表达式>)中,用于表达式等于0时循环,否则退出循环的表达式可以写成( )。

A) while(x!=0) B) while(x==0) C) while(x) D) while(!x) E) while(x=0) 答案为BD

4. 在C语言中,下列说法的有( )。

(A)\ 语句体 while(条件)\中的语句体可能一次也不会执行

(B)\ 语句体 while(条件)\中当条件为0时将结束循环

(C)for(表达式1;表达式2;表达式3);中的表达式1无论如何都会执行一次 (D)for循环只能用于循环次数已确定的情况

(!(--x));

(E)do-while语句和while语句在任何情况下完成的功能等价 答案为BC

5. 在下列选项中,构成死循环的程序段是( )。

A) int i=100; B) int k=100; C) int s=36; while(1) do while(s); { i=i0+1; { k++; --s; if(i>100) break; }while(k>=1000); }

D) int x=10; E) for(;;); for(;1;x--) if(x==0)break; 答案为ACE

6章 编译预处理 一、判断题

1. C语言预编译命令#include与#include\的功能是完全一样的。( )答案为×

2. 宏定义不是C语句,不必在行末加分号。( )答案为√

3. C语言的编译系统对宏命令的处理是在对源程序中其他成份正式编译之前进行的。( )答案为√

4. 若有宏定义:#define M(x,y,z) x*y+z,则宏引用M(2+3,4+5,6+7)通过宏展开后的表达式应为(2+3)*(4+5)+6+7。( )答案为×

5. #define与typedef的作用完全相同。( )答案为× 6. 宏定义后一定要有分号。( )答案为×

7. C语言的编译系统对宏命令的处理是在程序连接时进行的。( )答案为× 8. 宏定义不是C语句,不必在行末加分号。( )答案为√

二、单选题

1. 如果程序中有 #include \文件名\ 则意味着( )。

(A) 将\文件名\ 所指的该文件的全部内容,复制插入到此命令行处。 (B) 指定标准输入输出 (C) 宏定义一个函数 (D) 条件编译说明 答案为A

2. 以下有关宏替换的叙述不的是( )。

(A)宏替换不占用运行时间 (B)宏名无类型

(C)宏替换只是字符串替换; (D)宏替换是在运行时进行的 答案为D

3. 如果有#define f(x,y) x+y及int a=2,b=3;则执行printf(\ 后的值为( )。

(A)36 (B)25 (C)11 (D)13 答案为C

4. 若#include后面的文件名用双引号括起来,寻找被包含文件的方式是( )。 A) 先按系统设定的标准方式查找,再在当前目录中查找 B) 先在当前目录中查找,再按系统设定的标准方式查找 C) 只在当前目录中查找 D)只按系统设定的标准方式查找 答案为B

5. 若程序中有#include \文件名\则意味着( ) 。

A)将所指文件的全部内容,在次命令行出现的这一点上,插入原程序

B)指定标准输入输出 C)宏定义一个函数 D)条件编译说明 答案为A

6. 在宏定义#define PI 3.1415926中 ,用宏名PI代替一个( ) A)单精度数 B)双精度数 C)常量 D)字符串 答案为D

7. 执行下面的程序

#define SQR(X) X*X main()

{ int a=10,k=2,m=1; a/=SQR(k+m)/SQR(k+m); printf(\ } 后,a的值是( )。

(A)10 (B)9 (C) 1 (D)0 答案为C 8. 下面程序的#include#definemain({int

输出

SUB(x,y)

结果是

( )

\ (x)*y

)

a=3,b=4;printf(\

A)12 B)16 C)15 D)13 答案为D

9. 以下程序运行后,输出结果是( )。 #include \ #define PT 5.5 #define s(x) pt*x*x main( )

{int a=1,b=2; print (“%4.lf\\n”,S(a+b));}

A)49.5 B)9.5 C)22.0 D)45.0 答案为B

10. 下列程序执行后的输出结果是( ) 。 #define MA(x) x*(x-1) main ( ) { int a=1,b=2;

printf(\

\\n\

A) 6 B) 8 C) 10 D)12 答案为B

11. 以下有关宏替换的叙述不的是( ) 。

A)宏替换不占用运行时间 B)宏名无类型 C)宏替换只是字符串替换 D)宏替换是在运行是进行的

答案为D

12. 以下描述中,的是( ) 。

A)预处理是指完成宏替换和文件包含中指定的文件的调用

B)预处理命令只能位于C源程序的开始

C)凡是以\标识的控制行都是预处理命令 D)预处理是在编译之前处理 答案为D

13. 以下程序的输出结果为( )。 #define MIN(x,y) (x)<(y)?(x):(y) main( ) {int i,j,k; i=10;j=15;

k=10*MIN(i,j);

A)15 B)100 C)10 D)150 答案为A

14. 如果有#define f(x,y) x+y 及 int a=2,b=3; 则语句:printf(\的执行结果是( ) A)36 B)25 C)11 D)13 答案为C

15. 执行下面的程序后,a的值是( )。

#define SQR(X)X*X main()

{int a=10,k=2,m=3; a/=SQR(m)/SQR(k);

printf(“%d、n”a);}

printf(\

A)10 B)1 C)5 D)0 答案为B

16. 设有以下宏定义: #define N 3

#define Y(n) (N+1*n)

则执行语句: z=2 *(N*Y(5+1));后,z的值为( )。 A)30 B)72 C)48 D)54 答案为D

17. 以下程序的输出结果是 ( )。 #define M(x,y,z) x*y+z main( )

{ int a=1,b=2, c=3; printf(\

M(a+b,b+c,

c+a));

}

A) 19 B) 17 C) 15 D) 12 答案为D

18. 以下程序的执行结果为( )。 #inlcude #define N 2 #define M N+1

#define NUM (M+1)*M/2

main( )

A)5 B)6 C)8 D)9

{pirntf(\

答案为C

19. 以下程序中,printf语句执行的次数是( )。 #define N 2 #define M N+1

#define NUM 2*M+1 main( ) {int i;

for(i=0;i<=NUM;i++) printf(\ }

A) 5 B) 6 C) 7 D) 8 答案为C 三、多选题

1. 以下说法中不的是( )。

A)宏名必须大写 B)预处理时要检查宏定义中的拼写错0 C)程序中所有与宏名相同的字符串都要进行置D)可以用#undef命令终止宏定义的作用域 E)宏定义有带参数和不带参数两种 答案为ABC

7章 数组

一、判断题

1. 如果strcmp(s1,s2)的返回值为一个负数,则表明字符串s1一定小于字符串s2。( )答案为√

2. strlen(s1)+ strlen(s2)等于strlen ( strcat (s1,s2))。( )答案为√ 二、单选题

1. 在下面关于一维数组的定义中,其中( )有语法错0。 A) int x[ ] = {1,2,3,4,5}; B) int x[5] = {0}; C) int x[ ]; D) int x[5]; 答案为C

2. 设有字符数组a,则的输入语句是( )。

(A) gets(''a''); (B) scanf(\ (C) scanf(\ (D) gets(\答案为C

3. 函数strcat(str1,str2)的功能是( )

A)将字符串str1连接到字符串str2之后 B)将字符串str2连接到字符串str1之后 C)将str2复制到字符串str1中。 D)将str1复制到字符串str2中。 答案为B

4. 若有定义:char a[30]= “china\\0\\t\\’\\\\”;则strlen(a)和sizeof(a)的值是( )。 (A) 30 30 (B) 5 30 (C) 13 30 (D) 5 13 答案为B

5. 函数调用“strcat(strcpy(str1,str2),str3)” 的功能是( )。 (A)将字符串str1复制到字符串str2后再连接到字符串str3之后 (B)将字符串str1连接到字符串str2后再复制到字符串str3之后 (C)将字符串str2复制到字符串str1后再将字符串str3连接到str1之后 (D)将字符串str2连接到字符串str1后再将str1复制到字符串str3中 答案为C

6. 定义如下变量和数组: int i;

int x[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是( )。 for(i=0;i<3;i++) printf(\ \

A)1 5 9 B)1 4 7 C)3 5 7 D)3 6 9 答案为C

7. 下述程序的输出结果是( )。 #include \void main()

{

int a[]={2,3,4,5,6,7,8,9}; int i,rt=1;

for(i=0;i<=3;i++) rt*=x[i];;

printf(\

}

A) 120 B) 720 C) 24 D) 6 答案为A

8. 调用strlen(\的结果为( )。

(A) 4 (B) 5 (C) 8 (D) 10 答案为A

9. 在C语言中引用数组元素时,数组下标允许是( ) A)只能是整型变量 B)只能是整型表达式 C)整型常量或整型表达式 D)任何类型的表达式

答案为C

10. 已知:int a[3][4], p = a; p += 6; 那么与*p的值相同的是( )。 A)*(a+6) B)*(&a[0]+6) C)*(a[1]+2) D)*(&a[0][0]+6) 答案为D

11. 若有以下说明:

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] 答案为D

12. 在C语言中,下面关于数组的描述的是( )。 (A)数组的大小是固定的,但可以有不同类型的数组元素 (B)数组的大小是可变的,但所有数组元素的类型必须相同 (C)数组的大小是固定的,所有数组元素的类型必须相同 (D)数组的大小是可变的,可以有不同的类型的数组元素 答案为C

单选题共12道 0道 错误12道 率0% 三、多选题

1. 在下列有关C语言数组的描述中,的是( )。

(A)数组是按\行优先\的原则存取的 (B)数组下标的下界均默认为0

(C)数组名本身是一个常量 (D)在C语言里不能一次引用整个数组。 (E)数组名是一个指针 答案为ABCDE

2. 在C语言中,如下说法是的( )。 (A)数组在系统内存中按其下标的顺序连续存储元素值。

(B)对于没有初始化的静态整型数组,编译系统会为其元素自动设置初值。 (C)如果有char str[]=”abc”;则sizeof(str)的值为5,strlen(str)的值为4。 (D)如果有char str[]=”abc”,*ptr; 则语句ptr=str和ptr=str++都是合法的。 (E)可把二维数组看作是特殊的一维数组,它的每个元素又是一个一维数组。 答案为ABE

3. 下列说法的是( )

A)若某自定义函数中无return语句,则该函数一定没有返回值。

B)C语言的编译系统对宏命令的处理是在对源程序中其他成份正式编译之前进行的。 C)在C语言的源程序中,注释使用越多,编译之后的可执行程序的执行效率越低。 D)如果strcmp (s1,s2)的返回值为负数,则表明字符串s1一定小于字符串s2。 E)一个C程序可由多个源文件组成。 答案为BDE

4. strcpy库函数用于复制一个字符串。若有以下定义:

char *str1=”copy”,str2[10],*str3=”hijklmn”,*str4,*str5=”abcd”; 则对strcpy库函数的调用是( )。

(A) strcpy(str2,str1) (B) strcpy(str3,str1) (C) strcpy(str4,str1) (D) strcpy(str5,str1) (E) strcpy(str1, str5) 答案为ABCDE

5. 在下列定义中,的是( ).

(A) int a[10]={12,23}; (B) char *b[10]; (C) char s[20]=”china”; (D) int n=9,aa[n]; (E) int qq[3][]={1,2,34,45,676,7,69,9}; 答案为ABC

8章 函数

一、判断题

1. 在函数定义中,形参变量有时也可以是全局变量。( )答案为× 2. 在C程序中,函数调用可以作为函数的形参。( )答案为× 3. 在C程序中,函数调用可以作为函数的实参。( )答案为√

4. 在C程序中,函数的形式参数是指针类型时,调用时对应的实参也必须是指针类型。答案为×

5. 对任一变量一旦被指定为某一确定类型后,该变量在程序运行时所占存储空间的多少和所能参加的运算类型便已确定了。( )答案为√ 6. C语言程序必须包含库函数。( )答案为×

7. 如果被定义函数的返回值是整型,可以不必进行说明。( )答案为√ 8. 一个计算机系统中的寄存器数目有限,不能定义任意多个寄存器变量。( )答案为√ 9. return语句可以带有表达式也可以不带。( )答案为√

10. 若某自定义函数中无return语句,则该函数一定没有返回值。答案为× 11. 在C语言中,变量的初始化都是在编译阶段完成的。答案为×

12. 在同一源文件中,全局变量与局部变量同名,在局部变量作用范围内,全局变量的值等于局部变量的值。答案为×

13. return语句作为函数的出口,在某一个函数体内必须唯一。( )答案为× 14. C语言程序必须包含库函数。( )答案为×

15. C语言中,任意两个函数间不能嵌套定义,但可以互相调用。( )答案为× 16. 在函数的定义中,若函数没有参数,则可以省略函数名后的括号。答案为× 17. 函数返回值的数据类型取决于return语句中表达式的数据类型。答案为× 18. 函数返回值的数据类型取决于主调函数传递过来的实参的数据类型。答案为× 19. 函数返回值的数据类型取决于函数定义时为函数指定的数据类型。答案为√ 20. 在C程序中,函数的形式参数是指针类型时,调用时对应的实参也必须是地址量。答案为√

21. C程序中,函数调用时用数组名作为函数的实参,则传递给形参的是整个数组。答案为×

22. C程序中,函数调用时用数组名作为函数的实参,则传递给形参的是数组的首元素值。答案为×

23. C程序中,函数调用时用数组名作为函数的实参,则传递给形参的是数组的首地址值。答案为√

24. 求n!既可以用递归的方式,也可以用递推的方式。 ( )答案为√

25. 递归函数在实现过程中,要使用“堆栈”这种数据结构来保存递归调用过程中的值。答案为√

26. 在C语言中,所有函数之间都可以相互调用。答案为×

27. 一个C程序无论有多少个源程序文件组成,在其中一个源程序文件中定义的全局变量的作用域默认为整个C程序。答案为×

28. 一个C程序无论有多少个源程序文件组成,在其中一个源程序文件中定义的全局变量的作用域默认为其所在的源程序文件。答案为√

29. 在C程序的主函数main中定义的变量就是全局变量。答案为× 30. 在C程序的主函数main中定义的变量也是局部变量。答案为√ 31. 在函数定义中,形参变量是局部变量。答案为√

32. 在函数定义中,形参变量可以是静态变量。答案为× 33. 在一个函数定义中,只能有一个return语句。答案为×

34. 在一个函数定义中,可以根据需要使用多个return语句。答案为√ 35. 在C程序中,函数可以嵌套定义,也可以嵌套调用。答案为× 36. 在C程序中,函数不能嵌套定义,但可以嵌套调用。答案为√ 37. 在C程序中,函数既不能嵌套定义,也不能嵌套调用。答案为× 38. 在C程序中,函数调用只能作为单独语句出现。答案为× 39. 在C程序中,函数调用不能作为单独语句出现。答案为× 40. 在C程序中,函数调用只能出现在表达式语句中。答案为×

41. 在C程序中,函数调用不能出现在表达式语句中。答案为×

42. 在C程序中,函数调用既可以出现在表达式语句中,也可以作为单独的语句出现。答案为√

43. 在C函数中,形参可以是变量、常量或表达式。答案为×

44. 在C程序中,实参可以是变量、常量或表达式。答案为√

45. C语言规定,函数调用时,若形参和实参都是简单变量,则它们之间的数据传递方式是双向值传递。答案为×

46. C语言规定,函数调用时,若形参和实参都是简单变量,则它们之间的数据传递方式是单向值传递。答案为√ 二、单选题

1. C语言中,以下叙述中错0的是( )。

A) 主函数中定义的变量是全局变量 B) 同一程序中,全局变量和局部变量可以同名 C) 全局变量的作用域从定义处开始到本源程序文件结束 D) 局部变量的作用域被限定在其所定义的局部范围中 答案为A

2. C语言中,以下叙述的是( )。

A) 函数不能嵌套定义但可以嵌套调用 B) 函数可以嵌套定义也可以嵌套调用 C) 函数可以嵌套定义但不能嵌套调用 D) 函数不能嵌套定义也不能嵌套调用 答案为A

3. C语言中,函数调用时若实参是数组名,则被调函数对应形参( )。 A) 可以是相应类型简单变量 B) 必须是相应类型数组名 C) 可以是相应类型数组名 D) 必须是相应类型的指针变量 答案为C

4. C语言中,函数调用时若实参是数组名,则被调函数对应形参( )。 A) 可以是相应类型简单变量 B) 必须是相应类型的指针变量 C) 必须是相应类型数组名 D) 可以是相应类型的指针变量 答案为D

5. 在下面C语言的函数说明语句中,的是( )。

A) int fun(int , int); B) int fun(int x,y); C) int fun(x,y); D)int fun(int x; int y); 答案为A

6. 在C程序中,如果限定一个局部变量只能在所定义的范围中起作用,那么这个变量的存储类型( )。

A) 只能是auto B) 只能是extern C) 可以是auto或static D) 可以是extern或static 答案为C

7. 在C语言中,若定义函数时未说明函数的类型,则该函数的数据类型为( )。 A) int B) float C) char D) double 答案为A

8. 在C语言中,函数默认的存储类型为( )。 A) auto B) register C) static D) extern 答案为D

9. C语言中规定,简单变量做实参时,它和对应形参之间的数据传递方式是( )。

(A)地址传递 (B)单向值传递 (C)有实参传给形参,再由形参传回给实参 (D)由用户指定传递方式

答案为B

10. 已知函数的调用形式: fread ( buffer , size , count , fp ) ; 其中buffer代表的是( )。

(A)一个整型变量,代表要读入的数据项总数 (B)一个文件指针,指向要读的文件

(C)一个指针,指向要读入数据的存放地址 (D)一个存储区, 存放要读的数据项 答案为C

11. 如果在C程序中有main(int argc,char *argv[]),那么( )是指命令行中的参数个数。

本文来源:https://www.bwwdw.com/article/80k7.html

Top