else if里面的范围
#include<stdio.h>int main(void)
{
double i,a1,a2,a3,a4,a5,a6,money;
printf("enter the profit");
scanf("%lf",&i);
a1=100000*0.1;
a2=a1+(100000)*0.075;
a3=a2+200000*0.05;
a4=a3+200000*0.03;
a5=a4+400000*0.015;
if(i<=100000)
{
money=i*0.1;
}
else if(i<=200000)money=a1+(i-100000)*0.075;
else if(i<=400000)money=a2+(i-200000)*0.05;
else if(i<=600000)money=a3+(i-400000)*0.03;
#include<stdio.h>
int main(void)
{
double i,a1,a2,a3,a4,a5,a6,money;
printf("enter the profit");
scanf("%lf",&i);
a1=100000*0.1;
a2=a1+(100000)*0.075;
a3=a2+200000*0.05;
a4=a3+200000*0.03;
a5=a4+400000*0.015;
if(i<=100000)
{
money=i*0.1;
}
else if(100000<i<=200000)money=a1+(i-100000)*0.075;
else if(200000<i<=400000)money=a2+(i-200000)*0.05;
else if(400000<i<=600000)money=a3+(i-400000)*0.03;
else if(600000<i<=1000000) money=a4+(i-600000)*0.015;
else money=a5+(i-1000000)*0.01;
printf("%f",money);
return 0;
}
else if(i<=1000000) money=a4+(i-600000)*0.015;
else money=a5+(i-1000000)*0.01;
printf("%f",money);
return 0;
}
这两个代码只有else if里面的东西不同但是表示的范围是相同的,为什么输入一个数值时得到的答案不同呢?比如输入234000第一个得到192000但是第二个是205000
应该是懂了else if(100000<i<=200000)money=a1+(i-100000)*0.075;
else if(200000<i<=400000)money=a2+(i-200000)*0.05;
如果这样写输入234000那么在100000<i<=200000是100000<234000成立那么,100000<i得到的答案是1,同样1<200000执行第一条语句
money 被声明为 double ,所以你格式化需要用 %lf 而不是 %f
将 printf("%f",money); 改成 printf("%lf",money); Twilight6 发表于 2020-11-15 09:44
money 被声明为 double ,所以你格式化需要用 %lf 而不是 %f
将 printf("%f",money); 改成 printf("% ...
不是的呀,double只有scanf的时候需要%lf在printf的时候不需要
哦哦哦哦哦123 发表于 2020-11-15 09:48
不是的呀,double只有scanf的时候需要%lf在printf的时候不需要
然后我发上去的上下两个代码,第一个答案和我用switch得到的答案相同,但是第二个代码只不过加了一个限制范围 哦哦哦哦哦123 发表于 2020-11-15 09:48
不是的呀,double只有scanf的时候需要%lf在printf的时候不需要
原来如此,学习到了, C 语言只看到了取值范围... 所以知道的比较少 嘿嘿~
页:
[1]