1、第四章选择题1、判断字符型变量c1是否为大写字母的正确表达式为_ B_。 (A) Z=c1=A) &(c1=c1)|(Z=a)&(c1=0b=0)&(a0b=0&b=0)&(a0&b0)&(a+b05、能正确表示逻辑关系:0a10的C语言表达式是_ C_。(A) 0=a=0,a=0 &a=0a=106、在C语言中,if语句后的一对圆括号中,用以决定分支流程的表达式_ D_。(A) 只能用逻辑表达式(B) 只能用逻辑表达式或关系表达式(C) 只能用关系表达式(D) 可用任意表达式7、为避免嵌套的条件语句if-else的二义性,C语言规定:else与_ B_配对。(A) 缩排位置相同的if (B)
2、 其之前最近的if(C) 其之后最近if (D) 同一行上的if8、下列运算符中优先级最低的是_ A_。 (A) *= (B) & (C) + (D) !=9、设a=4,b=3,c=2,d=1,则表达式ab?b:cd?a:d的结果为_ D_。 (A) 4 (B) 3 (C) 2 (D) 110、能正确表示a、b不能同时为零的逻辑表达式是_ A_。(A) a=0&b!=0|a!=0&b=0(B) (a=0)|(b=0)(C) (a!=0)|(b!=0)(D) a*b=011、读程序,程序运行结果是【B 】。 #include void main() int a=5,b=4,c=3,d=2; if
3、 (abc) printf(%dn, d); else if ( (c-1=d) =1) printf(%dn, d+1); else printf(%dn, d+2); (A) 2 (B) 3 (C)4 (D)5 12、表达式23&8=(a=10)的结果是_ B_。(A) 0(B) 1(C) False(D) True13、若i为整型变量,且有程序段如下,则输出结果是_ B_。i=122; if(i%2) printf(#); else printf(*); (A) # (B) * (C) #* (D) 有语法错误, 无输出结果14、若变量都已正确说明,则以下程序段输出为_ A_。 int
4、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=1 (B) c=1,d=2 (C) c=2,d=1 (D) c=2,d=215、请阅读以下程序: # include void main() int a=2,b=0,c=0; if(a=b+c) printf(#); else printf(&); 以上程序_ C_。 (A) 有语法错不能通过编译 (B) 可以通过编译但不能连接(C) 输出& (D) 输出#16、读程序,程序运行结果是【C 】。#include void main ( ) in
5、t m=5; if (m+5) printf(%dn,m); else printf(%dn,m-); (A) 4 (B) 5 (C)6 (D) 717、设int a = 2,b = 3, x = 1;则执行语句 if (a2) if (b2) x = 2 ; else x = 3;后 x 的值是_ B_。(A) 0 (B) 1 (C) 2 (D) 318、以下if语句语法正确的是_ A_。(A) if (x0) (B) if (x0) printf ( %f ,-x ) x=x+y; printf (%f , x); else printf (%f,-x); else printf (%f
6、, -x);(C) if (x0) (D) if(x0) x=x+y ; printf (%f , x); x=x+y ; printf (%f, x) else printf (%f, -x) ; else printf (%f, -x);19、读程序,程序运行结果是【B 】。#include void main() float x=2.0,y; if(x0.0) y=0.0; else if(x0) y=1; (B) y=0; else if(x=0) y=0; if(x0) y=1; else y=-1; else if(x=0) if(x=0); if(x0) y=1; if(x0)
7、y=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;int a,b;则正确的switch 语句是D_。(A) switch(x) (B) switch(x) case 1.0:printf(*n); case 1:printf(*n); case 2.0
8、:printf(*n); case 2:printf(*n); (C) switch (a+b) (D) switch (a+b); case 1,2:printf(*n); case 1:case 2: printf(*n);填空题 1、已知a=2.5,b=2,c=3.6,表达式ab&ca | ab的值是【1 】。2、表示整数x的绝对值大于2时值为真的C语言表达式是【x2|x-2 】。3、C语言提供的三种逻辑运算符是& 、|和【! 】。4、表达式0a5且a3的C语言表达式是【(0=a&a=5)&(a!=3) 】。5、以下程序对输入的一个小写字母,将字母循环后移5个位置后输出。如a变成f,w变
9、成b。请在空中填入正确内容。 #include void main() char c; c=getchar(); if(c=a&a=v&c=z) c=c-21; putchar(c); 6、阅读下面程序: #include void main() int s, t, a, b; scanf(%d%d,&a, &b); s=1; t=1; if(a0) s=s+1; if(ab) t=s+t; else if (a=b) t=5; else t=2*s; printf(s=%d, t=%d, s, t); 为了使输出结果t=4, 输入量a和b应满足的条件是【ba0 】。7、以下程序运行后的输出结
10、果是【3 】。#include void main( ) int a=1, b=2, c=3; if (a) if (b0) c=0; else c+ ; printf(%dn,c); 8、运行下面的程序,从键盘上输入3,#include void main() int x; scanf(%d,&x); if(x5)printf(%d,x); else printf(%dn,x-); 程序运行结果是【3 】。9、读程序,程序运行结果是【c 】。 #include void main() char m=b; if(m+ b) printf( %cn,m);else printf(%cn,m-);
11、 判断题1、switch选择结构中必须有default子句。B2、如果xy或ay&a0) z=x;是正确的。A4、语句if(a) x=1;与 if(a=0)x=1;等价。B5、if (x0) x=x+y ; printf (%f , x); else printf (%f, -x) ; 语句语法是正确的。A6、if语句后面的表达式并不限于是关系表达式或逻辑表达式,而可以是任意表达式。if语句中可以再嵌套if语句。A7、50 & 42的结果为假。B8、a&b&c逻辑表达式中,当a为假时将不再计算b和c的值了。A第五章选择题1、执行程序段: x=-1; do x=x*x; while(!x); 的
12、结果是_ C_。(A)死循环(B)循环执行2次(C)循环执行一次(D)有语法错误 2、以下程序的输出为_ D_。#include void main( ) int y=5; while (y-); printf (y=%dn, y);(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_。
13、4、(A)while 循环执行10次 (B)循环是无限循环(C)循环体语句一次也不执行 (D)循环体语句执行一次5、C语言的do-while循环中,循环由do开始,用while结束;而且在while表达式后面的_ B_不能丢,它表示do-while循环的结束。(A)n (B)“;” (C)“%” (D) “,”6、以下能正确计算1234.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=10);
14、 (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_不可省略。当三个表达式均省略后,因缺少判断条件,循环可能会无限制地进行下去,形成死循环。(
15、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)无限次 (B)0次 (C)1次 (D)2次 11、以下for循环的执行次数是_ C_。for(x=0,y=0;(y=3)&(x=0;i-=10);后,i值为_ A_。(A)-10 (B)0 (C)10 (D)50
16、13、下面有关for循环的正确描述是_ D_。(A)for循环只能用于循环次数已经确定的情况。(B)for循环是先执行循环体语句,后判断表达式。(C)在for循环中,不能用break语句跳出循环体。(D)for循环的循环体语句中,可以包含多条语句,但要用花括号括起来。14、下面有关for循环的正确描述是_ A_。(A)for语句的三个表达式都是可以省略的,但分号“;”绝对不能省略。(B)for语句的三个表达式都是可以省略的,可以写成for( )。(C)在for语句中,至少会执行循环体语句一次。 (D)for(;) ; 是一条语法上错误的语句。15、在下列选项中,没有构成死循环的程序段是C_。(
17、A)int i=100;while (1) i=i%100+1; if(i100)break;(B)for(;);(C)int k=1000; do-k; while (k);(D)int s=36; while(s=0) ; -s; 16、以下程序输出结果为_ D_。#include void main() int i,b,k=0; for(i=1;i=0) k+; printf(%d,%dn,k,b); (A)3,-1 (B)6,-1 (C)3,0 (D)6,-2 17、以下描述正确的是_ C_。(A)goto语句只能用于退出多层循环。 (B)switch语句中不能出现continue语句
18、。 (C)只能用continue语句来终止本次循环。 (D)在循环中break语句不能独立出现。18、以下不正确的描述是_ B_。(A)break语句不能用于循环语句和switch语句外的任何其他语句。 (B)在switch语句中使用break语句或continue语句的作用相同。 (C)在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环的执行。 (D)在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环。19、以下叙述正确的是_ C_。(A)for循环中的break; 语句表示:当条件成立时中止程序执行。(B)for循环中的continue; 语句表示:
19、当条件成立时中止本层循环。(C)for循环中的break; 语句表示:当条件成立时中止本层循环。(D)for循环中的break; 语句表示:当条件成立时暂停本次循环。20、下面程序段输出的i值是_ C#includevoid main() int i; for(i=1;i=130)&(i*i=180)break; printf(%dn,i);(A)10 (B)11 (C)12 (D)13 填空题1、当运行下面程序时,从键盘键入Hello?,则下面程序的运行结果是【Ifmmp 】。#includevoid main()char c; while(c=getchar()!=?)putchar(+c
20、); 2、执行下面程序后,k值是【40 】。#includevoid main() int k=1,n=452; do k*=n%10; n/=10; while(n); printf(%dn,k);3、以下程序输出结果为【10 】。#includestdio.hvoid main() int i; for(i=0;i10;i+); printf(%d,i); 4、下面程序的运行结果是【55 】。#includevoid main() int a=0,i;for(i=1;i=5;i+) a+=i*i;printf(%dn,a); 5、在执行以下程序时,如果从键盘上输入:ABCdef,则输出为【
21、abcDEF 】。#includevoid main()char ch;while(ch=getchar( )!=n)if(ch=A & ch=a&chz) ch=ch-32;printf(%c,ch); printf(n); 6、下面程序的功能是将从键盘上输入的一对数,由小到大排序输出。当输入一对相等数时结束循环。请将程序补充完整。#includevoid main() int a,b,t; scanf(%d%d,&a,&b); while(【a!=b 】) if (ab) t=a;a=b;b=t; printf(%d,%dn,a,b); scanf(%d%d,&a,&b); 7、下面程序的
22、功能是将小写字母变成对应大写字母后的第二个字母。其中y变成A,z变成B。请将程序补充完整。#includevoid main() char c; while (c=getchar()!=n) if (c=a & cZ & c=Z+2) 【c-=26 】; printf(%cn,c); 8、下面程序的功能是从键盘输入的一组字符中分别统计出大写和小写字母的个数,当输入换行符时结束输入。请将程序补充完整。#includevoid main() int m=0,n=0; char c; while ( (【c=getchar()】)!=n) if (c=A & c=a & c=0&c=9 】) n+;
23、 c=getchar(); 10、下面程序的功能是计算1-3+5-7+.-99+101的值。请将程序补充完整。#includevoid main() int i,t=1,s=0; for(i=1;i=101;i+=2) 【t=t*i 】; s+=t;【t=-t/i 】; printf(%dn,s);11、下面程序的功能是用do-while 语句求1-1000之间满足“用3除余2、用5除余3、用7除余2”的数,且一行只打印5个数。请将程序补充完整。#includevoid main()int i=1,j=0; do if (【i%3=2&i%5=3&i%7=2 】) printf(%4d,i);
24、 j=j+1; if (【j%5=0 】) printf(n); i=i+1; while(i1000); 判断题1、while语句do-while语句无论什么情况下,二者的执行结果都一样。B2、C语言的while、do-while和for几个循环语句,可以相互嵌套。A3、用do-while语句构成循环时,只有在while后的表达式为非0时结束循环。B4、要使for(表达式1;表达式2;表达式3)循环体不形成死循环,表达式2一定不能省略。B5、while循环的while()后没有分号,而do-while循环的while()后一定要有一个分号。A6、continue语句的功能就是结束本层循环。B7、break语句不能用于循环语句和switch语句之外的任何其它语句。A8、三种循环(for循环、while循环和do-while循环)可以互相嵌套,但必须使用相同的循环控制变量。B