C程序12
程序12 计算奖金
题目:企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?
自己理解:采用case语句,分别计算每一个利润范围获得的具体奖金。其中2种计算方法:
- 累加计算,如代码1,sum=sum(前面范围奖金的总和)+当前超出范围奖金。
- 最基础的加法,列出每个范围应得的奖金,之后相加,
两种都差不多,第2种不容易出错,比较直白。
代码1
#include <stdio.h>
int main()
{
int z,i;
float sum=0;
printf("输入利润:");
scanf("%d",&i);
if(i<=100000)
z=1;
else if(i<=200000&&i>100000)
z=2;
else if(i<=400000&&i>200000)
z=3;
else if(i<=600000&&i>400000)
z=4;
else if(i<=1000000&i>600000)
z=5;
else if(i>1000000)
z=6;
switch(z)
{
case 6:
sum+=(i-1000000)*0.01;
i=1000000;
case 5:
sum+=(i-600000)*0.015;
i=600000;
case 4:
sum+=(i-400000)*0.03;
i=400000;
case 3:
sum+=(i-200000)*0.05;
i=200000;
case 2:
sum+=(i-100000)*0.075;
i=100000;
case 1:
sum+=i*0.1;
break;
}
printf("Bonus=%lf",sum);
return 0;
}
运行结果
代码2
#include<stdio.h>
int main(void)
{
double I = 0, Bonus = 0;
printf("Please input Profit I= ");
scanf("%lf", &I);
if(I <= 0)
{
printf("not bonus!\n");
return 0;
}
I /= 10000;
switch((int)(I/10))
{
case 0:
Bonus = I * 0.1;
break;
case 1:
Bonus = 10 * 0.1 + (I - 10) * 0.075;
break;
case 2:
case 3:
Bonus = 10 * 0.1 + 10 * 0.075 + (I - 20) * 0.05;
break;
case 4:
case 5:
Bonus = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + (I - 40) * 0.03;
break;
case 6:
case 7:
case 8:
case 9:
Bonus = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + (I - 60) * 0.015;
break;
default:
Bonus = 10 * 0.1 + 10 * 0.075 + 20 * 0.06 + 20 * 0.03 + 40 * 0.015 + (I - 100) * 0.01;
break;
}
Bonus = Bonus * 10000;//为方便计算前面,化成万元,现在要换算回来,乘10000
printf("The Bonus = %lf\n", Bonus);
return 0;
}
运行结果
验证
如果利润65万元,则奖金
=1000000.1+1000000.075+2000000.05+2000000.03+50000*0.015
=10000+7500+10000+6000+750
=34250