哦哦哦哦哦123 发表于 2020-11-15 09:39:47

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

哦哦哦哦哦123 发表于 2020-11-15 10:03:42

应该是懂了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执行第一条语句

Twilight6 发表于 2020-11-15 09:44:33


money 被声明为 double ,所以你格式化需要用 %lf 而不是 %f

将 printf("%f",money); 改成 printf("%lf",money);

哦哦哦哦哦123 发表于 2020-11-15 09:48:09

Twilight6 发表于 2020-11-15 09:44
money 被声明为 double ,所以你格式化需要用 %lf 而不是 %f

将 printf("%f",money); 改成 printf("% ...

不是的呀,double只有scanf的时候需要%lf在printf的时候不需要

哦哦哦哦哦123 发表于 2020-11-15 09:49:41

哦哦哦哦哦123 发表于 2020-11-15 09:48
不是的呀,double只有scanf的时候需要%lf在printf的时候不需要

然后我发上去的上下两个代码,第一个答案和我用switch得到的答案相同,但是第二个代码只不过加了一个限制范围

Twilight6 发表于 2020-11-15 09:50:42

哦哦哦哦哦123 发表于 2020-11-15 09:48
不是的呀,double只有scanf的时候需要%lf在printf的时候不需要



原来如此,学习到了, C 语言只看到了取值范围... 所以知道的比较少 嘿嘿~

页: [1]
查看完整版本: else if里面的范围