C语言编写了一个代码 结果却不对请高手进来看看

想做这样一个小程序就是输入运输里程和收费价格再根据相应的折扣折后收款具体应用的是SWITCH和ELSEIF语句我编写的东西如下:#include<stdio.h>intm... 想做这样一个小程序 就是输入运输里程和收费价格 再根据相应的折扣 折后收款 具体应用的是SWITCH 和 ELSE IF语句 我编写的东西如下:
#include <stdio.h>

int main()
{
double iPrice,fPrice,s;
char z;
printf("请输入要运送的路程:");
scanf("%f",&s);
printf("请输入应收取的运费:");
scanf("%f",&iPrice);
if(s<250)
{
z='a';
}
else if(s>=250||s<500)
{
z='b';
}
else if(s>=500||s<1000)
{
z='c';
}
else if(s>=1000||s<2000)
{
z='d';
}
else if(s>=2000||s<3000)
{
z='e';
}
else
{
z='f';
}
switch(z)
{
case'a':
fPrice=iPrice;
break;
case'b':
fPrice=0.98f*iPrice;
break;
case'c':
fPrice=0.95f*iPrice;
break;
case'd':
fPrice=0.92f*iPrice;
break;
case'e':
fPrice=0.9f*iPrice;
break;
case'f':
fPrice=0.85f*iPrice;
break;
default:
break;
}
printf("应缴纳运费为:%f\n",fPrice);
return 0;
}
可以正常运行 但是输出的结果却不对 而且是一个很长的负数 求高手告诉我哪里不对 谢谢了
展开
 我来答
听不清啊
高粉答主

2016-05-26 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部

你的格式符不对。应该把所有的%f都改为%lf(小写的LF)。

还有,这程序输出的还是运费的单价(每公里运费)而不是“运费”?

#include <stdio.h>


int main()

{

double iPrice,fPrice,s;

char z;

printf("请输入要运送的路程:");

scanf("%lf",&s);        //有改动

printf("请输入应收取的运费:");

scanf("%lf",&iPrice);       //有改动

if(s<250)

{

z='a';

}

else if(s<500)       //有改动

{

z='b';

}

else if(s<1000)       //有改动

{

z='c';

}

else if(s<2000)       //有改动

{

z='d';

}

else if(s<3000)       //有改动

{

z='e';

}

else

{

z='f';

}

switch(z)

{

case'a':

fPrice=iPrice;

break;

case'b':

fPrice=0.98*iPrice;       //有改动

break;

case'c':

fPrice=0.95*iPrice;       //有改动

break;

case'd':

fPrice=0.92*iPrice;       //有改动

break;

case'e':

fPrice=0.9*iPrice;       //有改动

break;

case'f':

fPrice=0.85*iPrice;       //有改动

}

printf("应缴纳运费为:%lf\n",fPrice);       //有改动

return 0;

}

匿名用户
2016-05-26
展开全部
#include <stdio.h>

int main()
{
float iPrice,fPrice,s;
char z;
printf("请输入要运送的路程:");
scanf("%f",&s);
printf("请输入应收取的运费:");
scanf("%f",&iPrice);
if(s<250)
{
z='a';
}
else if(s>=250||s<500)
{
z='b';
}
else if(s>=500||s<1000)
{
z='c';
}
else if(s>=1000||s<2000)
{
z='d';
}
else if(s>=2000||s<3000)
{
z='e';
}
else
{
z='f';
}
switch(z)
{
case'a':
fPrice=iPrice;
break;
case'b':
fPrice=0.98f*iPrice;
break;
case'c':
fPrice=0.95f*iPrice;
break;
case'd':
fPrice=0.92f*iPrice;
break;
case'e':
fPrice=0.9f*iPrice;
break;
case'f':
fPrice=0.85f*iPrice;
break;
default:
break;
}
printf("应缴纳运费为:%f\n",fPrice);
return 0;
}

解决办法:double改成float,

double对应lf,float对应f

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我潇洒我安逸
2016-05-26 · 超过64用户采纳过TA的回答
知道小有建树答主
回答量:161
采纳率:84%
帮助的人:57.4万
展开全部
声明变量时初始化试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式