《选择结构程序设计练习题.doc》由会员分享,可在线阅读,更多相关《选择结构程序设计练习题.doc(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品文档,仅供学习与交流,如有侵权请联系网站删除选择结构程序设计练习题1.逻辑运算符两侧运算对象的数据类型( )A.只能是0和1B.只能是0或非0正数C.只能是整型或字符型数据D.可以是任何类型的数据2.下列运算符中优先级最高的是( )A.=1)&(x=200)&(x=1)|(x=200)|(x=1)&(x=200)&(x=1)|(x=200)|(x=210)4.表示图中坐标轴上阴影部分的正确表达式是( ) A.(x=b)&(x=c)B.(x=a)|(b=x=c)C.(x=b)&(x=c)D.(x=a)&(b=x=c5.判断char型量ch是否为大写字母的正确表达式是( )A.A=ch=A)&
2、(ch=A)&(ch=Z)D.(A=ch)6.设x,y,z都是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是A.x&yB.x=yC.x|y+z&!yD.!(x=y&chb)&(n=cd)后的值为( )A.1 B.2 C.3 D.410.下列运算符中优先级最低的是( )优先级最高的是( )A.? B.& C.+ D.!=11.以下程序的运行结果是( )#includemain()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,012.执行以下语句后a的值为( )int
3、a,b,c;a=b=c=1; +a|+b&+c;A.错误 B.0 C.2 D.1A.1 B.2 C.错误 D.013.执行以下语句后的值为( ),b的值( )int a=5,b=6,w=1,x=2,y=3,z=4;(a=wx)&(b=yz);A.5 B.0 C.2 D.1A.6 B.0 C.1 D.414.以下不正确的if语句形式是( )A.if(xy&x!=y);B.if(x=y)x+=y;C.if(x!=y)scanf(“%d“,&x) else scanf(“%d”,&y);D.if(xy) z=x;x=y;y=z;A.x=10,y=20,z=30B.x=20,y=30,z=30C.x=
4、20,y=30,z=10D.x=20,y=30,z=2016.以下语句语法正确的是:( )A.if(x0) printf(“%f”,x) else printf(“%f”,-x);B.if(x0) x=x+y;printf(“%f”,x); else printf(“%f”,-x)C.if(x0) x=xy; printf(“%f”,x); else printf(“%f”,-x);D.if(x0) x=x+y;printf(“%f”,x) else printf(“%f”,-x);17.请阅读以下程序,该程序( )main()int a=5,b=0,c=0;if(a+b+c) printf(
5、“*n”); else printf(“$n”);A.有语法错误不能通过编译B.可以通过编译但不能通过连接C.输出*D.输出$18.以下程序的运行结果是( )main()int m=5;if(m+5) printf(“%dn”,m);else printf(“%dn”,m-);A.4 B.5 C.6 D719.当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是( )if(ab)if(cd) x=1;else if(ac) if(bd)x=2; else x=3; else x=6;else x=7;A.1 B.2 C.3 D.620.有一函数关系如下: x-1(x0)则下面程序段
6、中能正确表示上面关系的是( )A.y=x+1; if(x=0) if(x=0) y=x; else y=x-1;B.y=x-1 if(x!=0) if(x0) y=x+1; else y=x;C.if(x=0) if(x0) y=x-1; else y=x; else y=x+1;D.y=x; if(x=0) if(x0) y=x-1; else y=x+1;21.以下程序的输出结果是( )main()int a=100,x=10,y=20,ok1=5,ok2=0;if(xy) if(y!=10) if(!ok1) a=1; else if(ok2) a=10;a=-1; printf(“%d
7、n”,a);A.1 B.0 C.-1 D.值不确定22.以下程序的输出结果是( )main()int x=2,y=-1,z=2;if(xy) if(yy);B.if(x=y)&(x!=0) x+=y;C.if(x!=y) scanf(“%d”,&x); else scanf(“%d”,&y);D.if(xy) x+;y+;25.main()float a,b; scanf“%f”,&a);if(a0.0) b=0.0;else if(a0.5)&(a!=2.0) b=1.0/(a+2.0);else if(a10.0) b=1.0/x;else b=10.0;printf(“%fn”,y);若
8、程序运行时输入为2.0,则上面程序的输出结果是( )A.0.000000 B.0.500000 C.1.000000 D.0.25000026.若运行时给变量x输入12,则以下程序的运行结果是( )main()int x,y; scanf(“%dn”,y);A.0 B.22 C.12 D.1027.以下程序的运行结果是( )main()int k=4,a=3,b=2,c=1;printf(“n%dn”,ka?k:cb?c:a);A.4 B.3 C.2 D.128.执行以下程序段后,变量a,b,c的值分别是( )int x=10,y=9; int a,b,c;a=(-x= =y+)?- -x:+
9、y; x=x+;c=y;A.a=9,b=9,c=9B.a=8,b=8,c=10C.a=9,b=10,c=9D.a=1,b=11,c=1029.int w,x,y,z,m;则执行以下语句后m的值为( )w=1;x=2;y=3;z=4;m=(wx)?w:x; m=(my)?m:y;m=(mz)?m:z;A.1 B.2 C.3 D.430.若w=1,x=2,y=3,z=4,则表达式wx?w:y10?x+100:x-10);printf(“%dn”,w+|z+);printf(“%dn”,!wz);printf(“%dn”,w&z);A.0 B.1 C.0 D.0 1 1 1 1 1 1 0 0 1
10、1 1 032.当a=3,b=2,c=1时,表达式f=abc的值是_33.当a=5,b=4,c=2时,表达式ab!=c的值是_34.以下程序的运行结果是_main()int x=1,y,z; x*=3+2; printf(“%dt”,x); x*=y=z=5; printf(“%dt”,x); x=y=z; printf(“%dn”,x);35.在C语言中,表示逻辑“真”用_36.设y为int型变量,请写出描述“y是奇数”的表达式_37.C语言提供的三种逻辑运算符是_ _ _38.设x,y,z均为int型变量,请写出描述“x或y中有一个小于z”的表达式_39.设int x,y,z;请描述“x,
11、y和z中有两个为负数”的表达式_40.已知A=7.5,B=2,c=3.6,表达式AB&CA|AB的值是_41.若a=6,b=4,c=2,则表达式!(a-b)+c-1&b+c/2的值是_42.若a =2,b=4,则表达式(x=a)|(y=b)&0的值是_43.若a=1,b=4,c=3,则表达式!(ab)|!c&1的值_44.若a=6,b=4,c=3,则表达式a&b+c|b-c的值是_45.若a=5,b=2,c=1,则表达式a-bc|b=c的值是_46.设a=3,b=4,c=5,则表达式a|b+c&b=c的值是_47.条件“2x3或xc)后;n的值为_,m的值为_49.以下程序运行结果是_main
12、()int a1,a2,b1,b2; int i=5,j=7,k=0;a1=!k; a2=i!=j;printf(“a1=%dt a2=%dn”,a1,a2);b1=k&j; b2=k|j;printf(“b1=%dt b2=%dn”,b1,b2);51.以下程序的运行结果是:_main()int x,y,z x=1;y=1;z=0;x=x|y&z; printf(“%d,%d”,x,x&!y|z);循环控制练习题1.设有程序段 int k=10; while (k=0) k=k-1; 则下面描述中正确的是 ( )A while循环执行10次 B 循环是无限循环C 循环体语句一次也不执行D 循
13、环体语句执行一次2.设有以下程序段 int x=0,s=0; while(!x!=0)s+=+x;printf(%d,s) ;则( )A 运行程序段后输出0 B 运行程序段后输出1 C 程序段中的控制表达式是非法的 D 程序段执行无限次3、语句while(!E);中的表达式!E特等价于()、!、!、=、下面程序段的执行结果是( )a=1;b=2;c=2;while(abc ) t=a;a=b;b=t;c-;printf(%d,%d,%d,a,b,c);A、1,2,0 B、2,1,0 C 、1,2,1 D、2,1,15、下面程序段的运行结果是( )x=y=0;while(x15) y+,x+=+
14、y;printf(%d,%d,y,x);A、20,7 B、6,12 C、20,8 D 8,206、下面程序段的运行结果是( )int n=0;while (n+=2); printf(%d,n);A,2 B、3 C、4 D 有语法错误7、设有程序段t=0;while(printf(*)t+; if(tb) t=a;a=b;b=t;printf(“%d,%dn”,a,b);scanf(“%d,%d”,&a,&b);A、!a=b B、a!=b C、a=b D、a=b9、下面程序的功能是从键盘输入的一组字符中统计出大写字母个数m和小写字母个数n,并输出m,n中较大者,请选择填空。#includema
15、in( )int m=0,n=0;char c;while(_)!=n)if(c=A&ca&c=z) n+;printf(“%dn”,mn?_);A. c=getchar() B.getchar() C.c=getchar() D.scanf(“%c”,c)A. n:m B.m:n C.m:m D.n:n10、下面程序的功能是将小写字母变成对应大写字母后的第二个字母。其中y变成A,Z变成B。填空#includemain()char c;while(c=getchar( )!=n)if(c=a&c=Z&c=Z+2)_;printf(“%c”,c);A.c+=2 B.c-=32 C.c=c+32+
16、2 D.c-=30A.c=B B.c=A C.c-=26 D.c=c+2611,下面程序的功能是在输入的一批正整数中求出最大者,输入0时结束,请选择填空main( )int a,max=0; scanf(“%d”,&a);while(_)if(maxa) max=a;scanf(“%d”,&a);printf(“%d”,max);A.a=0 B.a C!a=1 D.!a12、下面程序的运行结果是( )main( )int num=0;while(num=2)num+; printf(“%dn”,num);A.1 B.12 C.123 D.123413.若运行以下程序时,从键盘输入2473,则下
17、面程序的运行结果是()includemain( )int c;while(c=getchar( )!=n)switch(c-2)case 0:case 1:putchar(c+4);case 2:putchar(c+4);break;case 3:putchar(c+3);case 4:putchar(c+2);break;printf(“n”);A668977 B.668966 C.66778777 D.668876614.语言中while和do-while循环的主要区别是( ).do-while的循环体至少无条件执行一次.while的循环控制条件比dowhile的循环控制条件严格.do-w
18、hile允许从外部转到循环体内.do-while的循环体不能是复合语句15 .以下程序段()x=-1 dox=x*x;while(!x);A.是死循环B.循环执行二次C.循环执行一次D.有语法错误16、以下描述中正确的是( )A.由于do -while循环中循环语句中只能是一条可执行语句,所以循环体内不能使用复合语句。B.do-while循环由do开始,且while结束,在while(表达式)后面不能写分号。C.在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作。D.do-while循环中,根据情况可以省略while17.若有以下后句int x=3;dopr
19、int(%dn,x=2); while(!(-x);则上面程序段()A.输入的是1 B.输出的是1和-2 C.输出的是3和0 D.死循环18.下面程序是从键盘输入学号,然后输出学号中百位数字是3的学号,输入0时结束循环,填空。main()long int num;scanf(%ld,&num);doif(_) printf(%ld,num);scanf(%ld,&num);while(_);A.num%100/10=3 .Bnum/100%10=3 C.num%10/10=3 D.num/10%10=3A.!num B.num0=0 C.!num=0 D.!num!=019.下面程序的运行结果
20、是( )main()int y=10;doy-; while(-y);printf(%dn,y-);A .-1 B.1 C.8 D.-820.下面程序的运行结果是( )#includemain()char c; int v0=0,v1=0,v2=0;doswitch(c=getchar()casea:caseA:casee:caseE:casei:caseI:case0:case0:caseu:caseU:v1+=1;default:v0+=1;v2+=1;while(c!=n);print(%d,%d,%d,v0,v1,v2);A.7,4,7 B.8,4,8 C.11,4,11 D.12,4
21、,1221.下面程序的运行结果是( )main()int a=1,b=10,dob-=a;a+;while(b-,0);printf(%d,%d,a,b);A.3.11 B.2,8 C.1,-1 D.4,922.下面有关for循环的正确描述是( )A.for循环只能有于循环次数已经确定的情况B.for 循环是先执行循环体语句,后判断表达式C.在for循环中,不能用break语句跳出循环体D.for循环的循环体语句中,可以包含多条语句,但必须花括号括起来23.对for(表达式1; 表达式3)可理解为( )A.for(表达式1;0; 表达式3)B.for(表达式1;1;表达式3)C.for(表达式
22、1;表达式1;表达式3)D.for(表达式1;表达式3;表达式3)24.若i为整型变量,则以下循环执行的次数是( )for(i=2;i=0;) printf(“%d”,i-)A.无限次 B.0次 C.1次 D.2次25.以下for循环的语句是( )for(x=0,y=0;(y=123)&(x+y;x=I+) I=x;B.for(; ;x+=I);C.while(1) x+;D.for(I=10; ;I-) sum+=I;27.以下程序段的运行结果是( )for (y=1;y10;) y=(x=3*y,x+1),x-1);printf(“x=%d,y=%d”,x,y);A. x=27,y=27
23、B.x=12,y=13 C.x=15,y=14 D.x=y=2728.下面程序段的运行结果是( )for(x=3x100)break;B. for(;)C. int k=0;do+k;while(k=0);D.int s=36; while(s); -s;30.执行语句for(I=1;I+4;);后变量I的值是().3; B.4 C.5 D.不定31.下面程序的功能是计算到中是的倍数的数值之和,请选择填空。Main()int I,sum=0;for(I=1;I=50;I+)if(_)sun+=I;printf(“%d”,sum);A(int)(i/7)=i/7 B.(int)i/7=i/7 C
24、.i%7+0 D.i%7=032下面程序的运行结果是()main( )int a;for(a=1;a=5;a+switch(a%5)case0:printf(“*”);break;case1;printf(“#”);break;default:printf(“n”);case2:printf(“&”);33.下面程序的运行结果是()main()intx,I;for(I=1; I100;I+)x=I; NO.14if(+x%2=0)if(+x%3=0)if(+x%7=0) ptintf(“%d”,x);A.39 81 B.42 84 C.26 68 D.28 7034.下面程序的运行结果是( )
25、main()int I,b,k=0;for(I=1;I=0) k+;printf(“%d,%d”,k,b);A.3,-1 B.8-1 C.3,0 D.8,-235.以下正确的描述是( )A. continue语句的作用是结束整个循环的执行B. 只能在循环体内和switch语句体内使用break语句C. 在循环体内使用break或continue语句D. 从多层循环嵌套中退出时,只能使用goto语句36下面程序段( )for(t=1;t=100;t+)scanf(“%d”,&x);if(x0) continue;ptintf(“%3d”,t);A. 当x=0时什麽也不输出C. printf函数永
26、也不执行D. 最多允许输出100个非负整数37下面程序段( )x=3;doy=x-;if(!y) printf(“x”); continue;printf(“#”);while(1=x=2);A.将输出# B.将输出#*C.是死循环 D.含有不合法的控制表达式38以下是死循环的是( )A.for(I=1; ; )if(+I%2=0) continueif(+I%3=0) break;B.I=32767;if(I0) break;while(+I);C.for(I=1; ; ) if(+I10) continue;D.i=1; while(I-);39.以下描述正确的是( )A goto语句只能
27、用于退出多层循环B switch语句中不能出现continue语句C 只能用continue语句来终止本次循环D 在循环中break语句不能独立出现40下面程序的运行结果是( )#includemain()int k=0; char c=A;do switch(c+)caseA:k+;break;caseB:k-;caseC:k+=2;break;caseD:k=k%2;continue;caseE:k=k*10;break;default:k=k/3;while(cG);printf(“k=%dn”,k);A.k=3 B.k=4 C.k=2 D.k=041.下面程序的运行结果是( )main
28、()int a,b;for(a=1,b=1;a=20)break; if(b%3=1) b+=3;continue;b=-5;ptintf(“%dn”,a);A.7 B.8 C.9 D.1042.下面程序的运行结果是( )main()int I,j,x=0;for(I=0;I2;I+)x+;for(j=0;j=3;j+)if(j%2)continue;x+;ptintf(“x=%dn”,x);A.x=4 B.x=8 C.x=6 D.x=1243.下面程序的运行结果是( )main()int I;for(I=1;I=5;I+)if(I%2) printf(“*”);else continue;p
29、rintf(“#”);printf(“$n”);A.*#*#*#$ B.#*#*#*$ C.*#*#$ D.#*#*$44.下面程序的运行结果是( )main()int I,j,a=0;for(I=0;I2;I+)for(j=0;j4;j+)if(j%2) break;a+;a+;printf(“%dn”,a);A.4 B.5 C.6 D.745.下面程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。请填空:int n=0,c; c=getchar();while( )if( ) n+; c=getchar();46.当运行以下程序时,从键盘输入right?,则下面程序的运行结果
30、是:#includemain( )char c;while(c=getchar()!=?) putchar(+c);)47.下面程序的运行结果是:main()int a,s,n,count;a=2;s=0;n=1;count=1;while(count=7) n=n*a;s=s+n;+count;printf(“s=%d”,d);48.当运行以下程序时,从键盘输入 China#,则下面程序的运行结果是:_#includemain()int v1=0, v2=0; char ch;while(ch=getchar()!=#)switch(ch)casea: caseh:default:v1+ca
31、seo:v2+;printf(“%d,%dn”,v1,v2);49.执行以下程序段以后,K值是:_K=1;n=263;Dok*=n%10; n/=10;while(n);50.下面程序段中循环体的执行次数是_a=10; b=0;dob+=2;a-=2+b;while(a0);51.下面程序段的运行结果是:_x=2;doprintf(“*”); x-;while(!x=0);52.下面程序段的运行结果是:_I=1; a=0; s=1;Do a=a+s*I;s=-s;I+;while(!x=10);Printf(“a=a%d”,a);53.当运行以下程序时,从键盘输入1 2 3 4 5 -1,则下
32、面程序的行结果是: _main()int k=0,n;doscanf(“%d”,&nn);k+=n;while(n!=-1);printf(“k=%d n=%d=n”,kn);54.下面程序的运行结果:_main()int I,x,y; I=x=y=0do+I;If(I%2!=0) x=x+I; I+;Y=y+I+;while(I=7);printf(“x=%d,y=%dn”,x,y);55.下面程序的运行结果是_main()int a,b,I; a=1; b=3; I=1;doprintf(%d,%d,a,b);a=(b-a)*2+b;b=(a-b)*2+a;if(I+%2=0) print
33、f(n);while(b100);56.当运行以下程序进,从键盘输入-1 0,则下面程序的运行结果是:_main()int a,b,m,n; m=n=1;scanf(“%d%d”,&a,&b);doif(a0)m=2*n;b+;else n=m+n;a+=2;b+;while(a=b);printf(“m=%dn=%d”,m,n);57.鸡兔共有30只,脚共有90个,下面程序段是计算鸡兔各有多少只,请填空。For(x=1;x=29;x+)y=30-x;if(_) printf(“%d,%dn”,x,y);58.下面程序段的运行结果是:for(a=1;I=-1;-1=I1;I+)a+;printf(“%2d”,a);peintf(“%2d”,I);59.若for循环体用以下形式表示:for(表达式;表达式;表达式)循环体语句则执行语句for(I=0;I3;I+) printf(“*”);时,表达式执行(_)次,表达式执行(_)次。60.下面程序的功能是计算的值,请填空。Main()int I,t=1,s=0;for(I=1;I=101;I+=2)_;
限制150内