任务和代码:
/*
*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");
}
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=5;break;
case 2:
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:
d=2;break;
case 2:
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.程序虽然小,但自己亲手动一遍的话,便知道容易出错的地方在哪,下次哪些地方应尤其注意,避免出错。