C语言经典算法100例-002-数轴的使用
题目如下:
企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?
知识点:对if else结构的熟练应用,可以模仿数轴,将各个区间的利润分别计算。
代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
long int profit;
int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
printf("Please input the profit!\n");
scanf("%ld",&profit);
bonus1=100000*0.1;
bonus2=bonus1+100000*0.075;
bonus4=bonus2+200000*0.05;
bonus6=bonus4+200000*0.03;
bonus10=bonus6+400000*0.015;
if(profit<=100000) bonus=profit*0.1;
else if(profit<200000) bonus=bonus1+(profit-100000)*0.075;
else if(profit<400000) bonus=bonus2+(profit-200000)*0.05;
else if(profit<600000) bonus=bonus4+(profit-400000)*0.03;
else if(profit<1000000) bonus=bonus6+(profit-600000)*0.015;
else bonus=bonus10+(profit-1000000)*0.001;
printf("Bonus is %d\n",bonus);
return 0;
}
易错点:1.10W到20W的利润率可能按0.75算。
2.注意输入长整型要使用 %ld.
3.将不变量bonus1等提前计算出来,不要在计算bonus时计算,会降低程序可读性,其实这里最好使用常量。
by 庄孝义