- C语言程序设计习题与实验指导
- 孟东霞主编
- 2904字
- 2025-04-02 16:22:11
2.3 测试题
一、单项选择题
1. 以下选项中正确的整型常量是( )。
A. 5.
B. −10
C. 1.000
D. 4/5
2. 不合法的八进制数是( )。
A. 0
B. 028
C. 07700
D. 01
3. 不合法的十六进制数是( )。
A. oxff
B. 0Xabc
C. 0x11
D. 0x19
4. 以下选项中不正确的实型常量是( )。
A. 2.670E−1
B. 0.05e+1.5
C. −77.77
D. 456e−2
5. 与十进制数97不等值的字符常量是( )。
A. 'a'
B. '\101'
C. '\x61'
D. '\141'
6. 以下选项中合法的用户标识符是( )。
A. wb−1
B. file
C. Main
D. PRINTF
7. 可在C程序中用作标识符的一组标识符是( )。

8. C语言中的简单数据类型有( )。
A. 整型、实型、逻辑型
B. 整型、实型、字符型
C. 整型、字符型、逻辑型
D. 整型、实型、逻辑型、字符型
9. C语言中,字符型(char)数据在内存中的存储形式是( )。
A. 反码
B. 补码
C. EBCDIC码
D. ASCII码
10. C语言中不合法的字符常量是( )。
A. '\xff '
B. '\65'
C. '&'
D. '\028'
11. C语言中不合法的字符串常量是( )。
A. "\121"
B. 'y='
C. "\n\n"
D. "ABCD\x6d"
12. 设有语句char a='\172';,则变量a( )。
A. 包含1个字符
B. 包含2个字符
C. 包含3个字符
D. 说明不合法
13. Turbo C中int类型变量所占字节数是( )。
A. 1
B. 2
C. 3
D. 4
14. C语言中运算对象必须是整型的运算符是( )。
A. %
B. /
C. *
D. +
15. 若变量已正确定义并赋值,符合C语言语法的表达式是( )。
A. a=a+7;
B. a=7+b+c,a++
C. int(12.3%4)
D. a=a+7=c+b
16. 以下非法的赋值语句是( )。
A. n=(i=2,++i);
B. j++;
C. ++(i+1);
D. x=j>0;
17. 设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是( )。
A. 6.500000
B. 6
C. 5.500000
D. 6.000000
18. 已有定义:int x=3, y=4, z=5;,则表达式!(x+y)+z−1&&y+z/2的值是( )。
A. 6
B. 0
C. 2
D. 1
19. 若有以下程序段,c3中的值是( )。
int c1=1, c2=2, c3; c3=c1/c2;
A. 0
B. 1/2
C. 0.5
D. 1
20. 以下叙述中正确的是( )。
A. a是实型变量,C允许以下赋值a=10,因此可以这样说,实型变量中允许存放整型值
B. 在赋值表达式中,赋值号右边既可以是变量,也可以是任意表达式
C. 执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值变为0
D. 已有a=3, b=5。当执行了表达式a=b、b=a后,则a中的值为5,b中的值为3
21. 若a、b、c、d都是int类型变量且初值为0,以下选项中不正确的赋值语句是( )。
A. a=b=c=100;
B. d++;
C. c+b;
D. d=(c=22)−(b++);
22. 在以下选项中,不是C语句的是( )。
A. {int i; i++; printf("%d\n", i); }
B. ;
C. a=5, c=10
D. { ; }
23. 以下合法的C语言赋值语句是( )。
A. a=b=58
B. k=int(a+b);
C. a=58, b=58
D. −−i;
24. 以下程序的输出结果是( )。
void main() { int x=10, y=3; printf("%d\ n", y=x/y ); return 0; }
A. 0
B. 1
C. 3
D. 不确定的值
25. 若已定义变量为int类型,要给a、b、c输入数据,以下输入语句正确的是( )。
A. read(a,b,c)
B. scanf("%d%d%d", a,b,c);
C. scanf("%D%D%D", &a,&b,&C);
D. scanf("%d%d%d", &a,&b,&c);
26. 若已定义变量为float类型,要将a赋值10、b赋值22、c赋值33,以下不正确的输入形式是( )。
scanf("%f %f %f", &a, &b, &c);

