计算机青铜 2022-03-15 18:12 采纳率: 100%
浏览 107
已结题

求应发奖金总数(if实现),输出的值不对

**问题遇到的现象和发生背景 **
求应发奖金总数(if实现),输出的值不对,感谢解答!
企业发放的奖金根据利润提成。利润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,求应发奖金总数,保留两位小数。用if语句编写程序。
**问题相关代码,请勿粘贴截图 **

#include <stdio.h>
int main(){
  long I;
  scanf("%ld",&I);
  if(I<=100000){
  printf("%.2ld",0.1*I);
  }
  else if(I>100000&&I<=200000){
  printf("%.2ld",10000+0.075*(I-100000));
  }
  else if(I>200000&&I<=400000){
  printf("%.2ld",10000+0.075*100000+0.05*(I-200000));
  }
   else if(I>400000&&I<=600000){
  printf("%.2ld",10000+0.075*100000+0.05*200000+0.03*(I-400000));
  }
  else if(I>600000&&I<=1000000){
  printf("%.2ld",10000+0.075*100000+0.05*200000+0.03*200000+0.015*(I-600000));
  }
  else if(I>600000&&I<=1000000){
  printf("%.2ld",10000+0.075*100000+0.05*200000+0.03*200000+0.015*400000+0.01*(I-100000));
  }
}

**运行结果及报错内容 **

img

  • 写回答

1条回答 默认 最新

  • Code_流苏 C/C++领域优质创作者 2022-03-15 18:43
    关注

    测试图:

    img

    代码实现如下(重点是思路,切勿直接复制粘贴):

    #include <stdio.h>
    
    int main()
    {
        double I, salary = 0;
        printf("enter performance:");
        scanf("%lf", &I);
        if (I < 0) {
            printf("请输入一个正数\n");
            return -1;
        }
        double salary1 = 100000 * 0.1;//10万的奖金
        double salary2 = (200000 - 100000) * 0.075 + salary1;//20万的奖金
        double salary3 = (400000 - 200000) * 0.05 + salary2;//40万的奖金
        double salary4 = (600000 - 400000) * 0.03 + salary3;//60万的奖金
        double salary5 = (1000000 - 600000) * 0.015 + salary4;//100万的奖金
        if (I <= 100000) {
            salary = I * 0.1;//小于100000按10%提成
        }else if (I > 100000 && I <= 200000) {
            salary = salary1 + (I - 100000) * 0.075;//多出10万的按比例计算,加上10w的奖金
        }else if (I > 200000 && I <= 400000) {
            salary = salary2 + (I - 200000) * 0.05;//多出20万的按比例计算,加上20w的奖金
        }else if (I > 400000 && I <= 600000) {
            salary = salary3 + (I - 400000) * 0.03;//多出40万的按比例计算,加上40w的奖金
        }else if (I > 600000 && I <= 1000000) {
            salary = salary4 + (I - 600000) * 0.015;//多出60万的按比例计算,加上60w的奖金
        }else if (I > 1000000){
            salary = salary5 + (I - 1000000) * 0.01;//多出100万的按比例计算,加上100w的奖金
        }
        printf("salary:%f\n", salary);
        return 0;
    }
    
    
    

    希望对题主有所帮助!可以的话,帮忙点个采纳!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 3月24日
  • 已采纳回答 3月16日
  • 创建了问题 3月15日

悬赏问题

  • ¥15 关于大棚监测的pcb板设计
  • ¥20 sim800c模块 at指令及平台
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计