成绩等第C语⾔case语句,C语⾔初步-第26讲:利⽤switch语句
解决问题(成绩等级)...
任务和代码:
/*
*Copyright (c)2017 CSDN学院
*All rights reserved
*⽂件名称:main.c
*作者: Osseyda
完成⽇期:2017.9.14
*版本号:v2.
*
*问题描述:给出⼀百分制成绩,要求输出成绩等级’A’,’B’,’C’,’D’,’E’。90分以上为’A’,80-89分为’B’,70-79分为’C’,60-69分为’D’,60分以下为’E’。
*问题输出:输出与分数对应的等级
*/
#include #include int main ( ){
int grade,rate;;
printf("所得成绩:");
scanf("%d",&grade);
rate=(grade>60)+(grade>70)+(grade>80)+(grade>90);
switch(rate){
case 0:
printf("输出等级:E");
break;
case 1:
printf("输出等级:D");
break;
case 2:
printf("输出等级:C");
break;
case 3:
printf("输出等级:B");
break;
default:
printf("输出等级:A");
switch的用法c语言
}
return 0;
}运⾏结果:
知识点总结:
1.if的多分⽀结构转换成switch语句;
2.break及时退出;
3.如何将分段区间转换成简单的标准量(将各个区间的部分⽤逻辑表达式表出后相加)
⼼得:
if的多分枝结构类似分段函数,这样的话⼀定能够⽤switch语句表达出来吧。同讲中“计算运费”能否也这样表⽰呢?
任务和代码:
/*
*Copyright (c)2017 CSDN学院
*All rights reserved
*⽂件名称:main.c
*作者: Osseyda
完成⽇期:2017.9.14
*版本号:v2.
*
*问题描述:每公⾥每吨货物的基本运费为p(price),货物重为w(weight),距离为s,折扣为d(discount),则总运费f(freight)的计算公式为 freight=price*weight*s*(1-discount)
*问题输出:总运费
*/
#include #include int main ( ){
int c,s;
float p,w,d,f;
printf("please enter p,w,s: ");
scanf("%f%f%d", &p, &w, &s);
c=(s<250)+(s<500)+(s<1000)+(s<2000)+(s<3000);
switch (c){
case 5:
d=0;break;
case 4:
d=2;break;
case 3:
d=8;break;
case 1:
d=10;break;
default:
d=15;break;
}
f=p*w*s*(1-d/100.0);
printf("freight=%.2f\n", f); return 0;
}
运⾏结果:
原程序代码:
#include int main()
{
int c,s;
float p,w,d,f;
printf("please enter p,w,s: "); scanf("%f%f%d", &p, &w, &s); if(s>=3000)
c=12;
else
c=s/250;
switch (c)
{
case 0:
d=0;break;
case 1:
case 3:
d=5;break;
case 4:
case 5:
case 6:
case 7:
d=8;break;
case 8:
case 9:
case 10:
case 11:
d=10;break;
case 12:
d=15;break;
}
f=p*w*s*(1-d/100.0);
printf("freight=%.2f\n", f);
return 0;
}知识点总结:
1.寻标准量的⽅法有两种:(逻辑表达式;‘/ ’使满⾜条件的范围变⼩)
2.多个case可以共⽤⼀组执⾏语句
⼼得:
1.在⽤逻辑表⽰式标准量的时候,没仔细看范围,导致下⾯原本case 4的情况下变成了case 2(取补);
2.程序虽然⼩,但⾃⼰亲⼿动⼀遍的话,便知道容易出错的地⽅在哪,下次哪些地⽅应尤其注意,避免出错。