第7章 分支结构习题解答(编程部分)
三、编程题
【题7.28】 编一程序,对于给定的一个百分制成绩,输出用像A,B,C,D,E表示的等级成绩。设:90分以上为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。(要求用switch语句编程)。
#include \main( ) {
int score,temp,logic; char grade; logic=1; while (logic)
{ printf(\ scanf(\ if ((score>100)||(score<0))
printf(\ else logic=0; printf(\ }
if (score==100) temp=9; else
temp=(score-score)/10; switch(temp)
{ case 9: grade='A'; break; case 8: grade='B'; break; case 7: grade='C'; break; case 6: grade='D'; break; case 5: case 4: case 3: case 2: case 1:
case 0: grade='E';
– 1 –
}
printf(\}
【题7.29】 根据从键盘输入的x,y值,写一程序以便按下列公式求z值。
x2?1?y2x?2x?2Z= Z?y2?1x?y#include
if (x>=0.0 && y>0.0) z=((x*x+1)/(x*x+2))*y; if (x>0.0 && y<=0.0) z=(x-2)/(y*y+1); if (x<0.0) z=x+y; printf(\}
x≥?0 ,y?020,3x?y≤?50 81321,,,,,...,1x?203581323581321, ,,,,1235813【题7.30】 编写一程序,实现从键盘输入一个字符时,如果该字符为小写字母,则转换为大写字母输出;如果该字符为大写字母,则转换为小写字母输出;如果为其他字符,原样输出。
#include
printf(\ x=getchar();
if ((x>='a') && (x<='z')) x-='a'-'A';
else if ((x>='A') && (x<='Z')) x+='a'-'A'; putchar(x); }
【题7.31】 征税的办法如下:收入在800元以下(含800元)的不征税;收入在800元以上,1200元以下者,超过800元的部分按5%的税率收税;收入在1200元以上,2000元以下者,超出1200元部分按8%的税率收税;收入在2000元以上者,2000元以上部分按20%的税率收税,试编写按收入计算税费的程序。(要求用switch语句编程序)
#include
– 2 –
{ int s,p; float tax;
printf(\ scanf(\ printf(\ if (s>800)
{if ((s-800)0!=0) p=(s-800)/100+1 ; else p=(s-800)/100; switch(p) { case 0: case 1: case 2: case 3:
case 4: tax=(s-800)*0.05; break;
case 5: tax=400*0.05+(s-1200)*0.08; break;
default:tax=400*0.05+800*0.08+(s-2000)*0.20;break; } }
else tax=0.0;
printf(\}
【题7.32】 输入一个整数,判断它能否被3,5,7整除。
#include
printf(\ scanf(\
if ((x%3==0) && (x%5==0)&& (x%7==0)) printf(\能被3,5,7整除\ else
printf(\不能被3,5,7整除\}
【题7.33】 用整数1~12依次表示1月~12月,由键盘输入一个月份数,输出对应的季节英文名称(12~2月为冬季;3~5月为春季;6~8月为夏季;9~11月为秋季。要求用if嵌套实现)。
– 3 –
#include
int month,r;
loop: printf(\~12):\\n\ scanf(\
if (month<1||month>12) goto loop; r=month; r=r/3;
if (r==0) printf(\ else if (r==1) printf(\ else if (r==2) printf(\ else printf(\}
【题7.34】 输入整数a,b,c,当a为1时显示b和c之和,a为2时显示b与c之差,a为3时显示b*c之积,a为4时取b/c之商,a为其他数值时不做任何操作。
#include
int a,b,c;
scanf(\ switch(a) {
case 1: printf(\ break;
case 2: printf(\ break;
case 3: printf(\ break;
case 4: printf(\ break; default: break; } }
【题7.35】 输入两个整数a和b,若a≥b时,求其积c并显示,若a
#include
– 4 –
int a,b,c;
scanf(\ if (a>=b) { c=a*b;
printf(\ } else { c=b/a;
printf(\ } }
【题7.36】 输入一个整数,将其数值按小于10,10~99,100~999,1000以上分类并显示。
#include
int a;
scanf(\ if (a>=100) { if (a>=1000)
printf(\ else
printf(\ } else { if (a<10)
printf(\ else
printf(\ } }
【题7.37】 编写输入一个整数,当为65时显示A,66时显示B,67时显示C,其他值时显示END的程序。
#include
int p;
printf(\scanf(\
– 5 –
}
switch(p)
case 65: printf(\case 66: printf(\case 67: printf(\default:printf(\
{
}
– 6 –