C语言选择结构试题带答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

{ int a,b,c=246; a=c/100%9; b=(-1)&&(-1); printf("%d,%d\n",a,b); } 输出结果是( )。 A: 2,1 B: 3,2 C: 4,3 D: 2,-1 6. 两次运行下面的程序,如果从键盘上分别输入6 和4,则输出结果是 main( ) { int x; scanf("%d",&x); if(x + + >5) printf("%d",x); else printf("%d\n",x - -); } A: 7 和5 B: 6 和3 C: 7 和4 D: 6 和4 7. 能表示x 为偶数的表达式是 A: x%2==0 B: x%2==1 C: x%2 D: x%2!=0 8. 下面的程序段中共出现了几处语法错误? int a,b; scanf("%d",a); b=2a; if(b>0) printf("%b",b); A: 1 B: 2 C: 3 D: 4 9. A: B: C: D: C 语言中,逻辑“真”等价于 大于零的数 大于零的整数 非零的数 非零的整数
一、选择题 1. 以下非法的赋值语句是 A: n=(i=2,++i); B: j++; C: ++(i+1); D: x=j>0; 2. 已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1 && y+z/2 的值是 A: 6 B: 0 C: 2 D: 1 3. 阅读以下程序: main() { int x; scanf(“%d”,&x); if(x--<5) printf(“%d”,x); else printf(“%d”,x++); } 程序运行后,如果从键盘上输人5,则输出结果是( )。
C: (k%2)!=0 D: !k%2==1 34. 设有定义:int a=2,b=3,c=4;,则以下选项中值为0 的表达式是( )。 A: (!a==1)&&(!b==0) B: a C: a && b D: a||(b+b)&&(c-a) 35. 以下程序段的输出结果是。 int a=10,b=50,c=30; if(a>b) a=b; b=c; c=a; printf("a=%d b=%d c=%d\n",a,b,c); A: a=10 b=50 c=10 B: a=10 b=30 c=10 C: a=50 b=30 c=10 D: a=50 b=30 c=50 36. 以下4 个选项中,不能看作一条语句的是 A: {;} B: a=0,b=0,c=0; C: if(a>0); D: if(b==0) m=1;n=2;
A: 3 B: 4 C: 5 D: 6 4. 有如下程序 main0 { int a=2,b=-1,c=2; if(a<b) if(b<0) c=0; else c++ printf("%d\n",c); } 该程序的输出结果是 A: 0 B: 1 C: 2 D: 3 5. 有以下程序 #include <stdio.h> main() 1 / 18
D: 8 28. main() { int a,b,d=241; a=d/100%9; b=(-1)&&(-1); printf(“%d,%d”,a,b); } A: 6,1 B: 2,1 C: 6,0 D: 2,0 29. 若有int x=10,y=20,z=30;以下语句执行后x,y,z 的值是( ) if (x>y) z=x;x=y;y=z; A: x=10,y=20,z=30 B: x=20,y=30,z=30 C: x=20,y=30,z=10 D: x=20,y=30,z=20 30. 下列表达式中能表示a 在0 到100 之间的是 A: a>0&a<100 B: !(a<0||a>100) C: 0<a<100 D: !(a>0&&a<100) 31. 为了避免嵌套的if—else 语句的二义性,C 语言规定else 总是与( ) 组成配对关系。 A: 缩排位置相同的if B: 在其之前未配对的if C: 在其之前未配对的最近的if D: 同一行上的if 32. 已知:int x,a,b;下列选项中错误的if 语句是 A: if(a=b) x++; B: if(a<=b) x++; C: if(a-b) x++; D: if(x) x++; 33. 当把以下四个表达式用作if 语句的控制表达式时,有一个选项与其它 三个选项含义不同,这个选项是( )。 A: k%2 B: k%2==1 6 / 18
B: 1 C: 2 D: 3 22. 设有int m=1,n=2;则++m==n 的结果是 A: 0 B: 1 C: 2 D: 3 23. 设有int n=2;则++n+1==4 的结果是 A: true B: false C: 1 D: 0 24. 设有int n=2;则++n+1==4,n 的结果是 A: 1 B: 2 C: 3 D: 4 25. 以下使i 的运算结果为4 的表达式是 A: int i=0,j=0; (i=3,(j++)+i); B: int i=1,j=0; j=i=((i=3)*2); C: int i=0,j=1; (j==1)?(i=1):(i=3); D: int i=1,j=1; i+=j+=2; 26. 当a=5,b=2 时,表达式a= =b 的值为 A: 2 B: 1 C: 0 D: 5 27. 若执行以下程序时从键盘上输入9,_______则输出结果是 main() { int n; scanf("%d",&n); if(n++<10) printf("%d\n",n); else printf("%d\n",n--); } A: 11 B: 10 C: 9 5 / 18
2 / 18
10. C 语言的 switch 语句中,case 后 A: 只能为常量 B: 只能为常量或常量表达式 C: 可为常量及表达式或有确定值的变量及表达式 D: 可为任何量或表达式 11. 已知int i=10;表达式"20-0<=i<=9"的值是 A: 0 B: 1 C: 19 D: 20 12. 设有int i, j, k; 则表达式i=1,j=2,k=3, i&&j&&k 的值为 A: 1 B: 2 C: 3 D: 0 13. 逻辑运算符两侧运算对象的数据类型 A: 只能是0 或1 B: 只能是0 或非0 正数 C: 只能是整型或字符型数据 D: 可以是任何类型的数据 14. 能正确表示“当x 的取值在[1,10]和[200,210]范围内为真,否则为 假”的表达式是( ) A: (x>=1)&&(x<=10)&&(x>=200)&&(x<=210) B: (x>=1)||(x<=10)||(x>=200)||(x<=210) C: (x>=1)&&(x<=10)||(x>=200)&&(x<=210) D: (x>=1)||(x<=10)&&(x>=200)||(x<=210) 15. 已知x=43,ch=’a’,y=0;则表达式(x>=y&&ch<’b’&&!y)的值 是( ) A: 0 B: 1 C: 语法错误 D: 假 16. 执行下列语句后a 的值为 int a=5,b=6,w=1,x=2,y=3,z=4; (a=w>x)&&(b=y>z); A: 5 B: 0 C: 2 3 / 18
main(){ int a=0,b=0,c=0,d=0; if(a=1) b=1;c=2; else d=3; printf("%d,%d,%d,%d",a,b,c,d); } 程序输出( ). A)1,1,2,0 B)0,0,0,3 C)编译有错 D) 0,1,2,0 42. 有以下程序: #include <stdio.h> main(){ int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0: a++; break; case 1: b++; break; } case 2 : a++; b++; break; case 3: a++; b++; } printf("a=%d,b=%d\n",a,b); } A) a=2,b=2 B) a=2,b=1 C) a=1,b=1 D) a=1,b=0 43. 若有定义 int x, y; 并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++) : (y++)中的条 件表达式(x-y) 等价的是( ) A) (x-y<0||x-y>0) B) (x-y<0) C) (x-y>0) D)(x-y==0) 44 .有以下程序: #include <stdio.h> main(){ int x=1,y=0; 9 / 18
if ( !x ) y++; else if (x==0) if(x) y+=2; else y+=3; printf("%d\n",y); } 程序运行后的输出结果是( ) A) 3 B) 2 C) 1 D) 0 45. 若有定义: float x=1.5; int a =1,b=3,c=2;则正确的 switch 语句是() A)switch(a+b) {case 1: printf("*\n"); case 2+1 : printf("**\n");} B)switch( (int)x ); { case 1: printf("*\n"); case 2 : printf("**\n");} C) switch( x ); { case 1.0: printf("*\n"); case 2.0 : printf("**\n");} D) switch( a+b ) { case 1: printf("*\n"); case c: printf("**\n");} 46. A) B) C) D) 若变量已正确定义,在 if ( W ) printf("%d\n",k); 中,以下不可替代 W 的是() 。 a<>b+c ch=getchar() a==b+c a++
D: 1 17. 以下程序的输出结果是( ) main() { int a=5,b=0,c=0; if(a=b+c) printf(“***\n”); else printf(“$$$\n”); } A: 有语法错误不能通过编译 B: 可以通过编译但不能通过连接 C: *** D: $$$ 18. 以下程序的输出结果是( ) main() { int m=5; if(m++>5) printf(“%d\n”,m); else printf(“%d\n”,m--); } A: 4 B: 5 C: 6 D: 7 19. 若运行时给变量x 输入12,则以下程序的运行结果是( ) main() { int x,y; scanf(“%d”,&x); y=x>12?x+10:x-12; printf(“%d\n”,y); } A: 0 B: 22 C: 12 D: 10 20. 若w=1,x=2,y=3,z=4,则表达式w<x?w:y<z?y:z 的值是 A: 4 B: 3 C: 2 D: 1 21. 设有int a=2,b;则执行b=a&&1;语句后,b 的结果是 A: 0 4 / 18
以下题目为二级题
37. if 语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是 A)必须是逻辑值 B)必须是整数值 C)必须是正数 D)可以是任意合法的数值 38. 有以下程序段 int i,n; for(i=0;i<8;i++) {n=rand()%5; switch (n) { case 1: case 3:printf("%d\n",n); break; case 2: case 4:printf("%d\n",n);continue; 7 / 18
Байду номын сангаас
case 0:exit(0); } printf("%d\n",n); } 以下关于程序段执行情况的叙述,正确的是 A)for 循环语句固定执行 8 次 B)当产生的随机数 n 为 4 时结束循环操作 C)当产生的随机数 n 为 1 和 2 时不做任何操作 D)当产生的随机数 n 为 0 时结束程序运行 39.有以下程序 #include <stdio.h> main() { int x=1,y=0; if(!x) y++; else if(x==0) if (x) y+=2; else y+=3; printf("%d\n",y); } 程序运行后的输出结果是 A)3 B)2 C)1 D) 0 40.有以下程序 #include <stdio.h> int fun (int x,int y) { if(x!=y) return ((x+y)/2); else return (x); } main() { inta=4,b=5,c=6; printf("%d\n",fun(2*a,fun(b,C))); } 程序运行后的输出结果是 A)3 B)6 C)8 D)12 41. 有以下程序: #include <stdio.h> 8 / 18
相关文档
最新文档