问题标题:
【运输公司对用户计算运费.程序设计运输公司对用户计算运费.路程(S)越远,每公里运费越低.标准如下:s<250km没有折扣250≤S<5002%折扣500≤S<10005%折扣1000≤S<20008%折扣2000≤S<300010】
问题描述:
运输公司对用户计算运费.程序设计
运输公司对用户计算运费.路程(S)越远,每公里运费越低.标准如下:
s<250km没有折扣
250≤S<5002%折扣
500≤S<10005%折扣
1000≤S<20008%折扣
2000≤S<300010%折扣
3000≤S15%折扣
设每公里每吨货物的基本运费为P(Price的缩写),货物重为w(weight的缩写),距离为S,折扣为d(discount的缩写),则总运费f(freight的缩写)的计算公式为f=P*w*S*(1-d)
分析:S各域的边界值均为250的倍数,这样如果用开关语句实现可以设一变量c,使c=s/250这样c就可以做为switch中的"表达式"以控制分支,此时标准如下:
c<1没有折扣
1≤c<22%折扣
2≤c<45%折扣
4≤c<88%折扣
8≤c<1210%折扣
12≤c
为了便于在switch语句中处理,当3000≤s时,令c=12而不使c随s增大,这样用一条case语句便可处理所有3000≤s的情况.
这段程序不太懂
1、#include
intmain()
{
intc,s;
floatp,w,d,f;
scanf("%f%f%d",&p,&w,&s);
if(s>=3000)c=12;
elsec=s/250;
switch(c)
{
case0:d=0;break;
case1:d=2;break;
case2:
case3:d=5;break;
case4:
case5:
case6:
case7:d=8;break;
case8:
case9:
case10:
case11:d=10;break;
case12:d=15;break;
}
f=p*w*s*(1-d/100);
printf("freight=%15.4fn",f);
李艳华回答:
case语句相当于多长if...else语句
查看更多