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