资源描述
C语言单选填空练习
一、单选题
1. (1) 由C语言编写的代码程序( )
A. 可直接执行 B. 是一个源程序
C. 通过编译即可执行 D. 通过编译解释才干执行
(2) C语言源程序的扩展名为( )
A. .obj B. .c
C. .exe D. .cpp
2. (1) 按照C语言规定的用户标记符命名规则,不能出现在标记符中的是( )
A. 大写字母 B. 中划线
C. 数字字符 D. 下划线
(2) 下列选项中,不能用作标记符的是( )
A. _1234_ B. _1_2
C. int_2_ D. 2_int_
(3) 以下选项中合法的用户标记符是( )
A. long B. _2Test
C. 3Dmax D. A.dat
(4) 以下不能定义为用户标记符的是( )
A. Main B. _0
C. _int D. sizeof
(5) 下列定义变量的语句错误的是( )
A. int _int; B. double int_;
C. char For; D. float US$;
(6) 以下选项中不合法的标记符是( )
A. print B. FOR
C. &a D. _00
(7) 以下不合法的用户标记符是( )
A.j2_KEY B. Double
C. 4d D. _8_
(8) 以下C语言用户标记符,不合法的是( )
A. _1 B. AaBc
C. a_b D. a-b
3. (1) 在C语言中,整型数据分为( )
A. 二进制、八进制、十进制 B. 二进制、十进制、十六进制
C. 八进制、十进制、十六进制 D. 二进制、八进制、十进制、十六进制
(2) C源程序不能表达的进制为( )
A. 八进制 B. 二进制
C. 十六进制 D. 十进制
4. (1) 在C语言中,合法的实型常数是( )
A. 5E2.0 B. E-3
C. .2E0 D. 1.3E
(2) 在C语言中,合法的实型常数是( )
A. 1.2E0.5 B. 3.14159E
C. 5E-3 D. E15
(3) 以下选项中,不能作为合法常量的是( )
A. 1.234e04 B. 1.234e0.4
C. 1.234e+4 D. 1.234e0
(4) 以下不合法的数值常量是( )
A. 011 B. le1
C. 8.0E0.5 D. 0xabcd
(5) 以下选项中,能用作数据常量的是( )
A. o115 B. 0118
C. 1.5e1.5 D. 115
(6) 以下选项中,合法的一组C语言数值常量是( )
A. 028 B. 12. C. .177 D. 0x8A
.5e-3 OXa23 4e1.5 10,000
-0xf 4.5e0 Oabc 3.e5
5. (1) 在C语言中,非法的字符常量是( )
A.‘\t’ B.‘\17’
C. "\n" D.‘\xaa’
(2) 以下不合法的字符常量是( )
A.‘\018’ B.‘\"’
C.‘\\’ D.‘\xcc’
(3) 以下选项不属于字符常量的是( )
A. 'C' B. "C"
C. '\xCC' D. '\072'
(4) 以下选项中,非法的字符常量是
A.‘\101’ B.‘\65’
C.‘\xff’ D.‘\019’
6. 在C语言中,以下关于运算符叙述错误的是( )
A. 在C语言中,逗号运算符的优先级最低
B. 在C语言中,赋值运算符自右向左运算
C. 在C语言中,+、-、*、/、%是算术运算符,可用于整型和实型数的运算
D. 在C语言中,++、--运算符可以改变变量的值
7. 下列运算符中优先级最高的运算符是( )( )
A. <= B. = C. % D. &&
A. == B. / C. = D. >=
8. (1) 以下程序的输出结果是( )
main()
{ int a=3,b=4; printf("%d\n",a<=b); }
A. 3 B. 4
C. 1 D. 0
(2) 在C语言中,表达式10!=9的值为( )
A. 0 B. False
C. 1 D. True
9. 在C语言中,以下非法的表达式是( )
A. 0<=x<=100 B. i=j==0
C. (char)(65+3) D. x+1=x+1
10. 在C语言中,以下非法的赋值语句是( )
A. j++; B. ++(i+1);
C. x=j>0; D. k=i==j;
11. (1) 表达式3.6-5/2+1.2+5%2的值是( )
A. 4.3 B. 4.8
C. 3.3 D. 3.8
(2) 若有定义语句:int x=12,y=8,z;,在其后执行语句z=0.9+x/y;,则z的值为( )
A. 1.9 B. 1
C. 2 D. 2.4
12. (1) 设有语句:int a=3;则执行了语句a+=a-=a*a;变量a的值是( )
A. 3 B. 0
C. 9 D. -12
(2) 设有语句:int x=10;则执行了语句x+=x-=x-x;变量x的值是( )
A. 10 B. 20
C. 40 D. 30
(3) 设有语句:int a=0;则执行语句 a+=(a=8);变量a的值是( )
A. 0 B. 8
C. 16 D. 24
13. 以下程序的输出结果是( )( )( )( )( )
⑴ main()
{ int i=10,j=1;
printf("%d,%d\n",i--,++j);}
A. 9,2 B. 10,2
C. 9,1 D. 10,1
⑵ main()
{ int a=12,b=12;
printf("%d %d\n" ,--a,++b);}
A. 10 10 B. 12 12
C. 11 10 D. 11 13
⑶ main()
{ int x=023; printf("%d\n",--x);}
A. 17 B. 18
C. 23 D. 24
⑷ main()
{ int x=10,y=10;
printf("%d %d\n",x--,--y);}
A. 10 10 B. 9 9
C. 9 10 D. 10 9
⑸ main()
{ int i=010,j=10;
printf("%d,%d\n",++i,j--);}
A. 11,10 B. 9,10
C. 010,9 D. 10,9
14. 以下程序的输出结果是( )
main()
{ int x=100,y=200;
printf("%d\n",(x,y)); }
A. 200 B. 100
C. 100 200 D. 200 100
15. 以下程序的输出结果是( )
main()
{ int x=10,y=3,z;
printf("%d\n",z=(x%y,x/y)); }
A. 1 B. 0
C. 4 D. 3
16. 设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为( )
A. 1 B. 2
C. 3 D. 4
17. 设int x=-1;执行表达式++x||++x||++x||++x,x的值是( )
A. 0 B. 1
C. 2 D. 4
18. 以下程序的输出结果是
(1) main(){ int k=11; printf("k=%d,k=%o,k=%x\n",k,k,k);}( )
A. k=11,k=12,k=11 B. k=11,k=13,k=13
C. k=11,k=013,k=0xb D. k=11,k=13,k=b
(2) main(){ int k=17; printf("%d,%o,%x\n",k,k,k); }( )
A. 17,021,0x11 B. 17,17,17
C. 17,0x11,021 D. 17,21,11
19. (1) 设变量均已对的定义,若要通过scanf("%d%c%d%c",&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。以下所示的输入形式中正
确的是(注:□代表空格字符)( )
A. 10□X□20□Y<回车> B. 10□X20□Y<回车>
C. 10□X<回车> D. 10X<回车>
20□Y<回车> 20Y<回车>
(2) 若有定义:int a,b;,通过语句scanf("%d,%d",&a,&b);,能把整数3赋给变量a,5赋给变量b的
输入数据是( )
A. 3 5 B. 3,5
C. 3;5 D. 35
20. 设a=1,b=2,c=3,d=4,则表达式a<b?a:c<d?a:d的结果是( )
A. 4 B. 3
C. 2 D. 1
21. 以下叙述中对的的是( )
A. 构成C程序的基本单位是函数 B. 可以在一个函数中定义另一个函数
C. main()函数必须放在其它函数之前 D. 所有被调用函数一定要在调用之前进行定义
22. 以下说法中对的的是( )
A. C语言程序总是从第一个函数开始执行
B. 在C语言程序中,要调用的函数必须在main()函数中定义
C. C语言程序总是从main()函数开始执行
D. C语言程序中的main()函数必须放在程序的开始部分
23. 以下数组定义中错误的是( )
A. int x[][3]={0}; B. int x[2][3]={{1,2},{3,4},{5,6}};
C. int x[][3]={{1,2,3},{4,5,6}}; D. int x[2][3]={1,2,3,4,5,6};
24. 以下能对的定义二维数组的是( )
A. int a[][3]; B. int a[][3]={2*3};
C. int a[][3]={}; D. int a[2][3]={{1},{2},{3,4}};
25. 在C语言中,对于以下定义对的的叙述为( )
char x[]="abcdefg";
char y[]={'a','b','c','d','e','f','g'};
A. 数组x和数组y等价 B. 数组x和数组y的长度相同
C. 数组x的长度大于数组y的长度 D. 数组x的长度小于数组y的长度
26. 以下不能对的进行字符串赋初值的语句是( )
A. char str[5]= "good!"; B. char str[]="good!";
B. char *str="good!"; D. char str[5]={‘g’,‘o’,‘o’,‘d’};
27. (1) 以下程序的输出结果是( )
main()
{ char str[]="ABCD",*p=str;
printf("%d\n",*(p+4)); }
A. 68 B. 'D'
C. 0 D. '0'
(2) 以下程序的输出结果是( )
main()
{ char str[]="aeiou",*p=str;
printf("%c\n",*p+4)); }
A. o B. u
C. e D. f
28. (1) 以下程序的输出结果是( )
main()
{ char *p="abcde\0fghijk\0";
printf("%d\n",strlen(p)); }
A. 5 B. 15
C. 6 D. 16
(2) 以下程序的输出结果是( )
main()
{ char s[]="\0";
printf("%d\n",strlen(s));}
A. 8 B. 9
C. 10 D. 11
29. int a[10],*p=a;
不能代表a[1]地址的是( )
A. p+1 B. a+1
C. ++a D. ++p
30. 设有以下说明语句,则下面的叙述不对的的是( )
struct ex
{ char a;
int b;
float c;
} example;
A. struct 是结构体关键字 B. example是结构体类型名
C. a、b、c是结构体成员名 D. struct ex是结构体类型
二、填空题
1. C语言解决系统必须执行的环节依次为 、链接。
2. 在C语言中对源程序进行编译生成的目的文献的扩展名是 。
3. C程序设计的三种基本结构是:选择结构、循环结构和 。
4. 一个C语言程序的基本组成单位是 。
5. 一个C语言源程序由若干个 组成。
6. C程序的执行是从本程序的main函数开始,到本程序的 函数结束。
7. C语言标记符的第一个字符必须为下划线或者 。
8. 在C语言中,整型常量的书写形式涉及:八进制、十进制和 进制。
9. 在C语言中,运算符的操作数必须是整型的是 。
10. 设int a=9,b=6,c;,执行语句c=a/b+0.8;后c的值是 。
11. 设char w;int x;float y;double z;,则表达式w*x+z-y的值的类型是 。
12. 设int a;float b;char c;long d;double e;,则表达式a/c-b+d-e值的类型是 。
13. 若b是int型变量,则表达式b=25/3%3的值为 。
14. 设int x=7,y=3,则表达式x%y+x/y的值是 。
15. 设float x=23.65;, 则执行语句printf("%d\n",(int)(x+0.5));后输出结果是 。
16. 若a,b和c均是int型变量,则计算表达式a=(b=4)+(c=2)后,a值为 。
17. 设int a=37;,则执行语句a+=a%=9;后,变量a的值是 。
18. 设int j=5;,则执行语句j+=j-=j*j;后,变量j的值是 。
19. 设int a=2;,则执行a+=a*=15;后,变量a的值是 。
20. 在C语言中,优先级最低的运算符是 。
21. 若a是int型变量,则表达式(a=4*5,a*2),a+6的值为 。
22. 设int a,b,c;则执行a=(b=3,c=5,b=10);后变量a的值是 。
23. 设int a=7,b=8;则printf("%d,%d\n",(a+b,a),(b,a+b));的输出结果是 。
24. 设int a=12;,语句printf("%d\n",(a/3,a%3,a/10>0));的输出结果是 。
25. 若定义了int a=1;,则执行printf("%d\n",((a=a+4,a+5),a+6));语句的输出结果是 。
26. 执行语句 y=10;x=y++;后变量x的值为 。
27. 设int x=10,y=3;,执行printf("%d,%d\n",x--,++y);后的输出结果是 。
28. 设int x=011; printf("%d\n",++x); 后的输出结果是 。
29. 设int a=010,b=10;
则语句printf("%d,%d\n",a++,--b);的结果为 。
30. 设int x=14;,则表达式x++%-5的值为 。
31. 运用运算符--,下列两条语句b=5+a;a-=1;
可以仅由一条语句实现,这条语句是 。
32. 设宏定义#define K 2+3,执行printf("%d\n",K/K);后的输出结果是 。
33. 设宏定义#define CIR(r) r*r,执行printf("%d\n",CIR(1)/CIR(2));后的输出结果是 。
34. 设宏定义#define F(x) x*x,执行printf("%d\n",F(3+4));后的输出结果是 。
35. 设有语句:int a,b; scanf("a=%d,b=%d",&a,&b);
若要为变量a和b输入数值1和2,对的的输入形式应当是 。
36. 设有语句:char ch1,ch2; scanf("%c%c",&ch1,&ch2);
若要为变量ch1和ch2输入字符A和B,对的的输入形式应当是 。
37. 在C语言中,要通过语句scanf("%d,%d,%d",&a,&b,&c);,
给变量a赋值1、给变量b赋值2、给变量c赋值3,对的的输入形式应当是 。
38. 设有语句:int a=5,b=4,c=2;,则表达式a>b!=c的值为 。
39. 对的表达数学关系式0≤x<20的C语言表达式是 。
40. 设x为整型变量,则描述“x是偶数”的表达式 。
41. 设int n;,“n的值能同时被3和5整除”的逻辑表达式是 。
42. 设int m,n;“n是小于整数m的偶数”的C语言表达式是 。
43. 判断char型变量ch是否为小写字母的对的表达式是 。
44. 设char ch;,判断ch为数字字符的逻辑表达式 。
45. 设int a=2,b=3,c=4;,则表达式a>b&&b<c||b的值是 。
46. 在C语言中,若int a=0,b;则执行“a=1?b=0:b=1;”后,b的值为 。
47. 在C语言中,若x=3,y=2,z=1,则表达式(x+=z)<y?x++:y++的值为 。
48. 若定义了int x=100;,则表达式x++>100?x+20:x+10的值是 。
49. 设int x=-9,y;,则执行y=x>=0?x:-x;后y的值是 。
50. 设int a=1,b=2,c=3,d=4,f;,执行语句f=(a!=b)?c++:d++;后f的值是 。
51. 设int x=1,y=3,z;,执行z=x>y?++x:y++;后,z的值是 。
52. int a=5,b=4,c=6; printf("%d\n",a>b?(a>c?a:c):(b));的结果是 。
53. 执行printf("%d\n",1+!2+(3<=4)+5/6+7%8);后的输出结果是 。
54. 设int a=1,b=2,c=3;,执行表达式(a>b)&&(c=1)后c的值是 。
55. 设int a=-3,b=7,c=-1;则执行(a==0)&&(a=a%b<b/c);后变量a的值是 。
56. 设int y;执行表达式(y=4)||(y=5)||(y=6)后,y的值是 。
57. 设int m=0;,执行表达式m||(m=2)||(m=3)||(m=4)后,m的值是 。
58. 设int a=0,b=0,c=2,d=4;,则执行(c=a==b)||(d=b==a);后变量d的值是 。
59. 设int a=1,b=2,m=2,n=2;,执行表达式(m=a<b)||++n后,n的值是 。
60. 下列程序段的输出结果是 。
int a=5,b=0,c=0;
if(a=b+c) printf("***\n");
else printf("$$$\n");
61. 设for(k=0;k<0;k++) ++k;则该循环共执行 次。
62. 设int n;,执行for(n=0;n==0;n++) n=0;后,循环体被执行的次数是 。
63. 执行语句for(i=10;i>0;i--);后,变量i的值是 。
64. 执行下列程序段后,输出结果是____________。
int x=3;
do printf("%3d",x-=2); while(!(--x));
65. 设int a=11,b=2;,执行下述程序段后,输出结果为 。
do a/=b++; while(a>b);
printf("%d,%d\n",a,b);
66. 可以将被调函数中获得的值返回给主调函数的语句是 。
67. C语言规定简朴变量做实参的时候,它和相应形参之间的数据传递方式是 。
68. 若函数调用语句为fun(a,b,fun(a+b,a-b,b));,则函数fun的参数个数是 。
69. 若函数调用语句为func(rec1, rec2+rec3, (rec4, rec5)); 则具有的实参个数是 。
70. 若函数内定义变量的存储类别是static,该变量被称为局部 变量。
71. 设int a[10];则数组a的首元素是 。
72. 若有C语句:int a[][3]={1,2,3,4,5,6,7,8};则数组a第一维的大小为 。
73. 设double y[4][5];,则数组y中元素的个数是 。
74. 设int a[][4]={l,2,3,4,5,6,7};,则a[1][3]的值是 。
75. 设int a[3][4]={{1,2,5,3},{2,4,7,9},{3,6,5,8}};则表达式a[1][2]+a[2][3]的值是 。
76. printf("%d\n",NULL);的结果为 。
77. 设int a=10,*p=&a;,则执行printf("%d\n",*p+a);的结果是 。
78. 设int a,*p=&a;,通过指针变量p为a输入值的scanf语句是 。
79. 设char *strp="China";,执行printf("%s\n",strp+3);后的输出结果是 。
80. 设char a[20]={"switch"},*p=a;,则printf("%c\n",*(p+2));的结果是 。
81. 若定义函数时类型缺省,则该函数默认的类型是 。
82. 设char *p="abcdABCD";, 则执行printf("%s",p+4); 后输出结果是 。
83. 设有语句char s[]="World\0Wide\0Web";
则执行语句printf("%s\n",s);后的输出结果是 。
84. 设char c[5]={'a','b','\0','c','\0'};则printf("%s\n",c);的输出是 。
85. 若定义了char ch[]={"abc\0def"},*p=ch;则执行printf("%c",*p+4);语句的输出结果是 。
86. 设char s[3]="AB",*p=s;,则*(p+2)的值是 。
87. 在C语句中“char s[8]="glister";char *p=s;”,则*(p+4)的值为 。
88. 设char s[]="hello!";,则数组s有 个元素。
89. 设char s[]={"apple"};,则执行printf("%d\n",strlen(s));后输出的值是 。
90. 执行printf("%d\n",strlen("ABCD\t\\\123"));后输出的值是 。
91. 执行语句printf("%d\n",strlen("a\n\x41"));后,输出结果是 。
92. 设char s[]="1234567";,执行printf("%d,%d\n", strlen(s),sizeof(s)); 后输出的结果是 。
93. 设char str1[10]="ABCDE",str2[10]="XYZ";则执行语句:
printf("%d\n",strlen(strcpy(str1,str2)));后的输出是 。
94. 设int a[]={1,2,3,4,5,6,7,8},*s=a;,则*(s+1)的值是 。
95. 设 int a[10]={1,2,3};则*(a+3)的值是 。
96. 在C语言中,当调用函数时,实参是一个数组名,则函数传送的是数组的 。
97. 设int a[5]={l,3,5,7,9},*p=&a[2];,则++(*p)的值是 。
98. 在C语言中,声明结构体类型的关键字是 。
99. 设struct student
{ char name[20];
char sex; } stu;
语句printf("%d\n",sizeof(stu));的输出结果是 。
100. 设struct student
{ int no;
char name[12];
char sex;
float score[4]; } stu1;
在程序执行时,系统为stu1分派 个字节的内存空间。
附录一:C语言的关键字(保存字)
1. auto:声明自动变量
2. short:声明短整型变量或函数
3. int: 声明整型变量或函数
4. long:声明长整型变量或函数
5. float:声明浮点型变量或函数
6. double:声明双精度变量或函数
7. char:声明字符型变量或函数
8. struct:声明结构体变量或函数
9. union:声明共用数据类型
10. enum:声明枚举类型
11. typedef:用以给数据类型取别名
12. const:声明只读变量
13. unsigned:声明无符号类型变量或函数
14. signed:声明有符号类型变量或函数
15. extern:声明变量是在其他文献中声明
16. register:声明寄存器变量
17. static:声明静态变量
18. volatile:说明变量在程序执行中被隐含地改变
19. void:声明函数无返回值或无参数
20. if:条件语句
21. else:条件语句否认分支
22. switch :用于开关语句
23. case:开关语句分支
24. for:一种循环语句
25. do :循环语句的循环体
26. while :循环语句的循环条件
27. goto:无条件跳转语句
28. continue:结束当前循环,开始下一轮循环
29. break:跳出当前循环
30. default:开关语句中的“其他”分支
31. sizeof:计算数据类型长度
32. return :子程序返回语句
附录二:运算符的优先级和结合性
优先级
运算符
运算符功能
运算类型
最高
15
( )
[ ]
->
.
圆括号、函数参数表
数组元素下标
指向结构体成员
结构体成员
14
!
~
++、--
+
-
*
&
(类型名)
sizeof
逻辑非
按位取反
自加1、自减1
求正
求负
间接运算符
求地址运算符
强制类型转换
求所占字节数
单目运算
13
*、/、%
乘、除、整数求余
双目算术运算
12
+、-
加、减
双目算术运算
11
<<、>>
左移、右移
移位运算
10
<、<=、>、>=
小于、小于等于、大于、大于等于
关系运算
9
==、!=
等于、不等
关系运算
8
&
按位与
位运算
优先级
运算符
运算符功能
运算类型
7
^
按位异或
位运算
6
|
按位或
位运算
5
&&
逻辑与
逻辑运算
4
||
逻辑或
逻辑运算
3
?:
条件运算
三目运算
2
=、+=、-=、*=、
/=、%=、&=、^=、
|=、<<=、>>=
赋值、运算且赋值
双目运算
最低1
,
顺序求值
顺序运算
其中,2、3、14的结合性为从右至左,其余为从左至右。
展开阅读全文