Sy_Faker
2019-11-08 23:05
采纳率: 77.3%
浏览 441

关于if与switch的使用过程中遇到的问题

在谭浩强著的程序设计基础一书中有这样一道题:
图片说明

我试着做了一下
程序清单:

#include<stdio.h>
pd(double i)
{
    if(i<=1e5){return 1;}
    if(i>1e5&&i<=2e5){return 2;}
    if(i>2e5&&i<=4e5){return 3;}
    if(i>4e5&&i<=6e5){return 4;}
    if(i<6e5&&i<=1e6){return 5;}
    if(i>1e6){return 6;}
}
int main()
{
    double i,y;
    printf("请输入利润i:\n");
    scanf("%lf",i);
    switch(pd(i))
    {
        case 1:y=1.1*i;break;
        case 2:y=1.1e5+(i-1e5)*0.075;break;
        case 3:y=11000007500+(i-2e5)*0.05;break;
        case 4:y=11000017500+(i-4e5)*0.03;break;
        case 5:y=11000023500+(i-6e5)*0.015;break;
        case 6:y=11000029500+(i-1e6)*0.01;break;
    }
    printf("获得的总奖金为:%f",y);
}

但得到的结果却和我想的不太一样:
图片说明

初学者一枚,想请教一下代码哪里错误了?
遇到这些较多分类的题目应该怎么用算法?
多谢大神指教。

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • little_fat_sheep 2019-11-09 10:45
    已采纳
    #include<stdio.h>
    int pd(double i)
    {
        if(i<=1e5){return 1;}
        if(i>1e5&&i<=2e5){return 2;}
        if(i>2e5&&i<=4e5){return 3;}
        if(i>4e5&&i<=6e5){return 4;}
        if(i>6e5&&i<=1e6){return 5;}
        if(i>1e6){return 6;}
    }
    int main()
    {
        double i,y;
        printf("请输入利润i:\n");
        scanf("%lf",&i);
        switch(pd(i))
        {
            case 1:y=1.1*i;break;
            case 2:y=1.1e5+(i-1e5)*0.075;break;
            case 3:y=11000007500+(i-2e5)*0.05;break;
            case 4:y=11000017500+(i-4e5)*0.03;break;
            case 5:y=11000023500+(i-6e5)*0.015;break;
            case 6:y=11000029500+(i-1e6)*0.01;break;
        }
        printf("获得的总奖金为:%f",y);
    }
    
    评论
    解决 无用
    打赏 举报
查看更多回答(1条)

相关推荐 更多相似问题