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 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
  • ¥50 NT4.0系统 STOP:0X0000007B