Dvesiz 2023-10-26 16:57 采纳率: 100%
浏览 6
已结题

写C语言时遇到的问题

企业奖金,用switch语句编写程序。
企业发放的奖金根据利润提成。利润I低于或等于100000元的,奖金可提成10%;利润高与100000元,低于200000元(100000≤I≤200000)时,低于100000元的部分按10%提成,高于100000的部分,可提成7.5%;200000<I≤400000时,低于200000元的部分仍按上述办法提成(下同)。高于200000元的部分按5%提成;400000<I≤600000元时,高于400000元的部分按3%提成;600000<I≤1000000时,高于600000元的部分按1.5%提成;I>1000000时,超过1000000元的部分按1%提成。从键盘输入当月利润I,求应发奖金总数,保留两位小数。用switch语句编写程序。

这是我写的程序C语言:

#include<stdio.h>
//需要引入的文件
//如提示运行通过,但解题失败,认真对比预期输出和实际输出之间的差异
int main()
{ int I,b;
  float a;
  scanf("%d",&I);
  b=I/100000;
  switch(b){
  case 0:
  printf("%.2f",a=I*0.1);
  break;
  case 1:
  printf("%.2f",a=100000*0.1+(I-100000)*0.075);
  break;
 case 2:
  printf("%.2f",a=100000*0.1+200000*0.075+(I-200000)*0.05);
  break;
  case 3:
  printf("%.2f",a=100000*0.1+100000*0.075+(I-200000)*0.05);
  break;
  case 4:
  printf("%.2f",a=100000*0.1+100000*0.075+200000*0.05+(I-400000)*0.03);
  break;
  case 5:
  printf("%.2f",a=100000*0.1+100000*0.075+200000*0.05+(I-400000)*0.03);
  break;
  case 6:
  printf("%.2f",a=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(I-600000)*0.015);
  break;
  case 7:
  printf("%.2f",a=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(I-600000)*0.015);
  break;
  case 8:
  printf("%.2f",a=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(I-600000)*0.015);
  break;
  case 9:
  printf("%.2f",a=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(I-600000)*0.015);
  break;
  case 10:
  printf("%.2f",a=100000*0.1+100000*0.075+200000*0.05+200000*0.03+(I-600000)*0.015);
  break;
  default:
  printf("%.2f",a=100000*0.1+100000*0.075+200000*0.05+200000*0.03+400000*0.015+(I-1000000)*0.01);
  break;
  
  
}
  
  return 0;
}

有什么问题吗?
输入670000,答案输出26550.00,但是我的答案是34550.00

  • 写回答

3条回答 默认 最新

  • K_n_i_g_h_t_1990 2023-10-26 17:34
    关注
    
    #include <stdio.h>
    int main()
    {
        double I; // 利润
        double bonus; // 奖金
        printf("请输入利润(单位:元):");
        scanf("%lf", &I); // 读取输入
        switch ((int)(I / 100000)) // 根据利润区间判断奖金比例
        {
        case 0: // I <= 100000
            bonus = I * 0.1; // 奖金 = 利润 * 10%
            break;
        case 1: // 100000 < I <= 200000
            bonus = 100000 * 0.1 + (I - 100000) * 0.075; // 奖金 = 第一档奖金 + 第二档奖金
            break;
        case 2: // 200000 < I <= 400000
        case 3: // 同上
            bonus = 100000 * 0.1 + 100000 * 0.075 + (I - 200000) * 0.05; // 奖金 = 第一档奖金 + 第二档奖金 + 第三档奖金
            break;
        case 4: // 400000 < I <= 600000
        case 5: // 同上
            bonus = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + (I - 400000) * 0.03; // 奖金 = 第一档奖金 + 第二档奖金 + 第三档奖金 + 第四档奖金
            break;
        case 6: // 600000 < I <= 1000000
        case 7: // 同上
        case 8: // 同上
        case 9: // 同上
        case 10: // 同上
            bonus = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + (I - 600000) * 0.015; // 奖金 = 第一档奖金 + 第二档奖金 + 第三档奖金 + 第四档奖金 + 第五档奖金
            break;
        default: // I > 1000000
            bonus = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + 400000 * 0.015 + (I - 1000000) * 0.01; // 奖金 = 第一档奖金 + 第二档奖金 + 第三档奖金 + 第四档奖金 + 第五档奖金 + 第六档奖金
            break;
        }
        printf("应发奖金总数为:%.2f元\n", bonus); // 输出结果,保留两位小数
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 11月5日
  • 已采纳回答 10月28日
  • 创建了问题 10月26日