注册 登录
编程论坛 C++教室

大家看看这个程序哪里错了呀?怎么不出结果哦!!!

天涯天下去 发布于 2010-12-07 09:48, 562 次点击
运输公司对用户计算运费,运输距离(以s表示,单位为千米)越远,单位运费(以每吨·千米为单位)越低。计算标准如下:
    s<250             没有折扣
    250<=s<500        2%折扣
    500<=s<1000       5%折扣
    100<=s<2000       8%折扣
    2000<=s<3000      10%折扣
    3000<=s           15%折扣
设每吨千米货物的运费为p(price的缩写),货物重为w,距离为s,折扣为d,则总运费f的计算公式为
                  f=p*w*s*(1-d)

代码:
# include <stdio.h>
void main()
{
int i,s;
double p,w,d,f;
printf("请输入单价、重量和距离:");
scanf("%f,%f,%d",&p,&w,&s);
if (s>=3000) i=12;
else i=s/250;
switch (i)
{
case 0:d=0;break;
case 1:d=.02;break;
case 2:
case 3:d=.05;break;
case 4:
case 5:
case 6:
case 7:d=.08;break;
case 8:
case 9:
case 10:
case 11:d=.1;break;
case 12:d=.15;break;
}
   f=p*w*s*(1-d);
   printf("运费为:%10.2f\n",f);

}
大家看下哪里不对哦!!怎么不出结果哦!
5 回复
#2
li_danwang2010-12-07 10:51
double p,w,d,f;
你这里数据类型错了,改成 float 型就OK了
#3
红色警戒2010-12-07 11:13
scanf("%f,%f,%d",&p,&w,&s); 要严格按分号里面的格式输入,要有数据之间要有,的。
#4
天涯天下去2010-12-07 11:39
输入的格式没错哦  改为float后  也是不行哦  最后显示一大串的00000000000000000
#5
天涯天下去2010-12-07 11:58
弄明白了  double类型的输入要用%lf
当换为  float时会出现警告  warning C4305: '=' : truncation from 'const double ' to 'float '不知道什么情况哦
#6
xin3109232010-12-07 16:00
C语言的   程序代码,悲剧了,如果按照严格定义的标准来看,这个版块貌似是C++。
1