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

想做这样一个小程序 就是输入运输里程和收费价格 再根据相应的折扣 折后收款 具体应用的是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;
}
可以正常运行 但是输出的结果却不对 而且是一个很长的负数 求高手告诉我哪里不对 谢谢了

你的格式符不对。应该把所有的%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;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  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

第2个回答  2016-05-26
声明变量时初始化试试
相似回答