第04章 选择结构.docx
《第04章 选择结构.docx》由会员分享,可在线阅读,更多相关《第04章 选择结构.docx(22页珍藏版)》请在冰豆网上搜索。
![第04章 选择结构.docx](https://file1.bdocx.com/fileroot1/2023-2/6/bed34a6d-3a03-47a7-b0ef-59ad996d99f2/bed34a6d-3a03-47a7-b0ef-59ad996d99f21.gif)
第04章选择结构
一、选择题
1.以下不正确的if语句形式是______。
A)if(x>y&&x!
=y);
B)if(x==y)x+=y;
C)if(x!
=y)scanf(“%d”,&x)elsescanf(“%d”,&y);
D)if(x2.已知intx=10,y=20,z=30;以下语句执行后x,y,z的值是______。
if(x>y)z=x;x=y;y=z;
A)x=10,y=20,z=30B)x=20,y=30,z=30
C)x=20,y=30,z=10D)x=20,y=30,z=20
3.以下if语句语法正确的是______。
A)if(x>0)
printf(“%f”,x);
elseprintf(“%f”,-x);
B)if(x>0)
{x=x+y;printf(“%f”,x);}
C)if(x>0)
{x=x+y;printf(“%f”,x);};
elesprintf(“%f”,-x);
D)if(x>0)
{x=x+y;printf(“%f”,x)}
elseprintf(“%f”,-x);
4.请阅读以下程序:
main()
{
inta=5,b=0,c=0;
if(a=b+c)printf(“***\n”);
elseprintf(“$$$\n”);
}
以上程序______。
A)有语法错误不能通过编译B)可以通过编译但不能通过连接
C)输出***D)输出$$$
5.以下程序的运行结果是______。
main()
{
intm=5;
if(m++>5)printf(“%d\n”,m);
elseprintf(“%d\n”,m--);
}
A)4B)5C)6D)7
6.当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是______。
if(a
if(celse
if(aif(belsex=3;
elsex=6;
elsex=7;
A)1B)2C)3D)6
7.有一个函数关系见下表:
x
y=
x<0
x-1
x=0
x
x>0
x+1
下面程序中能正确表示上面关系的是______。
A)y=x+1
if(x>=0)
if(x==0)y=x;
B)elsey=x-1;y=x-1;
if(x!
=0)
if(x>0)y=x+1;
elsey=x;
C)if(x<=0)
if(x<0)y=x-1;
elsey=x;
D)elsey=x+1;y=x;
if(x<=0)
if(x<0)y=x-1;
elsey=x+1;
8.以下程序的输出结果是______。
main()
{
inta=100,x=10,y=10,ok1=5,ok2=0;
if(xif(y!
=10)
if(!
ok1)
a=1;
else
if(ok2)a=10;
a=-1;
printf(“%d\n”,a);
}
A)1B)0C)–1D)值不确定
9.以下程序的输出结果是______。
main()
{
intx=2,y=-1,z=2;
if(xif(y<0)z=0;
elsez+=1;
printf(“%d\n”,z);
}
10.为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:
else子句总量与______配对。
A)缩排位置相同的ifB)其之前的最近的if
C)其之后最近的ifD)同一行上的if
11.以下不正确的语句为______。
A)if(x>y);
B)if(x=y)&&(x!
=0)x+=y;
C)if(x!
=y)scanf(“%d”,&x);elsescanf(“%d”,&y);
D)if(x12.请阅读以下程序:
#include“stdio.h”
main()
{
floata,b;
scanf(“%f”,&a);
if(a<0.0)b=0.0;
elseif((a<0.5)&&(a!
=2.0))b=1.0/(a+2.0);
elseif(a<10.0)b=1.0/x;
elseb=10.0;
prinf(“%f\n”,y);
}
若运行时输入2.0<回车>,则上面程序的输出结果是______。
A)0.000000B)0.500000C)1.000000D)0.250000
二、程序阅读题
13.请阅读以下程序:
main()
{
intt,h,m;
scanf(“%d”,&t);
h=(t/100)%12;
if(h==0)h=12;
printf(“%d:
”,h);
m=t%100;
if(m<10)printf(“0”);
printf(“%d”,m);
if(t<1200||t==2400)
printf(“AM”);
elseprintf(“PM”);
}
若运行时输入:
1605<回车>时,程序的运行结果是______。
14.若运行是输入:
5999<回车>,则以下程序的运行结果(保留小数点后一位)是______。
main()
{
intx;
floaty;
scanf(“%d”,&x);
if(“x>=0&&x<=2999)y=18+0.12*x;
if(“x>=3000&&x<=5999)y=36+0.6*x;
if(“x>=6000&&x<=10000)y=54+0.3*x;
printf(“%6.1f”,y);
}
15.以下程序实现输出x,y,z三个数中的最大者。
请在_____内填入正确内容。
main()
{
intx=4,y=6,z=7;
int__1__;
if(__2__)u=x;
elseu=y;
if(__3___)v=u;
elsev=z;
printf(“v=%d”,v);
}
16.以下程序实现:
输入三个整数,按从大到小的顺序进行输出。
请在_____内填入正确的内容。
main()
{
intx,y,z,c;
scanf(“%d%d%d”,&x,&y,&z);
if(__1__)
{c=y;y=z;z=c;}
if(__2__)
{c=x;x=z;z=c};
if(__3__)
{c=x;x=y;y=c;}
printf(“%d,%d,%d”,x,y,z);
}
17.以下程序对输入的两个整数,按从大到小顺序输出。
请在_____填入正确内容。
main()
{
intx,y,z;
scanf(“%d,%d”,&x,&y);
if(__1__)
{z=x;__2__}
printf(“%d,%d”,x,y);
}
18.以下程序对输入的一个小写字母,将字母循环后移5人位置输出。
如’a’变成’f’,’w’变成’b’。
请在_____内填入正确内容。
#include“stdio.h”
main()
{
charc;
c=getchar();
if(c>=’a’&&c<=’u’)__1__;
elseif(c>=’v’&&c<=’z’)__2__;
putchar(c);
}
19.输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其它字符不变。
请在_____内填入正确内容。
main()
{
charch;
scanf(“%c”,&ch);
if(_____)ch=ch+32;
elseif(ch>=’a’&&ch<=’z’)_____;
printf(“%c”,ch);
}
20.以下程序的运行结果是_____。
main()
{
inta,b,c;
ints,w,t;
s=w=t=0;
a=-1;b=3;c=3;
if(c>0)s=a+b;
if(a<=0)
{
if(b>0)
if(c<=0)w=a-b;
}
elseif(c>0)w=a-b;
elset=c;
printf(“%d%d%d”,s,w,t);
}
21.以下程序的运行结果是_____。
main()
{
inta,b,c,d,x;
a=c=0;
b=1;
d=20;
if(a)d=d-10;
elseif(!
b)
if(!
c)x=15
elsex=25;
printf(“%d\n”,d);
22.以下程序的运行结果是_____。
#include“stdio.h”
voidmain(void)
{
intx,y=1,z;
if(y!
=0)x=5;
printf(“\t%d\n”,x);
if(y==0)x=4;
elsex=5;
printf(“\t%d\n”,x);
x=1;
if(y<0)
if(y>0)x=4;
elsex=5;
printf(“\t%d\n”,x);
}
23.以下程序的运行结果是_____。
#include“stdio.h”
voidmain(void)
{
intx,y=-2,z=0;
if((z=y<0)x=4;
elseif(y==0)x=5;
elsex=6;
printf(“\t%d\t%d\n”,x,z);
if(z=(y==0))
x=5;
x=4;
printf(“\t%d\t%d\n”,x,z);
if(x=z=y)x=4;
printf(“\t%d\t%d\n”,x,z);
}
24.请阅读的程序。
main()
{
ints,t,a,b;
scanf(“%d,%d”,&a,&b);
s=1;
t=1;
if(a>0)s=s+1;
if(a>b)t=s+t;
elseif(a==b)t=5;
elset=2*s;
printf(“s=%d,t=%d”,s,t);
}
为了使输出结果t=4,输入量a和b应满足的条件是_____。
25.请阅读的程序。
main()
{
ints,t,a,b;
scanf(“%d,%d”,&a,&b);
s=1;
t=1;
if(a>0)s=s+1;
if(a>b)t=s+t;
elseif(a==b)t=5;
elset=2*s;
printf(“s=%d,t=%d”,s,t);
}
为了使输出结果s=1,t=5,输入量a和b应满足的条件是_____。
26.以下程序的功能是计算一元二次方程ax2+bx+c=0的根。
请在_____内填入正确的内容。
#include“math.h”
main()
{
floata,b,c,t,disc,twoa,term1,term2;
printf(“entera,b,c:
”);
scanf(“%f%f%f”,&a,&b,&c);
if(__1__)
if(__2__)printf(“noanswerduetoinputerror\n”);
elseprintf(“thesinglerootis%f\n”,-c/b);
else
{
disc=b*b-4*a*c;
twoa=2a;
term1=-b/twoa;
t=abs(disc);
term2=sqrt(t)/twoa;
if(__3__)
printf(“complexroot\nrealpart=%fimagpart=%f\n”,term1,term2);
elseprintf(“realroots\nroot1=%froot2=%f\n”,term1+term2,term1-term2);
}
}
27.以下程序根据输入的三角形的三边判断是否能组成三角形,若可以则输出它的面积和三角形的类型。
请在_____内填入正确的内容。
#include“stdio.h”
main()
{
floata,b,c;
floats,area;
scanf(“%f%f%f”,&a,&b,&c);
if(__1__)/*a+b>c&&|a+c>b&&b+c>a*/
{
s=(a+b+c)/2;
arae=sqrt(s*(s-a)*(s-b)*(s-c));
printf(“%f”,area);
if(__2__)/*a==b&&b==c&&a==c*/
printf(“等边三角形”);
elseif(__3__)
printf(“等腰三角形”);/*a==b||a==c||b==c*/
elseif((a*a+b*b==c*c)||(a*a+c*c==b*b)||(b*b+c*c==a*a))
printf(“直角三角形”);
elseprintf(“一般三角形”);
}
elseprintf(“不能组成三角形”);
}
28.某邮局对邮寄包裹有如下规定:
若包裹的长宽高任一尺寸超过1米或重量超过30千克,不予邮寄;对可以邮寄的包裹每件收手续费0.2元,再上根据下表按重量wei计算的邮资:
重量(千克)
收费歀(元)
wei<10
0.80
100.75
200.7
请在程序的_____内填入正确内容。
main()
{
floatlen,wei,hei,wid,mon,r;
scanf(“%f%f%%f”,&len,&wid,&hei,&wei);
if(len>1||wid>1||hei>1||wei>30)__1__;
elseif(wei<10)r=0.8;
elseif(wei<=20)r=0.75;
elseif(wei<=30)__2__;
if(r==-1)printf(“error\n”);
else
{
__3__;printf(“%f”,mon);
}
}
29.某服装店经营套服,也单件出售。
若买的不少于50套,每套80元;不足50套的每套90元;只买上衣每件60元;只买裤子每条45元。
以下程序的功能是读入所买上衣c和裤子t的件数,计算应付款m。
请在_____内填正确内容。
main()
{
intc,t,m;
printf(“inputthenumberofcoatandtrousersyourwantbuy:
\n”);
scanf(“%d%d”,&c,&t);
if(__1__)
if(c>=50)m=c*m;
elsem=c*90;
else
if(__2__)
if(t>=50)m=t*80+(c-t)*60;
elsem=t*90+(c-t)*60;
elseif(__3__)m=c*80+(t-c)*45;
elsem=c*90+(t-c)*45;
printf(“%d”,m;)
}
30.以下程序的功能是判断输入的年份是否是闰年。
请在_____内填入正确内容。
main()
{
inty,f;
scanf(“%d”,&y);
if(y%400==0)f=1;
elseif(__1__)f=1;
else__2__;
if(f)printf(“%dis”,y);
elseprintf(“%disnot”,y);
printf(“aleapyear\n”);
}
31.以下程序针对输入截止日期(年:
year,月:
mend,日:
dend)和出生日期(yman,mman,dman),计算出实际年龄。
请在_____内填入正确内容。
设有:
intyend,mend,dend,mman,dman,age;
age=yend-yman;
if(mend__1_),age--;
elseif(mend__2__mman&&dend__3__dman)
age--;
32.有四个数a,b,c,d,要求按从大到小的顺序输出。
请在_____内填入正确内容。
main()
{
inta,b,c,d,t;
scanf(“%d%d%d%d”,&a,&b,&c,&d);
if(a
if(__1__){t=c;c=d;d=t;}
if(aif(__2___){t=b;b=c;c=t}
if(bif(cprintf(“%d%d%d%d\n”,a,b,c,d);
}
33.以下程序的运行结果是_____。
main()
{
inta=2,b=3,c;
c=a;
if(a>b)c=1;
elseif(a==b)c=0;
elsec=-1;
printf(“%d\n”,c);
}
34.当运行时输入:
1992<回车>,则以下程序的运行结果是_____。
main()
{
inty,t;
scanf(“%d”,&y);
t=((y%4==0&&y%100!
=0)||y%400==0)?
1:
0;
if(t)printf(“%dis”,y);
elseprintf(“%disnot”,y);
printf(“aleapyear”);
}
35.若运行时输入:
35/<回车>,则以下程序的运行结果是_____。
main()
{
floatx,y;
charo;
doubler;
scanf(“%f%f%c”,&x,&y,&o);
switch(o)
{
case‘+’:
r=x+y;break;
case‘-’:
r=x-y;break;
case‘*’:
r=x*y;break;
case‘/’:
r=x/y;break;
}
printf(“%f”,r);
}
36.设有程序片段:
switch(grade)
{
case‘A’:
printf(“85-100\n”);
case‘B:
printf(“70-84\n”);
case‘C’:
printf(“60-69\n”);
case‘D’:
printf(“<60\n”);
default:
printf(“error!
\n”);
}
若grade的值为’C’,则输出结果是______。
37.以下程序的运行结果是______。
intx=1,y=0;
switch(x)
{
case1:
switch(y)
{
case0:
printf(“**1**\n”);break;
case1:
printf(“**2**\n”);break;
}
case2:
printf(“**3**\n”);
}
38.以下程序的运行结果是______。
main()
{
inta=2,b=7,c=5;
switch(a>0)
{
case1:
switch(b<0)
{
case1:
printf(“@”);break;
casa2:
printf(“!
”);break;
}
case0:
switch(c==5)
{
case0:
printf(“*”);break;
case1:
printf(“#”);break;
default:
printf(“#”);break;
}
default:
printf(“&”);
}
printf(“\n”);
}
39.请读程序:
#include
{
intx=1,y=0,a=0,b=0;
switch(x)
{
case1:
switch(y)
{
case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
}
printf(“a=%d,b=%d”,a,b);
}
40.以下程序用以计算y年m1月d1日与同年的m2月d2日之间的天数(m2>=m1),并打印计算结果。
若m1=m2且d1=d2则计算1天。
在闰年中,2月有29天。
闰年的年号由以下方式确定:
该年号能被能被4整除但不能被100整除,或者该年号能被400整除则是闰年。
例如:
输入1997,2,27,3,10<回车>时,输出为12天。
表明从1997年2月27日到3月10日共有12天。
请在______内填入正确内容。
main()
{
inty,m1,d1,m2,d2;
inti,d;
scanf(“%d%d%d,%d,%d”,&y,&m1,&d1,&m2,&d2);
y=(y%4==0___1___y%100!
=0___2___y%40==0)?
1:
0;
d=0-d1;
for(i=m1;iswitch(i)
{
case1:
case3:
case5:
case7:
case8:
case10:
casae12:
d+=31;
break;
case2:
d=d+28+y;
break;
case4:
case6:
case9:
case11:
______;
}
printf(“%d”,d+d2+1);
}
答案:
一、选择题
题号
1
2
3
4
5
6
7
8
9
10
11
12
C
B
B
D
C
B
C
C
B
B
B
B
二、程序阅读题
题号
13
14
15
16
17
4:
05PM
3636.4
1)uv2)x>y3)u>z
1)y3)x1)x2)