第1——5章复习题及参考答案
一、单选题
1.可以在C语言中使用的一组用户标识符是( C )。
A. 3B B. KEY C. _123 D. void
sizeof cl_c2 T3_al_
DO -for scanf
2.while(!x)中的 !x与下面条件( A )等价。
A. x==0 B. x==1 C. x!=5 D. x!=0 3.增1减1运算只能作用于 ( B )。
A. 常量 B. 变量 C. 表达式 D. 函数 4.下面四个选项中,均是字符常量或数值常量的选项是( A )。
A. 0.0 B. “A” C. „3‟ D. +001
0f 3.9E-2.5 011 0xabcd
8.9e 1e1
0xff00 2e3
50.
„&‟ „\\”‟ 0a
5.下选项中正确的实型常量是( D )。
CHAT
6B
A. 0 B. 0.618*10^2 C. .871 D. 3.1415 6.C语言中运算对象必须是整型的运算符是( D )。 A. %= 与 / B. = 与 & C. * 与 ^ D. % 与 |
7.设a=2,b=2;则++a+b的结果是( D ),a的结果是( B ),b的结果是( A )。 A. 2 B. 3 C. 4 D. 5 9.下列运算符中优先级最低的是( B )。 A. + B. && C. <= D. sizeof 10.设int a=2;则表达式(a++*1/3)的值是( A ) ,a的值是( D ) 。 A. 0 B. 1 C. 2 D. 3 11.字符数据在内存中的存储采用的是( D )。
A. 反码 B. 补码 C. EBCDIC码 D. ASCII码 12.在C语言类型说明中,int、char、short等类型数据的长度是( D )。 A. 固定的 B. 由用户自己定义的
C. 任意的 D. 与机器字的长度有关的
13.在C语言中,不同类型的两个数据混合运算时,要先转换成相同类型再进行运算,
设有int, long,unsigned和char类型的变量和数据,则它们的转换规律是( C ),表达式最后的运算结果是( D )类型的数据。
(1) A. intunsignedlongchar B. charintlongunsigned
C. charintunsignedlong D. charunsignedlongint
(2) A. char B. int C. unsigned D. long 14.以下叙述正确的是( C ) 。
A. 在C程序中无论是整数还是浮点数,只要在允许的范围内都能准确无误地表示。
B. 若有double a,b;定义,可以直接执行语句a = b+3.456;因,b已经正确定义。 C. 在C语言中,常量、变量、函数调用,都是表达式的一种。 D. 在main函数中,一旦定义一个变量,系统将自动赋它以初值。
1
15.以下选项中,合法的赋值语句是( B )。
A. a=1, b=2 B. ++i; C. a=a+1=5; D. y=int(x+4);
16.变量已经正确定义,要将ab中的两个数进行交换,不正确的语句组是( B )。
A.a=a+b,b=a-b,a=a-b; B. a=b,b=a;
C. t=a,a=b,b=t; D. t=b;b=a;a=t; 17.下列选项中不是C语言语句的是( C )。
A. { int i=1; i++; printf(“i=%d\\n”,i); } B. ;
C. k=5,a=10 D. { ; ; }
18.若已经正确说明为int类型,要给abc输入数据,正确的输入语句是( D )。
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); 19.程序输入ABC后的执行结果是( B )。
#include “stdio.h”
main()
{ char c ;
scanf ( “ %3c ” , &c ) ;
printf ( “ %c\\n ” , c ) ; }
A. ABC B. A C. B D. C 20.表示关系的数学表达式x { case 1: switch(y==2) { case 1: printf(“*”); break; case 2 : printf(“%”); break; } case 2 : switch(z) { case 1: printf(“$”); case 2: printf(“*”); break; default : printf(“#”); } } A. *# B. *$* C. *%$*# D. * 24.以下for循环是( C )。 for ( x=0 , y=0 ; ( y != 123 ) && ( x<10) ; x++ ) ; A. 无限循环 B. 循环次数不定 C. 执行10次 D. 执行9次 二、填空题 1. C程序中定义的一个变量,代表内存中的一个 存储单元 。 2. 决定表达式计算顺序的两个因素是 优先级 和 结合性 。 3.x为float型变量,y为double型变量,a为int型变量,b为long型变量,c为char 2 型变量, 则表达式x+y*a/x+b/y+c的值是 double 类型。 4.把k1,k2定义成基本整型变量,并赋初值7的定义语句为 int k1=7,k2=7; 。若有语句 k1+=k1-=k1+1;则k1的值为 -2 。 5.C语言中用 1 表示逻辑“真”值,用 0 表示逻辑“假”值,它们属于 int 类型,C语言 不 存在逻辑类型。 6.结构化程序设计的三种基本结构是 顺序 、 选择 、 循环 。 7.程序中用花括号{}括起来的多条语句,称为 复合 语句,它在语法上等同于 1 条语句。 8.写出判断一个整型数a为奇数的表达式 a%2==1 或者 a%2!=0 。 9.请说明表达式score>=60? (c = ‟P‟):( c = ‟F‟ )的意义: 当score>=60时,取c=‟P‟,否则 取c=‟F‟ 。 10.设x、y、z、t均为int型变量而且初始值均为1,则执行语句t = ++x | | ++y && ++z ; 后,x的值为 2 ,y的值为 1 ,z的值为 1 ,t的值为 1 。 11.表达式3.5+1/2+56%10的计算结果是 9.500000 。 12.在C语言中(以16位PC机为例),一个char型数在内存中所占的字节数为 1个 ,一个int型数据在内存中所占的字节数为 2个 。 13.有一个整数354,取它的个位数的表达式为 345%100 ,取百位数的表达式为 345/100 ,取十位数的表达式为 345/10%10 。 14. 写出算式 abcde的C语言表达式 a*b/(c*d+e) 。 15.若k为int型且赋值12,则表达式k%=k的值是 -264 。 16.设有整型变量a,若赋值a=12; a += a -= a*a ; 则 a 的 值 为 0 。 17.5&3的值为 1 , 5|3 的值为 7 ,5^3的值为 6 ,~5 的值为 250 。(先将数值变为二进制,再进行按位运算。) 18.取一个整数a从右端开始的4到7位的位运算表达式是 ~(~0<<4) 。 19.C语言中,逻辑运算符 ! 的优先级高于算术运算符。若已知a=2,b=3,则表达式!a+b的值为 3 。 20.printf(“%f”,(int)(2.5*3.0)/3);的输出结果是 2 。 21.一个循环的循环体中套有另一个循环称为 循环嵌套 ,一个循环外面仅包 围一层循环称为 双重循环 。 22.如果循环无休止地进行下去,这种状态称为 死循环 。 23.下列for循环执行 4 次。 for (x=0, y=0; (y!=99) && x<4 ; x++) ; 24.while语句与do-while语句的区别是 do-while的循环体至少执行一次 。 25.在循环语句中,break的作用是 中止循环 ,continue的作用是 结束本次循环 。 26.设有说明int y=10;则执行完以下语句后,y的值为 0 。 do { y-- ; } while (--y) ; printf (“ %d \\n ”, y-- ) ; 三、读程序,写出下列程序的运行结果 1. #include “stdio.h” main() 3 { char a, b , c=‟x‟; 1. 程序执行结果: a=‟A‟; b=111; Boy putchar(a+1); putchar(b); c++; putchar(c); putchar(„\\n‟); } 2. main() { char x=012 ,int n=0; 2.程序执行结果: while (x) x=0, n=2 { x>>=2 ; n++; } printf(“x= %d, n=%d\\n”, x , n ); } 3. main() { int a = -2,b = -1, c = 2 ; if(ac=0 else c+=1; printf( “ c=%d\\n ”, c ) ; } 4. #include “stdio.h” main() { int a,b,c,d,x; 4.程序执行结果: a=b=c=0; d=1 x=6 d=1; if(a) d=d-10 ; else if(!b) if (!c) x=6; else x=7; printf(“d=%d x=%d\\n”,d,x); } 5.main() 5.程序执行结果: { int i=5 ; for( ; i<=15 ; ) { i++ ; if( i% 4 = = 0) printf (“%d ”, i ) ; else continue ; } } 6.main() { int i ,j,m=0 ; for(i=1 ;i<=15; i+=4 ) for( j=3; j<=19 ; j+=4 ) m++ ; printf(“ %d \\n”, m) ; } 6.程序执行结果: 20 8 12 16 4 因篇幅问题不能全部显示,请点此查看更多更全内容