27. 已知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);
28. 若有以下程序:
void main() { int k=2, i=2, m; m=(k+=i*=k); printf ("%d, %d\ n", m,i); return 0; }
执行后的输出结果是( )。
A. 8, 6
B. 8, 3
C. 6, 4
D. 7,4
29. 若变量已正确定义,要将a和b中的值进行交换,下面不正确的语句是( )。
A. a=a+b, b=a−b, a=a−b;
B. t=a; a=b; b=t;
C. a=t; t=b; b=a;
D. t=b; b=a; a=t;
30. 有以下程序:
void main() { int i=10, j=1; printf("%d,%d \ n", i −−, ++j); return 0; }
执行后输出结果是( )。
A. 9, 2
B. 10, 2
C. 9, 1
D. 10, 1
31. 若变量已正确定义,以下程序段的输出结果是( )。
x=5.16894; printf("%f\ n", (int)(x*1000+0 . 5)/(float)1000);
A. 输出格式说明与输出项不匹配,输出无定值
B. 5.17000
C. 5.168000
D. 5.169000
32. 若有以下程序段,其输出结果是( )。
int a=0, b=0, c=0; c=( a−=a−5), (a=b, b+3); printf("%d, %d, %d\ n", a,b,c);
A. 0, 0, −10
B. 0, 0, 5
C. −10, 3, −10
D. 3, 3, −10
33. 当运行以下程序时,在键盘上从第一列开始,输入9876543210<回车>,则程序输出的结果是( )。
void main() { int a; float b, c; scanf("%2d%3f%4f", &a, &b, &c); printf(" \ na=%d, b=%f, c=%f\ n", a, b, c); }
A. a=98, b=765, c=4321
B. a=10, b=432, c=8765
C. a=98, b=765.000000, c=4321.000000
D. a=98, b=765.0, c=4321.0
34. 以下程序的输出结果是( )。
void main() { int a=2, b=5; printf("a=%%d, b=%%d\ n", a, b); reture 0; }
A. a=%2, b=%5
B. a=2, b=5
C. a=%%d, b=%%d
D. a=%d, b=%d
35. 若int类型占两个字节,则以下程序段的输出是( )。
int a= −1; printf("%d, %u\ n", a, a);
A. −1, −1
B. −1, 32767
C. −1, 32768
D. −1, 65535
36. 以下程序段的输出是( )。
int x=496; printf("*%−06d*\ n", x);
A. *496 *
B. * 496*
C. *000496*
D. 输出格式不合法
37. 以下程序段的输出是( )。
float a=3.1415; printf("|%6.0f|\ n", a);
A. |3.1415|
B. | 3.0|
C. | 3|
D. | 3.|
38. 以下程序段的输出是( )。
printf("|%10.5f| \ n", 12345.678);
A. |2345.67800|
B. |12345.6780|
C. |12345.67800|
D. |12345.678|
39. 若从终端输入以下数据,要给变量c赋值283.19,则正确的输入语句是( )。
A. scanf("%f", c);
B. scanf("%8.4f", &c);
C. scanf("%6.2f", &c);
D. scanf("%8f", &c);
40. 若变量已正确声明,要给a赋值3.12、给b赋值9.0,则正确的输入形式是( )。
scanf("a=%f, b=%f", &a, &b);
A. 3.12 9.0
B. a=3.12b=9
C. a=3.12, b=9.0
D. a=3.12 , b=9
41. 以下程序的输出结果是( )。
#include <math.h> void main() { double a= −3.0, b=2; printf("%3.0f %3.0f\ n", pow(b,fabs(a)), pow(fabs(a), b) ); }
A. 9 8
B. 8 9
C. 6 6
D. 以上三个都不对
42. 以下程序的输出结果是( )。
void main() { char c1='A', c2 = 'Y'; printf("%d, %d\ n", c1, c2); }
A. 因输出格式不合法,无法正确输出
B. 65, 90
C. A, Y
43. 以下程序段的输出结果是( )。
D. 65, 89
void main() { char ch1, ch2; ch1 = 'A' + '5' − '3'; ch2 = 'A' + '5' − '3'; printf("%d, %c\ n", ch1,ch2); }
A. 67, C
B. B, C
C. C, D
D. 不确定的值
44. 若变量已正确声明,要求用以下语句给c1赋值字符%、给c2赋值字符#、给a赋值2.0、给b赋值4.0,则正确的输入形式是( )。
scanf("%f%c%f%c", &a, &c1, &b, &c2);
A. 2.0 % 4.0 #
B. 2.0%4.0#
C. 2 % 4#
D. 2 %4 #
45. 下列程序段的输出结果是( )。
int a=1234; float b=123.456; double c=12345.54321; printf ("%2d,%2.1f,%2.1f ", a,b,c);
A. 无输出
C. 1234,123.5,12345.5
B. 12,123.5,12345.5
D. 1234,123.4,1234.5
二、填空题
1. 若k为int型变量且赋值11,请写出运算k++后表达式的值______和变量的值______。
2. 若x为double型变量,请写出运算x=3.2,++x后表达式的值______和变量的值______。
3. 在C语言程序中,用关键字______定义基本整型变量,用关键字______定义单精度实型变量,用关键字______定义双精度实型变量。
4. 把a1、a2定义成单精度实型变量,并赋初值1的说明语句是______。
5. C程序中定义的变量,代表内存中的一组______。
6. 表达式3.5+1/2的计算结果是______。
7. 对于数学式,写出3个等价的C语言表达式是:______、______、______。
8. 表达式s=10应当读作“______”。
9. 计算机中内存储器的最小单位称为______,其中能容纳的数是______。
10. 以下程序的输出结果是______。
void main() { int a=0; a+= ( a=8 ); printf ("%d \ n", a ); }
11. 通常1个字节包含______个二进制位。在1个字节中能存放的最大十进制整数是______,它的二进制数的形式是______;最小十进制整数是______,它的二进制形式是______。
12. 当计算机用两个字节存放1个整数时,其中能存放的最大十进制整数是______、最小十进制整数是______,它们的二进制形式是______、______。
13. 若有以下定义,请写出以下程序段中输出语句执行后的结果:
(1)_______(2)_______(3)______。
int i=-200, j=2500; printf(" (1) %d %d\ n ", i, j); printf(" (2) i=%d, j=%d\ n", i, j); printf(" (3) i=%d\ n j=%d \ n", i, j);
14. 变量i、j、k已定义为int类型并赋初值0,用以下语句输入时:
scanf("%d", &i); scanf("%d", &j); scanf("%d", &k);
当执行第一条输入语句时从键盘输入:
12.3 <回车>
则变量i、j、k的值分别是______、______、______。
15. 复合语句在语法上被认为是______;空语句的形式是______。
16. 以下程序段,要求通过scanf语句给变量赋值,然后输出变量的值。写出运行时给k输入100,给a输入25.81,给x输入1.89234时的3种可能的输入形式______、______、______。
int k; float a; double x; scanf("%d%f%lf", &k, &a, &x); printf("k=%d, a=%f, x=%f \ n", k, a, x);
17. 以下程序段的输出结果是______。
int x=0177; printf("x=%3d, x=%6d, x=%6o, x=%6x, x=%6u\ n", x, x, x, x, x);
18. 以下程序段的输出结果是______。
double a=513.789215; printf("a=%8.6f, a=%8.2f, a=%14.8f, a=%14.8lf\n", a,a,a,a);
19. 若要通过以下语句给a、b、c、d分别输入字符A、B、C、D,给w、x、y、z分别输入10、20、30、40,正确的输入形式是______。(请用<CR>代表【Enter】键)
scanf("%d%c%d%c%d%c%d%c", &w, &a, &x,&b, &y, &c, &z, &d);
20. 若有以下说明和输入语句,要求给c1、c2输入字符A和B,给a1、a2输入7.29和101.298,从键盘正确输入数据的形式是______。
char c1, c2; float a1, a2; scanf("%f%f", &a1, &a2); scanf("%c%c", &c1, &c2);
21. 若有以下说明和输入语句,要求给c1、c2、c3输入字符A、B和C,请写出从键盘正确输入数据的形式是______。
char c1, c2, c3; scanf("%4c", &c1); scanf("%4c", &c2); scanf("%4c", &c3);
22. 下列程序的输出结果是16.00,请填空______。
void main() { int a=9, b=2; float x=______, y=1.1, z; z=a/2+b*x/y+1/2; printf ("%5.2f\ n", z); }