问题标题:
【运输公司对用户计算运费.程序设计运输公司对用户计算运费.路程(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语句
查看更多
其它推荐
热门其它推荐