Sy_Faker 2019-11-08 23:05 采纳率: 16.7%
浏览 447
已采纳

关于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条)

报告相同问题?