switch语句练习
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
switch语句练习
第五章switch语句练习题
1.若运⾏时输⼊:3 5/<回车>,则以下程序的运⾏结果是________
main( )
{float x,y;
char o;
double r;
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);}
2. 根据以下嵌套的if语句所给条件,填写switch语句,使它完成相同的功能. (假设mark的取值在1~100之间的整数.) if语句:
if(mark<60)k=1;
else if(mark<70)k=2;
else if(mark<80)k=3;
else if(mark<90)k=4;
else if(mark<100)k=5;
switch语句:
switch( [1] )
{[2] k=1; break;
case 6: k=2: break; case 7: k=3; break;
case 8: k=4; break;
[3] k=5;
3.设有程序⽚段:
switch(grade)
{case ’A’:printf(“85-100\n”);
case ’B’:printf(“70-84n”);
case ’C’:printf(“60-69\n”);
case ’D’:printf(“<60\n”);
default:printf(“error!\n”);}
若grade的值为’C’,则输出结果是_________.
4.以下程序段的运⾏结果是_____.
int x=1,y=0;
switch(x)
{case 1:
switch(y)
{case 0:printf(“**1**\n”);break;
case 1:printf(“**2**\n”);break;}
case 2:printf(“**3**\n”);}
5.根据以下函数关系,对输⼊的每个x值,计算出相应的y值,请在程序的( ) 内填正确内容
main( )
{int x,c,m;
float y;
scanf(“%d”,&x);
if(1)c=-1;
else c=(2);
switch(c)
{case -1;y=0;break;
case 0:y=x;break;
case 1:y=10;break;
case 2:
case 3:y=-0.5*x+20;break; default:y=-2;}
if(3)printf(“y=%f”,y);
else printf(“error\n”);} 6.以下程序的运⾏结果是( ) main( )
{int a=2,b=7,c=5;
switch(a>0)
{case 1:switch(b<0)
{case 1:printf(“@”);break; case 2:printf(“!”);break;} case 0:switch(c= =5)
{case 0:printf(“*”);break; case 1:printf(“#”);break;
default:printf(“#”);break;}
default:printf(“&”);
}printf(“\n”);}
7.请读程序:
#include
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”,a,b);}
上⾯程序的运⾏结果是( )
8.假设奖⾦税率如下(a代表奖⾦,r代表税率)
a<500 r=0%
500<=a<1000 r=5%
1000<=a<2000 r=8%
2000<=a<3000 r=10%
3000<=a r=15%
以下程序对输⼊的⼀个奖⾦数,求税率和应交税款以及实得奖⾦数(扣除奖⾦税后).题中r代表税率,t代表税款,b代表实得奖⾦数.在( )内填正确内容
main( )
{float a,r,t,b;
int c;
scanf(“%f”,&a);
if(a>=3000)c=6;
else c=[1];
switch(c)
{case 0:r=0;break;
case 1:r=0.05;break;
case 2:
case 3:[2];break;
case 4:
case 5:r=0.1;break;
case 6:r=0.15;break;}
t=a*r;
b=a-t;
printf(“r=%f,t=%f,b=%f”,r,t,b);}
9.某个⾃动加油站有’a’,b’,’c’三种汽油,单价分别为 1.50,1.35,1.18(元/千克),也提供了“⾃⼰加”或“协助加”两个服务等级,这样⽤户可以得到5%或10%的优惠.本程序针对⽤户输⼊加油量a,汽油品种b和服务类型c(‘f’--⾃动,’m’-- ⾃⼰,’e’--协助 ),输出应付款m请在[ ]内填⼊正确内容.
main( )
{float a,rl,r2,m;
char b,c;
scanf(“%f%c%c”,&a,&b,&c);
switch(b) {case ’a’:r1=1.5;break;
case ’b’:[ 1];break;
case ’c’:rl=1.18;break;}
switch(c)
{case ’f’:r2=0;break;
case ’m’:r2=0.05;break;
case [2]:r2=0.1;break;}
m=[3];
printf(“%f”,m);}
10.以下程序计算某年某⽉有⼏天.其中判别闰年的条件是:能被4整除但不能被100整除的年是闰年,能被400整除的年也是闰年.请在[ ]内填⼊正确内容.
main( )
{
int yy,mm,len;
printf(“year,month=”);
scanf(“%d %d”,&yy,&mm);
switch(mm)
{case 1:case 3:case 5:case 7:
case 8:case 10:case 12:[1];break;
case 4:case 6: case 9:case 11:len=30;break;
case 2:
if(yy%4= =0&&yy%100!=0||yy%400= =0)[2];
else[3];
default:printf(“input error”)
break;}
printf(“the length of %d %dis%d\n”,yy,mm,len);}
11.以下程序⽤以计算y年ml⽉dl⽇与同年的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( )
{int y,ml,dl,m2,d2;
int i ,d
scanf(“%d,%d,%d,%d,%d,”&y,&ml,&dl,&m2,&d2);
y=(y%4= =0( )y%100!=0( )y%400= =0))1:0;
d=0-d1;
for(i=m1;i
switch(i)
{case 1:case 3:case 5:case 7:
case 8:case 10:case 12:
d+=31;
break;
case2:d=d+28+y;
break;
case4:case6:case9:case11:
( );}
printf(“%d”,d+d2+1);}
12.将以下程序段改⽤⾮嵌套的if语句实现
int s,t,m; t=(int)(s/10);
switch(t)
{case 10:m=5,break;
case 9:m=4;break;
case 8:m=3,break;
case 7:m=2,break;
case 6:m=1,break;
default m=0;}
13.⽤switch编程实现:
y=
>
=
<
-
)0
(1
)0
(0
)0
(1
x
x
x
14.将以下程序段改⽤嵌套的if语句实现int s,t,m;
t=(int)(s/10);
switch(t)
{case 10:m=5,break
case 9:m=4,break
case 8:m=3,break
case 7:m=2,break
case 6:m=1,break
default:m=0}
15.将以下语句改写成switch语句
if((s>0)&&(s<=10))
if((s>=3)&&(s<=6))x=2;
else if((s>1)||(s>8))x=3;
else x=1
else x=0
16.编程实现以下功能:读⼊两个运算数(datal和data2)及⼀个运算符(op),计算表达式data1 op data2的值,其中op可为+,-,*,/(⽤switch语句实现)
17.编⼀程序,对于给定的⼀个百分制成绩,输出相应的五分制成绩,设90分以上为’A’80~89为’B’70~79为’C’60~69为’D’60以下’E’(⽤switch语句实现)。