C语言编写了一个代码 结果却不对请高手进来看看
#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;
}
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