神之谜题
#include<stdio.h>
int main()
{
float w,s,p;
float f;
printf("请输入吨数与公里数和运费(单价):");
scanf("%d %d %d",&w,&s,&p);
if(s>=250 && s<500){
p = p*0.99;
f = p*w*s;
}else if(s>=500 && s<1000){
p = p*0.97;
f = p*w*s;
}else if(s>=1000 && s<2000){
p = p*0.95;
f = p*w*s;
}else if(s>=2000 && s<3000){
p = p*0.98;
f = p*w*s;
}else if(s>=3000){
p = p*0.9;
f = p*w*s;
}
printf("总价是: %.2f\n",f);
return 0;
}
为甚麽改来改去都是0.00啊...
求助,谢谢
本帖最后由 df3379 于 2019-7-30 14:29 编辑
#include<stdio.h>
int main()
{
do
{
float w,s,p;
double f;
printf("请输入吨数与公里数和运费(单价):");
scanf("%f %f %f",&w,&s,&p);
if(s>0 && s<249){
f = p*w*s;
}else if(s>=250 && s<500){
p = p*0.99;
f = p*w*s;
}else if(s>=500 && s<1000){
p = p*0.97;
f = p*w*s;
}else if(s>=1000 && s<2000){
p = p*0.95;
f = p*w*s;
}else if(s>=2000 && s<3000){
p = p*0.98;
f = p*w*s;
}else if(s>=3000){
p = p*0.9;
f = p*w*s;
}
printf("\n重量为:%.1f吨\n\n里程数为:%.1f公里\n\n运费为:%.2f元/公里\n\n",w,s,p);
printf("本次运输总价是: %.2f元\n\n=========================分隔线==================\n\n",f);
}
while('%f');
return 0;
}
http://i2.tiimg.com/693900/8e19462f63827d2a.jpg
变量定义时修改一下就行了!
主要问题在f变量修改为双精度。结果为单精度会出现数据溢出.
低于250公里的选项没有,补上就好。
希望设我为最佳答案哟 08行代码应该是-->%f
已经改了,但依然没用 只改那个不够的。要这样写:
#include<stdio.h>
int main()
{
float w=0,s=0,p=0;
float f=0;
printf("请输入吨数与公里数和运费(单价):");
scanf("%f %f %f",&w,&s,&p);
if(s>=250 && s<500){
p = p*0.99;
f = p*w*s;
}else if(s>=500 && s<1000){
p = p*0.97;
f = p*w*s;
}else if(s>=1000 && s<2000){
p = p*0.95;
f = p*w*s;
}else if(s>=2000 && s<3000){
p = p*0.98;
f = p*w*s;
}else if(s>=3000){
p = p*0.9;
f = p*w*s;
}else{
p = p*0.8;
f = p*w*s;
}
printf("总价是: %f\n",f);
return 0;
} s<250 的情况没考虑,应该是你输入的s小于250,所以结果总是0.00
其他应该没什么问题 本帖最后由 Neverturnback 于 2019-7-30 11:35 编辑
可能输入s小于250了所以才会总是0.00,我编译运行过了,第二个数是250以上时,其它数不是0时都有结果 总之先要赋初值,只要不是在函数内定义的,都要赋初值,不然它的值就是随机的。。
页:
[1]