鱼C论坛

 找回密码
 立即注册
查看: 2212|回复: 2

小白求教

[复制链接]
发表于 2022-10-17 17:22:32 | 显示全部楼层 |阅读模式

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

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

x
很简单的一道题,两个代码差不多,就是case 7 那块语句不太一样,输入 比如 740000, 代码一运行case 5,代码二运行case 7,执行语句不一样  为啥输出结果一样
#include <stdio.h>
代码一
int main(void) {
    int i,p;
    double bonus,bonus1,bonus2,bonus4,bonus6,bonus10;
    bonus1 = 100000 * 0.1;
    bonus2 =100000*0.075 + bonus1;
    bonus4 = 200000*0.05 + bonus2;
    bonus6 = 400000*0.03 + bonus4;
    bonus10 = 600000*0.015 + bonus6;
    scanf("%d",&i);
    p = i/100000;
    if (p > 10) p = 10 ;
    switch(p)
    {case 0 : bonus = i*0.1;
    case 1: bonus = (i - 100000)*0.075 + bonus1 ;break;
    case 2:
    case 3: bonus = (i - 200000)*0.05 + bonus2;break;
    case 4:
    case 5: bonus  = (i - 400000)*0.03 + bonus4 ; break;
    case 6:
    case 7:
    case 8:
    case 9:bonus = (i - 600000)*0.015 + bonus6;break;
    case 10:bonus = (i - 1000000)*0.01 + bonus10;break; }
    printf("%10.2f",bonus);
        return 0;
}




代码二
#include <stdio.h>

int main(void) {
    int i,p;
    double bonus,bonus1,bonus2,bonus4,bonus6,bonus10;
    bonus1 = 100000 * 0.1;
    bonus2 =100000*0.075 + bonus1;
    bonus4 = 200000*0.05 + bonus2;
    bonus6 = 400000*0.03 + bonus4;
    bonus10 = 600000*0.015 + bonus6;
    scanf("%d",&i);
    p = i/100000;
    if (p > 10) p = 11 ;
    switch(p)
    {case 0 : bonus = i*0.1;
    case 1: bonus = (i - 100000)*0.075 + bonus1 ;break;
    case 2:
    case 3: bonus = (i - 200000)*0.05 + bonus2;break;
    case 4:
    case 5: bonus  = (i - 400000)*0.03 + bonus4 ; break;
    case 6:
    case 7:bonus = (i - 600000)*0.015 + bonus6;break;
    case 8:
    case 9:
    case 10:
    case 11:bonus = (i - 1000000)*0.01 + bonus10;break; }
    printf("%10.2f",bonus);
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-17 18:00:47 | 显示全部楼层
本帖最后由 jackz007 于 2022-10-17 18:01 编辑

       两个代码几乎完全一样,不同之处在于,代码 1,在 i > 100000 时 p = 10,而代码 2 是 p = 11,p 在这里只是起 switch ... case 分支器变量的作用,只要看看两个代码在 p = 10 和 p = 11 分别执行了什么就可以找到原因了
代码 1:
case 10:bonus = (i - 1000000)*0.01 + bonus10;break; }
代码 2:
case 11:bonus = (i - 1000000)*0.01 + bonus10;break; }
        除了 case 的值不同以外,从算式本身能看出区别吗?
        所以,二者的计算结果必须一样!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-17 18:04:50 From FishC Mobile | 显示全部楼层
找到问题了谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-27 10:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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