1、第四章 选择题 1、判断字符型变量c1是否为大写字母的正确表达式为___ B___。 (A) 'Z'<=c1<='Z' (B) (c1>='A') &&(c1<='Z') (C) ('A'>=c1)||('Z'<=c1) (D) (c1>='a')&&(c1<='Z') 2、设a=3,b=4,c=5,则逻辑表达式"!(a+b)*c-1&&b+c%2"的值是__ C____。 (A) -1 (B) 0 (C) 1 (D) 2 3、请从以下表达式中选出a为偶数时值为0的表达式__ D__
2、 (A) a%2==0 (B) !a%2!=0 (C) a/2*2-2==0 (D) a%2 4、能正确表示a和b同时为正或同时为负的逻辑表达式是_ D_____。 (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 5、能正确表示逻辑关系:"0≤a≤10"的C语言表达式是_ C_____。 (A) 0<=a<=10 (B) a>=0,a<=10 (C) a>=0 &&a<=1
3、0 (D) a>=0‖a<=10 6、在C语言中,if语句后的一对圆括号中,用以决定分支流程的表达式__ D____。 (A) 只能用逻辑表达式 (B) 只能用逻辑表达式或关系表达式 (C) 只能用关系表达式 (D) 可用任意表达式 7、为避免嵌套的条件语句if-else的二义性,C语言规定:else与__ B____配对。 (A) 缩排位置相同的if (B) 其之前最近的if (C) 其之后最近if (D) 同一行上的if 8、下列运算符中优先级最低的是___ A___。 (A) *= (B) && (
4、C) + (D) != 9、设a=4,b=3,c=2,d=1,则表达式a void main() {
5、 int a=5,b=4,c=3,d=2; if (a>b>c) printf("%d\n", d); else if ( (c-1>=d) ==1) printf("%d\n", d+1); else printf("%d\n", d+2); } (A) 2 (B) 3 (C)4 (D)5 12、表达式2<3&&8<=(a=10)的结果是__ B____。 (A) 0 (B) 1 (C) False (D) True 13、若i为整型变量,且有程序段如下,则输出
6、结果是_ B_____。 i=122; if(i%2) printf("####"); else printf("****"); (A) #### (B) **** (C) ####**** (D) 有语法错误, 无输出结果 14、若变量都已正确说明,则以下程序段输出为__ A____。 int a=2,b=1,c,d; if (a==b) c=d=a; else c=b; d=b; printf("c=%d,d=%d",c,d); (A) c=1,d=
7、1 (B) c=1,d=2 (C) c=2,d=1 (D) c=2,d=2
15、请阅读以下程序:
# include
8、n ( ) { int m=5; if (m++>5) printf("%d\n",m); else printf("%d\n",m--); } (A) 4 (B) 5 (C)6 (D) 7 17、设int a = 2,b = 3, x = 1;则执行语句 if (a>2) if (b>2) x = 2 ; else x = 3; 后 x 的值是_ B_____。 (A) 0 (B) 1 (C) 2 (D) 3 18、以下if语句语法正确的是
9、 A_____。 (A) if (x>0) (B) if (x>0) printf ( "%f ",-x ) { x=x+y; printf ("%f ", x);} else printf ("%f",-x); else printf ("%f ", -x); (C) if (x>0) (D) if(x>0) {x=x+y ; printf ("%f ", x);}; { x=x+y ; printf ("%f", x)} else printf ("%f
10、", -x) ; else printf ("%f", -x);
19、读程序,程序运行结果是【 B 】。
#include
11、确计算出y值的是___ C___。 (A) if(x>0) y=1; (B) y=0; else if(x==0) y=0; if(x>0) y=1; else y=-1; else if(x<0) y=-1 ; (C) y=0; (D) if(x>=0) if(x>=0); if(x>0) y=1; if(x>0) y
12、1 ; else y=0; else y=-1; else y=-1; 21、若有条件表达式(expression) ?a++:b--,则以下表达式中能完全等价于表达式(expression)的是__ B____。 (A) (expression==0) (B) (expression!=0) (C) (expression==1) (D) (expression!=1) 22、若有以下定义: float x
13、int a,b;则正确的switch 语句是D______。 (A) switch(x) (B) switch(x) { case 1.0:printf("*\n"); { case 1:printf("*\n"); case 2.0:printf("**\n"); } case 2:printf("**\n"); } (C) switch (a+b) (D) switch (a+b); { case 1,2:printf("*\n"); { cas
14、e 1:case 2: printf("*\n"); } 填空题 1、已知a=2.5,b=2,c=3.6,表达式a>b&&c>a || ab的值是【 1 】。 2、表示"整数x的绝对值大于2"时值为"真"的C语言表达式是【 x>2||x<-2 】。 3、C语言提供的三种逻辑运算符是&& 、||和【 ! 】。 4、表达式0≤a≤5且a≠3的C语言表达式是【 (0<=a&&a<=5)&&(a!=3) 】。 5、以下程序对输入的一个小写字母,将字母循环后移5个位置后输出。如'a'变成'f','w'变成'b'。
15、请在空中填入正确内容。
#include
16、>0) s=s+1;
if(a>b) t=s+t;
else if (a==b) t=5;
else t=2*s;
printf("s=%d, t=%d", s, t); }
为了使输出结果t=4, 输入量a和b应满足的条件是【 b>a>0 】。
7、以下程序运行后的输出结果是【 3 】。
#include
17、"%d\n",c);
}
8、运行下面的程序,从键盘上输入3,
#include
18、printf(" %c\n",m); else printf("%c\n",m--); } 判断题 1、switch选择结构中必须有default子句。B 2、如果x>y或ay&&a0) z=x;是正确的。A 4、语句if(a) x=1;与 if(a==0)x=1;等价。B 5、if (x>0) {x=x+y ; printf ("%f ", x);} else printf ("%f", -x) ; 语句语法是正确的。A 6、if语句后面的表达式并不限于是关系表达
19、式或逻辑表达式,而可以是任意表达式。if语句中可以再嵌套if语句。A
7、5>0 && 4>2的结果为假。B
8、a&&b&&c逻辑表达式中,当a为假时将不再计算b和c的值了。A
第五章
选择题
1、执行程序段: x=-1; do { x=x*x;} while(!x); 的结果是__ C____。
(A)死循环 (B)循环执行2次 (C)循环执行一次 (D)有语法错误
2、以下程序的输出为___ D ___。
#include
20、} (A)y=0 (B)无限循环,无结果输出 (C)y=1 (D)y=-1 3、设有程序段: int x=0,s=0; while(x!=0) s+=++x; printf("%d",s); ,则运行程序段后_ A _____。 (A)输出0 (B)输出1 (C)控制表达式是非法的 (D)执行无限次 设有程序段: int k=10; while(k=0) k=k-1; ,则下面描述正确的是_ C _____。 4、(A)while 循环执行10次 (B)循环是无限循环 (C)循环体语句一次也不执行 (D)循环体语句执行一次 5、C语言的do
21、while循环中,循环由do开始,用while结束;而且在while表达式后面的__ B ____不能丢,它表示do-while循环的结束。 (A)\n (B)“;” (C)“%” (D) “,” 6、以下能正确计算1×2×3×4...×10的程序段是__ C ____。 (A)do {i=1; s=1; s=s*i; i++;} while(i<=10); (B)do {i=1; s=0; s=s*i; i++;} while(i<=10); (C)i=1; s=1; do {s=s*i; i++;} while(i<=
22、10); (D)i=1; s=0; do {s=s*i; i++;} while(i<=10); 7、以下描述中正确的是__ C ____。 (A)由于do-while循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。 (B)do-while循环由do开始,用while结束,因此在while(表达式)后无需加分号。 (C)在do-while循环体中,一定要有能使while后面表达式的值变为“假”的操作。 (D)do-while循环中,根据情况可以省略while。 8、C语言的for语句中的表达式可以部分或全部省略,但两个___ C ___不可省略。当三个表达式均省
23、略后,因缺少判断条件,循环可能会无限制地进行下去,形成死循环。 (A)“<” (B)“++” (C)“;” (D)“,” 9、对于for(表达式;;表达式3)可理解为_ B _____。 (A)for(表达式;0;表达式3) (B)for(表达式;1;表达式3) (C)for(表达式;表达式1;表达式3) (D)for(表达式;表达式3;表达式3) 10、若i为整型变量,则以下循环执行的次数是__ B ____。 for(i=2;i==0;) printf("%d",i--); (A)无限次
24、 (B)0次 (C)1次 (D)2次 11、以下for循环的执行次数是_ C _____。 for(x=0,y=0;(y=3)&&(x<4);x++,y++); (A)是无限循环 (B)循环次数不定 (C)执行4次 (D)执行3次 12、设i为整型量,执行循环语句for(i=50;i>=0;i-=10);后,i值为_ A _____。 (A)-10 (B)0 (C)10 (D)50 13、下面有关for循环的正确描述是__ D ____。 (A)for循环只能用于循环次数已经确定
25、的情况。(B)for循环是先执行循环体语句,后判断表达式。 (C)在for循环中,不能用break语句跳出循环体。(D)for循环的循环体语句中,可以包含多条语句,但要用花括号括起来。 14、下面有关for循环的正确描述是__ A ___。 (A)for语句的三个表达式都是可以省略的,但分号“;”绝对不能省略。(B)for语句的三个表达式都是可以省略的,可以写成for( )。 (C)在for语句中,至少会执行循环体语句一次。 (D)for(;;) ; 是一条语法上错误的语句。 15、在下列选项中,没有构成死循环的程序段是C _____
26、
(A)int i=100; while (1) {i=i%100+1; if(i>100)break;} (B)for(;;);
(C)int k=1000; do{--k;} while (k); (D)int s=36; while(s>=0) ; --s;
16、以下程序输出结果为___ D ___。
#include
27、d\n",k,b); } (A)3,-1 (B)6,-1 (C)3,0 (D)6,-2 17、以下描述正确的是__ C ____。 (A)goto语句只能用于退出多层循环。 (B)switch语句中不能出现continue语句。 (C)只能用continue语句来终止本次循环。 (D)在循环中break语句不能独立出现。 18、以下不正确的描述是_ B _____。 (A)break语句不能用于循环语句和switch语句外的任何其他语句。 (B)在switch语句中使用break语句或contin
28、ue语句的作用相同。 (C)在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环的执行。 (D)在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环。 19、以下叙述正确的是__ C ____。 (A)for循环中的break; 语句表示:当条件成立时中止程序执行。 (B)for循环中的continue; 语句表示:当条件成立时中止本层循环。 (C)for循环中的break; 语句表示:当条件成立时中止本层循环。 (D)for循环中的break; 语句表示:当条件成立时暂停本次循环。 20、下面程序段输出的i值是__ C #in
29、clude
30、char())!='?')
putchar(++c);
}
2、执行下面程序后,k值是【40 】。
#include
31、
#include
32、c",ch);}
printf("\n");
}
6、下面程序的功能是将从键盘上输入的一对数,由小到大排序输出。当输入一对相等数时结束循环。请将程序补充完整。
#include
33、成对应大写字母后的第二个字母。其中y变成A,z变成B。请将程序补充完整。
#include
34、lude
35、{ if(【 c>='0'&&c<='9' 】) n++;
c=getchar();
}
10、下面程序的功能是计算1-3+5-7+...-99+101的值。请将程序补充完整。
#include
36、数。请将程序补充完整。
#include






