用C语言写出下题的代码。
运输公司对用户计算运费。路程(s)越远,每公里运费越低。标准如下:s<250km没有折扣250≤s<5002%折扣500≤s<10005%折扣1000≤s<20008%折...
运输公司对用户计算运费。路程(s)越远,每公里运费越低。标准如下: s<250km 没有折扣 250≤s<500 2%折扣 500≤s<1000 5%折扣 1000≤s<2000 8%折扣 2000≤s<3000 10%折扣 3000≤s 15%折扣 设每公里每吨货物的基本运费为p,货物重为w,距离为s,折扣为d,则总运费f的计算公式为:f=p*w*s*(1-d)。
展开
1个回答
展开全部
下次这种问题带点分。
做张图
根据图看出.折扣的“变化点”都是250的倍数(250,500,1000,2000,3000)。利用这一特点,可以在横轴上加一种坐标c,c的值为S/250。c代表250的倍数。当c<1时,表示S<250,无折扣;1≤c<2时,表示250≤S<500,折扣d=2%;2≤c<4时,d=5%;4≤c<8时,d=8%;8≤c<12时,d=10%;c≥12时,d=15%。
main()
{
int
c,S;
float
P,w,d,f;
scanf("%f,%f,%d",&P,&w,&S);
if(S>=3000)
c=12;
else
c=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.0);
printf("freight=%15.4f",f);
}
运行情况如下:
100,20,300?
freight=
588000.0000
请注意:c、S是整型变量,因此c=S/250为整数。当S≥3000时,令c=12,而不使c随S增大,这是为了在Switch语句中便于处理,用一个case可以处理所有S≥3000的情况。
做张图
根据图看出.折扣的“变化点”都是250的倍数(250,500,1000,2000,3000)。利用这一特点,可以在横轴上加一种坐标c,c的值为S/250。c代表250的倍数。当c<1时,表示S<250,无折扣;1≤c<2时,表示250≤S<500,折扣d=2%;2≤c<4时,d=5%;4≤c<8时,d=8%;8≤c<12时,d=10%;c≥12时,d=15%。
main()
{
int
c,S;
float
P,w,d,f;
scanf("%f,%f,%d",&P,&w,&S);
if(S>=3000)
c=12;
else
c=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.0);
printf("freight=%15.4f",f);
}
运行情况如下:
100,20,300?
freight=
588000.0000
请注意:c、S是整型变量,因此c=S/250为整数。当S≥3000时,令c=12,而不使c随S增大,这是为了在Switch语句中便于处理,用一个case可以处理所有S≥3000的情况。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询