题目
企业发放的奖金根据利润提成。
利润低于或等于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%提成。
思路分析
根据题目要求。经营利润在不同的阶段,用不同的提成率。按照题目要求作出思路整理如下
(1)低于10w | 提成10% |
(2) 10w ~ 20w | 提成7.5% |
(3)20w ~ 40w | 提成5% |
(4)40w ~ 60w | 提成3% |
(5)60w ~ 100w | 提成1.5% |
(6)100w ~ | 提成1% |
根据题目可知,若对不同阶段的利润进行计算。我们需要使用 IF() 语句来对不同阶段的利润进行判断以此计算出对应的提成。
(一)
对于6种不同的情况,需要使用6个IF()语句进行判断。
profit 作名词时意为利润
if(profit<=100000){
bonus = profit*0.1;
}
else if(profit<=200000){
bonus = 100000*0.1 + (profit - 100000)*0.075;
}
else if(profit<=400000){
bonus = 100000*0.075 + 100000*0.1 + (profit - 200000)*0.05;
}
else if(profit<=600000){
bonus = 200000*0.05 + 100000*0.075 + 100000*0.1 + (profit - 400000)*0.03;
}
else if(profit<=800000){
bonus = 200000*0.03 + 200000*0.05 + 100000*0.075 + 100000*0.1 + (profit - 600000)*0.015;
}
else if(profit>=1000000){
bonus = 4000000*0.015 + 200000*0.03 + 200000*0.05 + 100000*0.075 + 100000*0.1 + (profit - 1000000)*0.01;
}
(二)
在上述的代码中不妨发现各 IF()语句中有许多重复的计算,会对我们的变成带来不必要的麻烦。我们可以通过定义的方式来避免这么多的麻烦,并提高程序的可读性,同时也为后续的校验降低了一些难度。
int bound0 = 0;
int bound1 = 100000*0.1;//利润不大于10w奖金提取10%
int bound2 = bound1 + 100000*0.075;//利润介于20w,超出10w部分奖金提取7.5%
int bound3 = bound2 + 200000*0.05;//利润介于40w,超出20w部分奖金提取5%
int bound4 = bound3 + 200000*0.03;//利润介于60w,超出40w部分奖金提取3%
int bound5 = bound4 + 400000*0.015;//利润介于80w,超出60w部分奖金提取1.5%
int bound6 = bound5;//利润高于100w,超出100w部分奖金提取1%
(三)
在接下来的代码中我们就可以利用创建参数的方式简化代码。
if(profit<=100000){
bonus = bound0 = profit*0.1;
}
else if(profit<=200000){
bonus = bound2 = bound1 + (profit - 100000)*0.075;
}
else if(profit<=400000){
bonus = bound3 = bound2 + (profit - 200000)*0.05;
}
else if(profit<=600000){
bonus = bound4 = bound3 + (profit - 400000)*0.03;
}
else if(profit<=800000){
bonus = bound5 = bound4 + (profit - 600000)*0.015;
}
else if(profit>=1000000){
bonus = bound6 = bound5 + (profit - 1000000)*0.01;
}
(四)
将最终的代码整合并,实现其功能。
#include<stdio.h>
int main()
{
int profit = 0; //利润
int bonus = 0; //奖金
int bound0 = 0;
int bound1 = 100000*0.1;//利润不大于10w奖金提取10%
int bound2 = bound1 + 100000*0.075;//利润介于20w,超出10w部分奖金提取7.5%
int bound3 = bound2 + 200000*0.05;//利润介于40w,超出20w部分奖金提取5%
int bound4 = bound3 + 200000*0.03;//利润介于60w,超出40w部分奖金提取3%
int bound5 = bound4 + 4000000*0.015;//利润介于80w,超出60w部分奖金提取1.5%
int bound6 = bound5;//利润高于100w,超出100w部分奖金提取1%
printf("请输入利润\n");
scanf("%d",&profit);
//利润不大于10w奖金提取10%
if(profit<=100000){
bonus = bound0 = profit*0.1;
}
//利润介于20w,超出10w部分奖金提取7.5%
else if(profit<=200000){
bonus = bound2 = bound1 + (profit - 100000)*0.075;
}
//利润介于40w,超出20w部分奖金提取5%
else if(profit<=400000){
bonus = bound3 = bound2 + (profit - 200000)*0.05;
}
//利润介于60w,超出40w部分奖金提取3%
else if(profit<=600000){
bonus = bound4 = bound3 + (profit - 400000)*0.03;
}
//利润介于100w,超出60w部分奖金提取1.5%
else if(profit<=800000){
bonus = bound5 = bound4 + (profit - 600000)*0.015;
}
//利润高于100w,超出100w部分奖金提取1%
else if(profit>=1000000){
bonus = bound6 = bound5 + (profit - 1000000)*0.01;
}
printf("奖金为%d",bonus);
return ;
}
运行结果
请输入利润
8888888
奖金为172388元
--------------------------------
Process exited after 5.028 seconds with return value 14
请按任意键继续. . .