资源描述
第五章 选择结构练习题集
一、选择题
1、若k是int型变量,且有下面的程序片段:
k=-3
if(k<=0) printf("####")
else printf("&&&&");
上面程序片段的输出结果是 ( ) 。
A.#### B.&&&& C.####&&&& D.有语法错误,无输出结果
2、设有定义:int k=1,m=2; float f=7;,则以下选项中错误的表达式是( ) 。
A.k=k>=k
B.-k++
C.k%int(f)
D.k>=f>=m
3、设有定义:int a=2,b=3,c=4;,则以下选项中值为0的表达式是 ( )。
A.(!a==1)&&(!b==0)
B.(a>b)||(a<c)
C.a && b
D.a||(b+b)&&(c-a)
4、有以下程序
main()
{
int a,b,d=25;
a=d/10%9;
b=a&&(-1);
printf("%d,%d\n",a,b);
}
程序运行后的输出结果是 ( )。
A.6,1 B.2,1 C.6,0 D.2,0
5、有以下程序
main()
{ int i=1,j=2,k=3;
if(i++==1&&(++j==3||k++==3))
printf("%d %d %d\n",i,j,k);
}
程序运行后的输出结果是( ) 。
A.1 2 3 B.2 3 4 C.2 2 3 D.2 3 3
6、若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是 ( )。
A. abs(x-y)<10 B.x-y>-10&& x-y<10
C. (x-y)<-10||!(y-x)>10 D.(x-y)*(x-y)<100 &&(x-y)*(x-y)>-100
7、有以下程序
main()
{
int a=3,b=4,c=5,d=2;
if(a>b)
if(b>c)
printf("%d",d++ +1);
else
printf("%d",++d +1);
printf("%d\n",d);
}
程序运行后的输出结果是 ( )。
A.2 B.3 C.43 D.44
8、下列条件语句中,功能与其他语句不同的是 ( )。
A.if(a) printf("%d\n",x); else printf("%d\n",y);
B.if(a==0) printf("%d\n",y); else printf("%d\n",x);
C.if (a!=0) printf("%d\n",x); else printf("%d\n",y);
D.if(a==0) printf("%d\n",x); else printf("%d\n",y);
9、以下4个选项中,不能看作一条语句的是 ( )。
A. { ; }
B.a=0,b=0,c=0;
C.if(a>0);
D.if(b==0) m=1;n=2;
10、以下程序段中与语句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; 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;
11、有以下程序
main()
{int a=1,b=2,m=0,n=0,k;
k=(n=b>a)||(m=a)printf("%d,%d\n",k,m);
}
程序运行后的输出结果是 ( )。
A. 0,0 B.0,1 C.1,0 D. 1,1
12、有以下程序
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
13、有以下程序
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.编译时有错,无结果
14、已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1 && y+z/2的值是( )。
A.6 B.0 C.2 D.1
15、 有一函数, ,以下程序段中不能根据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;
16、有以下程序
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
17、 以下程序的输出结果是( )。
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.不确定
18、 以下程序的输出结果是 ( )。
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
19、设 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
20、 阅读以下程序:
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
21、假定w、x、y、z、m均为int型变量,有如下程序段:
w=1; x=2; y=3; z=4;
m=(w则该程序运行后,m的值是 ( )。
A.4 B.3 C.2 D.1
22、 设x、y、t均为int型变量,则执行语句:x=y=3;t=++x||++y;后,y的值为 ( )。
A.不定值 B.4 C.3 D.1
23、若执行以下程序时从键盘上输入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--);
}
24、 若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;
} }
25、能正确表示逻辑关系:“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
26、有如下程序
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
27、有如下程序
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
28、 有如下程序
main0
{ int a=2,b=-1,c=2;
if(aif(b<0) c=0;
else c++
printf(“%d\n”,c);
}
该程序的输出结果是 ( )。
A.0 B.1 C.2 D.3
29、 设 int x=1, y=1; 表达式(!x||y--)的值是( )。
A.0 B. 1 C.2 D.-1
30、与 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;
31、语句:printf("%d",(a=2)&&(b= -2);的输出结果是 ( )。
A.无输出 B.结果不确定 C. -1 D.1
32、当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是 ( )。
A.c=b=a B.(a=c) ‖(b=c) C.(a=c) &&(b=c) D.a=c=b
33、能正确表示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
34、 以下程序的输出结果是
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);
}
35、以下程序输出结果是( )。
A.7 B. 6 C.5 D.4
ma in()
{ int m=5;
if(m++>5) printf("%d\n",m);
esle printf("%d\n",m- -);
}
36、当a=1,b=3,c=5,d=5时,执行下面一段程序后,x的值为 ( )。
A.1 B.2 C.3 D.6
if(a >b) x=1;
else if(c>d)a=a+b;
else if(a >b)x=2;
else x=3;
37、表示关系x<=y<=z的c语言表达式为 ( )。
A.(X<=Y)&&(Y<=Z)
B.(X<=Y)AND(Y<=Z)
C.(X<=Y<=Z)
D.(X<=Y)&(Y<=Z)
38、有以下程序
#include <stdio.h>
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
39、若有以下定义:
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");
} }
40、假定所有变量均已正确说明,下列程序段运行后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
41、在以下一组运算符中,优先级最高的运算符是( )。
A.<= B.= C.% D.&&
42、表达式:10!=9的值是 ( )。
A.true B.非零值 C.0 D.1
43、在下列选项中,不正确的赋值语句是( )。
A.++t; B.n1=(n2=(n 3=0));
C.k=i==j; D.a=b+c=1;
44、能正确表示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
45、为表示关系x≥y≥z,应使用C语言表达式 ( )。
A.(x>=y)&&(y>=z)
B.(x>=y)AND(y>=z)
C.(x>=y>=z)
D.(x>=y)&(y>=z)
46、两次运行下面的程序,如果从键盘上分别输入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
47、有以下程序
#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
48、 以下程序的输出结果是 ( )。
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
49、下面的程序 ( )。
A.有语法错误不能通过编译 B.输出* * * *
C.可以通过编译,但是不能通过连接,因而不能运行 D.输出# # # #。
main()
{ int x=3,y=0,z=0;
if(x=y+z)printf("* * * *");
else printf("# # # #");}
50、若执行下面的程序时从键盘上输入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--);}
二、程序分析
1、以下程序运行后的输出结果是 【1】 。
main()
{ int a=1,b=2,c=3;
if(c=a) printf("%d\n",c);
else printf("%d\n",b);
}
2、以下程序运行后的输出结果是 【2】。
main()
{
int a=3,b=4,c=5,t=99;
if(b if(a printf("%d%d%d\n",a,b,c);
}
3、以下程序运行后的输出结果是 【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、有以下程序执行后输出结果是【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);
}
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");
}
8、若有以下程序执行后输出结果是 【8】 。
main()
{ int p,a=5;
if(p=a!=0)
printf("%d\n",p);
else
printf("%d\n",p+2);
}
9、若有以下程序执行后输出结果是 【9】 。
main()
{ int a=4,b=3,c=5,t=0;
if(a if(a printf("%d %d %d\n",a,b,c);
}
10、以下程序运行后的输出结果是 【10】。
main()
{ int x=10,y=20,t=0;
if(x==y)t=x;x=y;y=t;
printf(“%d,%d \n”,x,y);
}
11、 若从键盘输入58,则以下程序输出的结果是 【11】 。
main()
{ int a;
scanf("%d",&a);
if(a>50) printf("%d",a);
if(a>40) printf("%d",a);
if(a>30) printf("%d",a);
}
12、 以下程序输出的结果是【12】 。
main()
{ int a=5,b=4,c=3,d;
d=(a>b>c);
printf("%d\n",d);
}
三、编程题
1.编写程序,输入x的值,输出y的值。
2*x+5 x>5;
y= x*(x+2) 2<x<=5;
2*x -1<x<=2;
2税务部门征收所得税,规定如下:
1) 收入在2000以内的免征;
2) 收入在2000-4000之间的超过2000部分纳税3%;
3) 收入超过4000元的,超过4000部分纳税4%;
4) 收入达到或者超过5000元的,超过5000的部分纳税5%;
编写一个程序,计算应缴税费,将结果输出。
3、输入某年某月某日,判断这一天是这一年的第几天。(例:2012-3-4是2012年的第几天)
答案:
一、选择题
1-10:DCABDCADDD
11-20:ACBDCACACB
21-30:DCBDDACCBA
31-40:DCDCBBAACB
41-50:CDDDAADDBC
二、填空题
(1) 1 (2) 4599 (3) 10 20 0 (4) 2 1 (5) -4 (6) 3 (7) yes (8) 1 (9) 5 0 3 (10) 20,0 (11) 585858 (12) 0
展开阅读全文