企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金数额?
分析:根据题目,我们可以知道解这道题的关键是找到利润 i 和 奖金提成率的关系,那么我们可以转化为简单的表格:
| 阶段 | 利润(i) | 奖金转化率 | 总奖金 |
| ① | <=10w | 10% | sum1 = 100000*0.1; |
| ② | 10~20w | 7.5% | sum2 = sum1 + 100000*0.075; |
| ③ | 20~40w | 5% | sum3 = sum2 + 200000*0.05; |
| ④ | 40~60w | 3% | sum4 = sum3 + 200000*0.03; |
| ⑤ | 60~100w | 1.5% | sum5 = sum4 + 400000*0.015; |
| ⑥ | >=100w | 1% |
因为企业总利润为i,所以每个阶段的实际总奖金=以往几个阶段总奖金之和+(i-该阶段最低利润)*奖金转化率。
比如在第三阶段的实际总奖金=sum2+(i-200000)*0.05
综上:#include测试:int main() { int i; printf("请输入企业利润: n"); scanf("%d",&i); if(i<0){ puts("您的输入有误!"); //当输入负数时报错 }else{ int sum,sum1,sum2,sum3,sum4,sum5; // sum变量用于接收实际总奖金,sum1~5用于存放五个阶段的总奖金。 sum1 = 100000*0.1; sum2 = sum1 + 100000*0.075; sum3 = sum2 + 200000*0.05; sum4 = sum3 + 200000*0.03; sum5 = sum4 + 400000*0.015; if(i<=100000){ sum = i*0.1; }else if(i<=200000){ sum = sum1 + (i-100000)*0.075; }else if(i<=400000){ sum = sum2 + (i-200000)*0.05; }else if(i<=600000){ sum = sum3 + (i-400000)*0.03; }else if(i<=1000000){ sum = sum4 + (i-600000)*0.015; }else{ sum = sum5 + (i-1000000)*0.01; } printf("需要发放的奖金为:%dn",sum); } return 0; }



