【程序2】
题目:企业发放的奖金根据利润提成.利润(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,求应发放奖金总数
1.程序分析:请利用数轴来分界,定位.注意定义时需把奖金定义成长整型.
2.程序源代码:
#define WAN 10000
// rate <= 10 WAN 10%
// 10 WAN < rate < 20 WAN 10% 7.5%
// 20 WAN < rate < 40 WAN 5%
// 40 WAN < rate < 60 WAN 3%
// 60 WAN < rate <100 WAN 1.5%
// 100 WAN < rate 1%
long getBonus( long rate )
{
long result = 0;
if( rate <= 0)
return result;
if( rate <= 10 * WAN )
{
result = rate * 0.1;
}
else
if( 10 * WAN < rate <= 20 * WAN )
{
result = 10 * WAN * 1 / 10 + ( rate - 10 * WAN ) * 75 / 1000;
}
else
if( 20 * WAN < rate <= 40 * WAN )
{
result = 10 * WAN * 1 / 10 + 10 * WAN * 75 / 1000 + ( rate - 20 * WAN ) * 5 / 100;
}
else
if( 40 * WAN < rate <= 60 * WAN )
{
result = 10 * WAN * 1 / 10 + 10 * WAN * 75 / 1000 + 20 * WAN * 5 / 100 + ( rate - 40 * WAN ) * 3 / 100;
}
else
if( 60 * WAN < rate <= 100 * WAN )
{
result = 10 * WAN * 1 / 10 + 10 * WAN * 75 / 1000 + 20 * WAN * 5 / 100 + 40 * WAN * 3 / 100 + ( rate - 60 * WAN ) * 15 / 1000;
}
else
{
result = 10 * WAN * 1 / 10 + 10 * WAN * 75 / 1000 + 20 * WAN * 5 / 100 + 40 * WAN * 3 / 100 + 60 * WAN * 15 / 1000 + ( rate - 100 * WAN ) * 1 / 100;
}
return result;
}