鱼C论坛

 找回密码
 立即注册
查看: 2182|回复: 1

麻烦高手来帮忙分析下错误在哪,谢谢。

[复制链接]
发表于 2012-6-25 23:08:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
关于小鱼C语言视频的第四章的课后练习:
运输公司对用户计算运费。路程(S)越远,每公里运费越低。标准如下:
  s<250km             没有折扣
  250≤S<500       2%折扣
  500≤S<1000     5%折扣
  1000≤S<2000   8%折扣
  2000≤S<3000   10%折扣
  3000≤S                15%折扣
  设每公里每吨货物的基本运费为P(Price的缩写),货物重为w(weight的缩写),距离为S,折扣为d(discount的缩写),则总运费f(freight的缩写)的计算公式为f=P*w*S*(1-d)
----------------------------------------------------------------------------------------------------------------------------------------------------------
原解答,我知道的。
现在,我把程序这样设计,高手帮分析一下,错误的理由是什么?我用的是 if-else-if语句解答
#include <stdio.h>
void main()
{
double f, p, w, s, d;
printf("请输入:基本运费p,货物重量w,距离s   \n");
scanf("%lf,%lf,%lf", &p, &w, &s);
  f = p*w*s*(1-d);
if( s < 250 )
{
  d = 0;
}
else if( 250<=s && s<500 )
{
  d = 0.02;
}
else if( 500<=s && s<1000 )
{
  d = 0.05;
}
else if( 1000<=s && s<2000)
{
  d = 0.08;
}
else if( 2000<=s && s<3000 )
{
  d = 0.1;
}
else if( s>=3000 )
{
  d = 0.15;
}
printf("%lf\n", f);
}
为什么我在if之前把f定义它的赋值不行?要把 f = p*w*s*(1-d);这条表达语句加到每个if,else if的语句里去。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-6-26 03:02:15 | 显示全部楼层
很简单,你的d根本就还没赋值,是个垃圾值,你就使用它,结果那是必错的。其实你只要把 f = p*w*s*(1-d);放到最下面就OK了···这样是在d确定值后再使用,其实你在开始赋值d=-1,最后就可以判断d是否是-1,如果是就输出错误返回,否则就计算使用f = p*w*s*(1-d);这个计算f的值并输出···这样会更好吧·····
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-10 15:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表