永发信息网

帮忙看看这个简单C代码哪有出了问题,谢谢!

答案:3  悬赏:0  手机版
解决时间 2021-05-15 19:48
  • 提问者网友:你独家记忆
  • 2021-05-15 15:40

main()
{
int c,s;
float p,w,d,f;
printf("请输入每吨货物的基本运费,货物重量,运输距离:");
scanf("%f,%f,%f",&p,&w,&s);
if(c>=3000)c=12;
else c=s/250;
switch(c)
{
case 0:d=0;break;
case 1:d=2;break;
case 2:
case 3:d=5;break;
case 4:
case 5:
case 6:
case 7:d=8;break;
case 8:
case 9:
case 10:
case 11:d=10;break;
case 12:d=15;break;
}
f=p*w*s*(1-d/100.0);
printf("运费=%15.4f",f);
}

结果是请输入每吨货物的基本运费,货物重量,运输距离:100,20,300
运费=1927636582400.0000

怎么会这样,谢谢解释一下啊!


最佳答案
  • 五星知识达人网友:山君与见山
  • 2021-05-15 16:37

你的程序在获取输入的时候只有p w s 但是后面的if却用c来判断... 无法理解.. c根本就没有赋值.


另外.s是定义成Int类型的. 但是你在scanf中s的输入格式却是%f.



scanf("%f,%f,%f",&p,&w,&s);
if(c>=3000)c=12;

全部回答
  • 1楼网友:摆渡翁
  • 2021-05-15 18:51

case 后面要有break的呀。。。

  • 2楼网友:野味小生
  • 2021-05-15 18:08
scanf("%f,%f,%d",&p,&w,&s);//注意变量类型!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