是一道关于路程和折扣的题目
#include<stdio.h>
int main()
{
float p,w,s,x;
printf("输入运费,重量,距离\n");
scanf("%f,%f,%f",&p,&w,&s);
if (s<250) ;
x=p*w*s;
printf ("%d\f",x );
else if (s<500) // 10行
x=p*w*s*(1-2/100);
printf("%d\n",x);
else if (s<1000) // 13行
x=p*w*s*(1-5/100);
printf("%d\n",x);
else if (s<2000)
x=p*w*s*(1-8/100);
printf("%d\n",x);
else if (s<3000)
x=p*w*s*(1-10/100);
printf("%d\n",x);
else
x=p*w*s*(1-15/100);
printf("%d\n",x);
return 0;
}
--------------------配置: mingw2.95 - CUI Debug, 编译器类型: MinGW (Old)--------------------
检查文件依赖性...
正在编译 C:\Users\boss\Desktop\1名1.cpp...
[Error] C:\Users\boss\Desktop\1名1.cpp:10: parse error before `else'
[Error] C:\Users\boss\Desktop\1名1.cpp:13: parse error before `else'
[Error] C:\Users\boss\Desktop\1名1.cpp:16: parse error before `else'
[Error] C:\Users\boss\Desktop\1名1.cpp:19: parse error before `else'
[Error] C:\Users\boss\Desktop\1名1.cpp:22: parse error before `else'
构建中止 1名1: 5 个错误, 0 个警告
小于250 没折扣
250-500 2%
500-1000 5%
1000-2000 8%
2000-3000 10%
大于3000 15%
总运费=单价x重量x距离x折扣
急!! 上面的\f是笔误,,无视把,不是这个问题
嗯.改好了 但是结果不对.比如带 100,20,300进去.答案应该是588000,但是我算出来是没打折扣是600000
追答嗯 这是因为你用2/100得到的还是整型数int,这样子程序只会保留其整数部分,也就是0。所以就没打折了!
你需要将2转换为double或者float型,就是在2/100之前加上(float)或者(double)。变为(float)2/100或者(double)2/100。
每个if里面的运算都要这样才能保留小数的。
谢了~~~.OK了.以后有问题还能求助你么
追答可以的~欢迎来问 共同进步~
追问谢了~ 2/100得到的还是整型数int 是和这个int main()指令有关么. 可以改成float main()么
追答这个跟这个无关的...
int main()是代表你这个函数如果有返回值,那么返回值的类型是int型的。
这里2/100之所以是用整型来保存,是因为2默认是int型的数,100也默认是int型的数,自然结果也是int型。
如果你是用2.0/100那么由于2.0是double型的数,系统会自动转换为double型的结果也就是0.02。
厉害.懂了,++扣扣把
100,20,300进去.答案应该是588000,但是我算出来是没打折扣是600000
自己对比一下吧!
下载了..算出来答案是0 ,看下我错在哪里..就比如s=300 p(price)=200 W(重量)=50 x=300*200*50*概率2%