鱼C论坛

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

else if里面的范围

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

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

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

x
  1. #include<stdio.h>
  2. int main(void)
  3. {
  4.         double i,a1,a2,a3,a4,a5,a6,money;
  5.         printf("enter the profit");
  6.         scanf("%lf",&i);
  7.         a1=100000*0.1;
  8.         a2=a1+(100000)*0.075;
  9.         a3=a2+200000*0.05;
  10.         a4=a3+200000*0.03;
  11.         a5=a4+400000*0.015;
  12.         if(i<=100000)
  13.         {
  14.                 money=i*0.1;
  15.         }
  16.         else if(i<=200000)  money=a1+(i-100000)*0.075;
  17.         else if(i<=400000)  money=a2+(i-200000)*0.05;
  18.         else if(i<=600000)  money=a3+(i-400000)*0.03;[code]



  19. #include<stdio.h>
  20. int main(void)
  21. {
  22.         double i,a1,a2,a3,a4,a5,a6,money;
  23.         printf("enter the profit");
  24.         scanf("%lf",&i);
  25.         a1=100000*0.1;
  26.         a2=a1+(100000)*0.075;
  27.         a3=a2+200000*0.05;
  28.         a4=a3+200000*0.03;
  29.         a5=a4+400000*0.015;
  30.         if(i<=100000)
  31.         {
  32.                 money=i*0.1;
  33.         }
  34.         else if(100000<i<=200000)  money=a1+(i-100000)*0.075;
  35.         else if(200000<i<=400000)  money=a2+(i-200000)*0.05;
  36.         else if(400000<i<=600000)  money=a3+(i-400000)*0.03;
  37.         else if(600000<i<=1000000) money=a4+(i-600000)*0.015;
  38.         else                       money=a5+(i-1000000)*0.01;
  39.         printf("%f",money);
  40.         return 0;
  41.        
  42.        
  43. }
复制代码

        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
小甲鱼最新课程 -> https://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执行第一条语句
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

将 printf("%f",money); 改成 printf("%lf",money);
小甲鱼最新课程 -> https://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的时候不需要
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

然后我发上去的上下两个代码,第一个答案和我用switch得到的答案相同,但是第二个代码只不过加了一个限制范围
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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



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

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-16 04:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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