Sy_Faker 2019-11-08 23:05 采纳率: 25%
浏览 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 Unity3D领域新星创作者 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条)

报告相同问题?

悬赏问题

  • ¥15 kali环境运行volatility分析android内存文件,缺profile
  • ¥15 写uniapp时遇到的问题
  • ¥15 vs 2008 安装遇到问题
  • ¥15 matlab有限元法求解梁带有若干弹簧质量系统的固有频率
  • ¥15 找一个网络防御专家,外包的
  • ¥100 能不能让两张不同的图片md5值一样,(有尝)
  • ¥15 informer代码训练自己的数据集,改参数怎么改
  • ¥15 请看一下,学校实验要求,我需要具体代码
  • ¥50 pc微信3.6.0.18不能登陆 有偿解决问题
  • ¥20 MATLAB绘制两隐函数曲面的交线