![]() ![]() |
|
二级C语言教程章节测试4.选择结构 | |
作者:佚名 文章来源:不详 点击数 更新时间:2008/4/18 14:07:54 文章录入:杜斌 责任编辑:杜斌 | |
|
|
一、选择题 (7)若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是
(11)以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是 A) if((a>B) &&(b>C) ) k=1; B) if((a>B) ||(b>C) ) k=1 else k=0; C) if(a<=B) k=0; D) if(a>B) k=1; else if(b<=C) k=1; else if(b>C) k=1; else k=0; (12) 有以下程序 main() {int a=1,b=2,m=0,n=0,k; k=(n=b>a)||(m=a<b); printf("%d,%d\n",k,m); } 程序运行后的输出结果是 A) 0,0 B) 0,1 C) 1,0 D) 1,1 (13) 有定义语句:int a=1,b=2,c=3,x; 则以下选项中各程序段执行后,x的值不为3的是 A) if (c<a) x=1; B) if (a<3) x=3; else if (b<a) x=2; else if (a<2) x=2; else x=3; else x=1; C) if (a<3) x=3; D) if (a<b) x=b; if (a<2) x=2; if (b<c) x=c; if (a<1) x=1; if (c<a) x=a; (14)有以下程序 main() { int i=1,j=1,k=2; if((j++‖k++)&&i++) printf("%d,%d,%d\n",i,j,k); } 执行后输出结果是 A) 1,1,2 B) 2,2,1 C) 2,2,2 D) 2,2,3 (15)有以下程序 main() { 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) 编译时有错,无结果 (16) 已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1 && y+z/2的值是 A) 6 B) 0 C) 2 D) 1 (17) 有一函数, ,以下程序段中不能根据x值正确计算出y值的是 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=1 ; else y=0; else y=-1; else y=-1; (18) 有以下程序 main() { int a=15,b=21,m=0; switch(a%3) { case 0:m++;break; case 1:m++; switch(b%2) { default:m++; case 0:m++;break; } } printf(“%d\n”,m); } 程序运行后的输出结果是 A) 1 B) 2 C) 3 D) 4 (19) 以下程序的输出结果是 main() { int a=5,b=4,c=6,d; printf("%d\n",d=a>b?(a>c?a:c):(b)); } A) 5 B) 4 C) 6 D) 不确定 (20) 以下程序的输出结果是 main() { int a=4,b=5,c=0,d; d=!a&&!b||!c; printf("%d\n",d); } A) 1 B) 0 C) 非0的数 D) -1
(21) 设 a、b、C、d、m、n均为 int型变量,且 a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式 (m=a>b)&&(n=c>d)运算后,n的值位为 A) 0 B) 1 C)2 D) 3 (22) 阅读以下程序: main() { int x; scanf(“%d”,&x); if(x--<5) printf(“%d”’x); else printf(“%d”’x++); } 程序运行后,如果从键盘上输人5,则输出结果是 A)3 B) 4 C) 5 D) 6 (23) 假定w、x、y、z、m均为int型变量,有如下程序段: w=1; x=2; y=3; z=4; m=(w<x)?w; x; m=(m<y)?m;y; m=(m<z)?m; z; 则该程序运行后,m的值是 A) 4 B) 3 C) 2 D) 2 (24) 设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为 A) 不定值 B) 4 C) 3 D) 1 (25) 若执行以下程序时从键盘上输入9,则输出结果是 A) 11 B) 10 C) 9 D) 8 Main0 { int n; scanf(“%d”,&n); if(n++<10) printf(“%d\n”,n); else printf(“%d\n”,n--); } (26) 若a、 b、c1、c2、x、y、均是整型变量,正确的switch语句是 A) swich(a+b); B) switch(a*a+b*b) { case 1:y=a+b; break; {case 3: case 0:y=a-b; break; case 1:y=a+b;break; } case 3:y=b-a,break; } C) switch a D) switch(a-b) { case c1 :y=a-b; break {default:y=a*b;break case c2: x=a*d; break case 3:case 4:x=a+b;break default:x=a+b; case 10:case 11:y=a-b;break; } } (27) 能正确表示逻辑关系:“a≥=10或a≤0”的C语言表达式是 A) a>=10 or a<=0 B) a>=0|a<=10 C) a>=10 &&a<=0 D) a>=10‖a<=0 (28) 有如下程序 main0 { int x=1,a=0,b=0; switch(x){ case 0: b++; case 1: a++ case 2: a++;b++ } printf(“a=%d,b=%d\n”,a,b); } 该程序的输出结果是 A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 D) a=2,b=2 (29) 有如下程序 main0 { float x=2.0,y; if(x<0.0) y=0.0; else if(x<10.0) y=1.0/x; else y=1.0; printf(“%f\n”,y); } 该程序的输出结果是 A) 0.000000 B) 0.250000 C) 0.500000 D) 1.000000 (30) 有如下程序 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
(31) 设 int x=1, y=1; 表达式(!x||y--)的值是 A) 0 B) 1 C) 2 D) -1 (32) 与 y=(x>0?1:x<0?-1:0);的功能相同的if语句是 A) if (x>0) y=1; B) if(x) else if(x<0)y=-1; if(x>0)y=1; else y=0; else if(x<0)y=-1; else y=0; C) y=-1 D) y=0; if(x) if(x>=0) if(x>0)y=1; if(x>0)y=1; else if(x==0)y=0; else y=-1; else y=-1; (33) 语句:printf("%d",(a=2)&&(b= -2);的输出结果是 A) 无输出 B) 结果不确定 C) -1 D) 1 (34) 当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是 A) c=b=a; B) (a=c) ‖(b=c) ; C) (a=c) &&(b=c); C) a=c=b; (35) 能正确表示a和b同时为正或同时为负的逻辑表达式是 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 (36) 以下程序的输出结果是 A) -1 1 B) 0 1 C) 1 0 D) 0 0 main( ) { int a= -1,b=1,k; if((++a<0)&& ! (b-- <=0)) printf("%d %d\n",a,b); else printf("%d %d\n",b,a); } (37) 以下程序输出结果是 A) 7 B) 6 C) 5 D) 4 main() { int m=5; if(m++>5) printf("%d\n",m); esle printf("%d\n",m- -); } (38) 当a=1,b=3,c=5,d=5时,执行下面一段程序后,x的值为 A) 1 B) 2 C) 3 D) 6 if(a<b) if(c<d) x=1; else if(a<c) if(b<d) x=2; else x=3; else x=6; else x=7; (39) 表示关系x<=y<=z的c语言表达式为 A) (X<=Y)&&(Y<=Z) B) (X<=Y)AND(Y<=Z) C) (X<=Y<=Z) D) (X<=Y)&(Y<=Z) (40) 有以下程序 #include main() { 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
(41) 设a为整型变量,不能正确表达数学关系:1010&&a>15 D)!(a<=10)&&!(a>=15) (42) 若有以下定义: float x;int a,b; 则正确的switch 语句是 A)switch(x) B)switch(x) { case1.0:printf("*\n"); { case1,2:printf("*\n"); case2.0:printf("**\n"); case3:printf("**\n"); } } C)switch (a+b) D)switch (a+b); { case 1:printf("\n"); { case 1:printf(."*\n"); case 1+2:printf("**\n"); case 2:printf("**\n"); } } (43) 假定所有变量均已正确说明,下列程序段运行后x的值是 a=b=c=0;x=35; if(!a)x--; else if(b); if(c)x=3; else x=4; A)34 B)4 C)35 D)3 (44) 在以下一组运算符中,优先级最高的运算符是 A)<= B)= C)% D)&& (45) 表达式:10!=9的值是 A) true B) 非零值 C) 0 D) 1 (46) 在下列选项中,不正确的赋值语句是 A) ++t; B) n1=(n2=(n3=0)); C) k=i==j; D) a=b+c=1; (47) 能正确表示a≥10或a≤0的关系表达式是 A)a>=10 or a<=0 B)a>=10│a<=0 C)a>=10││a<=0 D)a>=10 ││a<=0 (48) 为表示关系x≥y≥z,应使用C语言表达式 A) (x>=y)&&(y>=z) B(x>=y)AND(y>=z) C)(x>=y>=z) D)(x>=y)&(y>=z) (49) 两次运行下面的程序,如果从键盘上分别输入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 (50) 以下程序的输出结果是 main( ) { int a=-1,b=4,k; k=(+ +a〈0)&&!(b - -〈=0); printf("%d%d%d\n",k,a,b); } A) 104 B) 103 C) 003 D) 004
(51) 下面的程序 A) 有语法错误不能通过编译 B) 输出* * * *。 C) 可以通过编译,但是不能通过连接,因而不能运行。 D) 输出# # # #。 main() { int x=3,y=0,z=0; if(x=y+z)printf("* * * *"); else printf("# # # #");} (52) 若执行下面的程序时从键盘上输入5,则输出是 A) 7 B) 6 C) 5 D) 4 main() { int x; scanf("%d",&x); if(x++>5) printf("%d\n",x); else printf("%d\n",x--);} (53) 下面程序的输出是 A) 0 0 3 B) 0 1 2 C) 1 0 3 D) 1 1 2 main() { int a=-1, b=4,k; k=(a++<=0)&&(!(b--<=0)); printf("%d %d %d\n",k,a,b);} (54) 下面的程序片段所表示的数学函数关系是上面程序片段的输出结果是 ┌ -1(x<0) ┌ 1 (x<0) │ │ A) y = ┤ 0 (x=0) B) y = ┤-1 (x=0) │ │ └ 1 (x>0) └ 0 (x>0) ┌ 0 (x<0) ┌ -1(x<0) │ │ C) y = ┤-1 (x=0) D) y = ┤ 1 (x=0) │ │ └ 1 (x>0) └ 0 (x>0) y=-1; if(x!=0) if(x>0) y=1; else y=0 (55) 下面程序的输出是 A) -1 B) 0 C) 1 D) 不确定的值 main() { int x=100, a=10, b=20, ok1=5, ok2=0; if(a<b) if(b!=15) if(! ok1) x=1; else if(ok2)x=10; x=-1; printf("%d\n",x);} (56) 设a、b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中,值为0的表达式是 A) 'a'&&'b' B) a<=b C) a||b+c&&b-c D) !((a<b)&&!c||1) (57) 请读程序: #include<stdio.h> main() { float x,y; scan("%f",&x); if(x<0.0) y=0.0 else if((x<5.0)&&(x!=2.0)) y=1.0/(x+2.0); else if (x<10.0) y=1.0/x; else y=10.0; printf("%f\n",y); } 若运行时从键盘上输入2.0<CR>(<CR>表示回车),则上面程序的输出结果是 A) 0.000000 B) 0.250000 C) 0.500000 D) 1.000000 (58) 请读程序: #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; } printf("a=%d, b=%d\n",a,b); } 上面程序的输出结果是 A) a=2, b=1 B) a=1, b=1 C) a=1, b=0 D) a=2, b=2 (59)以下程序的输出结果是 【59】 。 # include<stdio.h> main() { int a ,b,d=241; a=d/100%9; b=(-1)&&(-1); printf("%d,%d\n",a,b); } A) 6,1 B) 2,1 C) 6,0 D) 2,0 (60) 若k是int型变量,且有下面的程序片段: k=-3 if(k<=0) printf("####") else printf("&&&&"); 上面程序片段的输出结果是 A) #### B) &&&& C) ####&&&& D) 有语法错误,无输出结果
二、填空题 (1)以下程序运行后的输出结果是 【1】 。 main() { int a=1,b=2,c=3; if(c=a) printf("%d\n",c); else printf("%d\n",b); } (2)以下程序运行后的输出结果是 main() { int a=3,b=4,c=5,t=99; if(b<a&&a<c) t=a;a=c;c=t; if(a<c&&b<c) t=b;b=a;a=t; printf("%d%d%d\n",a,b,c); } (3)以下程序运行后的输出结果是 main() { int a,b,c a=10;b=20;c=(a%b<1)||(a/b>1); printf("%d %d %d\n",a,b,c); } (4)以下程序运行后的输出结果是 【4】 。 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; } printf("%d %d\n",a,b); } (5)有以下程序 main( ) { int n=0,m=1,x=2; if(!n) x-=1; if(m) x-=2; if(x) x-=3; printf(“%d\n”,x); } 执行后输出结果是【5】 。 (6) 以下程序运行后的输出结果是 【6】 。 main() { int p=30; printf (“%d\n”,(p/3>0 ? p/10 : p%3)); } (7) 以下程序运行后的输出结果是【7】 。 main() { int a=1, b=3, c=5; if (c=a+b) printf("yes\n"); else printf("no\n"); }
答案: |
|
![]() ![]() |