第五章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值,请在程序的(  )
内填正确内容
x
y
x<0
0
0<=x<10
x
10<=x<20
10
20<=x<40
-0.5x+20
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<stdio.h>
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:switch语句必须使用break吗
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<m2;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=
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分以上为A80~89为B70~79为C60~69为D60以下E(用switch语句实现)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。