第四章选择结构习题集.docx
《第四章选择结构习题集.docx》由会员分享,可在线阅读,更多相关《第四章选择结构习题集.docx(12页珍藏版)》请在冰豆网上搜索。
![第四章选择结构习题集.docx](https://file1.bdocx.com/fileroot1/2023-1/8/8386ca5f-08d0-43c7-a83f-4f154e4949e7/8386ca5f-08d0-43c7-a83f-4f154e4949e71.gif)
第四章选择结构习题集
第五章选择结构练习题集
一、选择题
1、若k是int型变量,且有下面的程序片段:
k=-3
if(k<=0)printf("####")
elseprintf("&&&&");
上面程序片段的输出结果是()。
A.#### B.&&&& C.####&&&& D.有语法错误,无输出结果
2、设有定义:
intk=1,m=2;floatf=7;,则以下选项中错误的表达式是()。
A.k=k>=k
B.-k++
C.k%int(f)
D.k>=f>=m
3、设有定义:
inta=2,b=3,c=4;,则以下选项中值为0的表达式是()。
A.(!
a==1)&&(!
b==0)
B.(a>b)||(aC.a&&b
D.a||(b+b)&&(c-a)
4、有以下程序
main()
{
inta,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()
{inti=1,j=2,k=3;
if(i++==1&&(++j==3||k++==3))
printf("%d%d%d\n",i,j,k);
}
程序运行后的输出结果是()。
A.123B.234 C.223 D.233
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()
{
inta=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.2B.3C.43D.44
8、下列条件语句中,功能与其他语句不同的是()。
A.if(a)printf("%d\n",x);elseprintf("%d\n",y);
B.if(a==0)printf("%d\n",y);elseprintf("%d\n",x);
C.if(a!
=0)printf("%d\n",x);elseprintf("%d\n",y);
D.if(a==0)printf("%d\n",x);elseprintf("%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;
elsek=0;elsek=0;
C.if(a<=b)k=0; D.if(a>b)k=1;
elseif(b<=c)k=1; elseif(b>c)k=1;
11、有以下程序
main()
{inta=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()
{inti=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()
{inta=5,b=4,c=3,d=2;
if(a>b>c)
printf("%d\n",d);
elseif((c-1>=d)==1)
printf("%d\n",d+1);
else
printf("%d\n",d+2)
}
执行后输出结果是()。
A.2 B.3 C.4 D.编译时有错,无结果
14、已有定义:
intx=3,y=4,z=5;,则表达式!
(x+y)+z-1&&y+z/2的值是()。
A.6B.0 C.2D.1
15、有一函数,,以下程序段中不能根据x值正确计算出y值的是()。
A.if(x>0)y=1; B.y=0;
elseif(x==0)y=0; if(x>0)y=1;
elsey=-1; elseif(x<0)y=-1;
C.y=0; D.if(x>=0)
if(x>=0); if(x>0)y=1;
if(x>0)y=1; elsey=0;
elsey=-1; elsey=-1;
16、有以下程序
main()
{inta=15,b=21,m=0;
switch(a%3)
{case0:
m++;break;
case1:
m++;
switch(b%2)
{default:
m++;
case0:
m++;break;
}
}
printf(“%d\n”,m);
}
程序运行后的输出结果是()。
A.1 B.2 C.3 D.4
17、以下程序的输出结果是()。
main()
{inta=5,b=4,c=6,d;
printf("%d\n",d=a>b?
(a>c?
a:
c):
(b));
}
A.5B.4C.6D.不确定
18、以下程序的输出结果是()。
main()
{inta=4,b=5,c=0,d;
d=!
a&&!
b||!
c;
printf("%d\n",d);
}
A.1B.0C.非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.0B.1C.2D.3
20、阅读以下程序:
main()
{intx;
scanf(“%d”,&x);
if(x--<5)printf(“%d”’x);
elseprintf(“%d”’x++);
}
程序运行后,如果从键盘上输人5,则输出结果是()。
A.3B.4C.5D.6
21、假定w、x、y、z、m均为int型变量,有如下程序段:
w=1;x=2;y=3;z=4;
m=(w则该程序运行后,m的值是()。
A.4B.3C.2D.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
{intn;
scanf(“%d”,&n);
if(n++<10)printf(“%d\n”,n);
elseprintf(“%d\n”,n--);
}
24、若a、b、c1、c2、x、y、均是整型变量,正确的switch语句是()。
A.swich(a+b); B.switch(a*a+b*b)
{case1:
y=a+b;break;{case3:
case0:
y=a-b;break;case1:
y=a+b;break;
} case3:
y=b-a,break;
}
C.switcha D.switch(a-b)
{casec1:
y=a-b;break{default:
y=a*b;break
casec2:
x=a*d;breakcase3:
case4:
x=a+b;break
default:
x=a+b; case10:
case11:
y=a-b;break;
} }
25、能正确表示逻辑关系:
“a≥=10或a≤0”的C语言表达式是()。
A.a>=10ora<=0 B.a>=0|a<=10
C.a>=10&&a<=0 D.a>=10‖a<=0
26、有如下程序
main0
{intx=1,a=0,b=0;
switch(x){
case0:
b++;
case1:
a++;
case2:
a++;b++;
}
printf(“a=%d,b=%d\n”,a,b);
}
该程序的输出结果是()。
A.a=2,b=1B.a=1,b=1 C.a=1,b=0 D.a=2,b=2
27、有如下程序
main0
{floatx=2.0,y;
if(x<0.0)y=0.0;
elseif(x<10.0)y=1.0/x;
elsey=1.0;
printf(“%f\n”,y);
}
该程序的输出结果是()。
A.0.000000B.0.250000C.0.500000 D.1.000000
28、有如下程序
main0
{inta=2,b=-1,c=2;
if(aif(b<0)c=0;
elsec++
printf(“%d\n”,c);
}
该程序的输出结果是()。
A.0B.1C.2D.3
29、设intx=1,y=1;表达式(!
x||y--)的值是()。
A.0 B.1C.2D.-1
30、与y=(x>0?
1:
x<0?
-1:
0);的功能相同的if语句是()。
A.if(x>0)y=1;B.if(x)
elseif(x<0)y=-1;if(x>0)y=1;
elsey=0; elseif(x<0)y=-1;
elsey=0;
C.y=-1D.y=0;
if(x) if(x>=0)
if(x>0)y=1;if(x>0)y=1;
elseif(x==0)y=0;elsey=-1;
elsey=-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.-11 B.01 C.10D.00
main()
{inta=-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.6C.5D.4
main()
{intm=5;
if(m++>5)printf("%d\n",m);
esleprintf("%d\n",m--);
}
36、当a=1,b=3,c=5,d=5时,执行下面一段程序后,x的值为()。
A.1B.2C.3D.6
if(a>b)x=1;
elseif(c>d)a=a+b;
elseif(a>b)x=2;
elsex=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
main()
{inta,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、若有以下定义:
floatx;inta,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);
{case1:
printf("\n"); {case1:
printf(."*\n");
case1+2:
printf("**\n");case2:
printf("**\n");
} }
40、假定所有变量均已正确说明,下列程序段运行后x的值是()。
a=b=c=0;x=35;
if(!
a)x--;
elseif(b);
if(c)x=3;
elsex=4;
A.34B.4C.35D.3
41、在以下一组运算符中,优先级最高的运算符是()。
A.<= B.= C.%D.&&
42、表达式:
10!
=9的值是()。
A.trueB.非零值C.0D.1
43、在下列选项中,不正确的赋值语句是()。
A.++t;B.n1=(n2=(n3=0));
C.k=i==j; D.a=b+c=1;
44、能正确表示a≥10或a≤0的关系表达式是()。
A.a>=10ora<=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()
{intx;
scanf("%d",&x);
if(x++>5)printf("%d",x);
elseprintf("%d\n",x--);}
A.7和5 B.6和3 C.7和4 D.6和4
47、有以下程序
#include
main()
{inta,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()
{inta=-1,b=4,k;
k=(++a〈0)&&!
(b--〈=0);
printf("%d%d%d\n",k,a,b);}
A.104B.103 C.003 D.004
49、下面的程序()。
A.有语法错误不能通过编译 B.输出****
C.可以通过编译,但是不能通过连接,因而不能运行 D.输出####。
main()
{intx=3,y=0,z=0;
if(x=y+z)printf("****");
elseprintf("####");}
50、若执行下面的程序时从键盘上输入5,则输出是()。
A.7B.6C.5D.4
main()
{intx;
scanf("%d",&x);
if(x++>5)printf("%d\n",x);
elseprintf("%d\n",x--);}
二、程序分析
1、以下程序运行后的输出结果是【1】。
main()
{inta=1,b=2,c=3;
if(c=a)printf("%d\n",c);
elseprintf("%d\n",b);
}
2、以下程序运行后的输出结果是【2】。
main()
{
inta=3,b=4,c=5,t=99;
if(bif(aprintf("%d%d%d\n",a,b,c);
}
3、以下程序运行后的输出结果是【3】。
main()
{
inta,b,c
a=10;b=20;c=(a%b<1)||(a/b>1);
printf("%d%d%d\n",a,b,c);
}
4、以下程序运行后的输出结果是【4】。
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
}
printf("%d%d\n",a,b);
}
5、有以下程序执行后输出结果是【5】。
main()
{intn=0,m=1,x=2;
if(!
n)x-=1;
if(m)x-=2;
if(x)x-=3;
printf(“%d\n”,x);
}
6、以下程序运行后的输出结果是【6】。
main()
{intp=30;
printf(“%d\n”,(p/3>0?
p/10:
p%3));
}
7、以下程序运行后的输出结果是【7】。
main()
{inta=1,b=3,c=5;
if(c=a+b)printf("yes\n");
elseprintf("no\n");
}
8、若有以下程序执行后输出结果是 【8】 。
main()
{intp,a=5;
if(p=a!
=0)
printf("%d\n",p);
else
printf("%d\n",p+2);
}
9、若有以下程序执行后输出结果是【9】。
main()
{inta=4,b=3,c=5,t=0;
if(aif(aprintf("%d%d%d\n",a,b,c);
}
10、以下程序运行后的输出结果是【10】。
main()
{intx=10,y=20,t=0;
if(x==y)t=x;x=y;y=t;
printf(“%d,%d\n”,x,y);
}
11、若从键盘输入58,则以下程序输出的结果是【11】。
main()
{inta;
scanf("%d",&a);
if(a>50)printf("%d",a);
if(a>40)printf("%d",a);
if(a>30)printf("%d",a);
}
12、以下程序输出的结果是【12】。
main()
{inta=5,b=4,c=3,d;
d=(a>b>c);
printf("%d\n",d);
}
三、编程题
1.编写程序,输入x的值,输出y的值。
2*x+5x>5;
y=x*(x+2)22*x-12税务部门征收所得税,规定如下:
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)10200(4)21(5)-4(6)3(7)yes(8)1(9)503(10)20,0(11)585858(12)0