鱼C论坛

 找回密码
 立即注册
查看: 1209|回复: 5

else if里面的范围

[复制链接]
发表于 2020-11-15 09:39:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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;[code]



#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;
       
       
}[/code]



这两个代码只有else if里面的东西不同但是表示的范围是相同的,为什么输入一个数值时得到的答案不同呢?比如输入234000第一个得到192000但是第二个是205000
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 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执行第一条语句
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-15 09:44:33 | 显示全部楼层

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

将 printf("%f",money); 改成 printf("%lf",money);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-15 09:48:09 | 显示全部楼层
Twilight6 发表于 2020-11-15 09:44
money 被声明为 double ,所以你格式化需要用 %lf 而不是 %f

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

不是的呀,double只有scanf的时候需要%lf  在printf的时候不需要
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-15 09:49:41 | 显示全部楼层
哦哦哦哦哦123 发表于 2020-11-15 09:48
不是的呀,double只有scanf的时候需要%lf  在printf的时候不需要

然后我发上去的上下两个代码,第一个答案和我用switch得到的答案相同,但是第二个代码只不过加了一个限制范围
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-15 09:50:42 | 显示全部楼层
哦哦哦哦哦123 发表于 2020-11-15 09:48
不是的呀,double只有scanf的时候需要%lf  在printf的时候不需要



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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 17:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表