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

2024年12月01日 10:45
有3个网友回答
网友(1):

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

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

#include


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;

}

网友(2):

#include 

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

网友(3):

声明变量时初始化试试