C语言算法小实例
二. 企业发放的奖金根据利润提成。
利润(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,求应发放奖金总数?
思路分析:根据题意可得,该题属于分段函数,可先列出其相应的数学公式,再将其转化成C语言代码。可用if语句、if-else语句或if-else if-else语句,本题采用if-else if-else语句。
#include<stdio.h>
int main()
{
double x,y; //x为公司当月利润,y为应发奖金总数
printf("输入公司的当月利润:");
scanf("%lf",&x);
if(x<=100000)
y=0.1*x;
else if(x>100000&&x<=200000)
y=10000+(x-100000)*0.075;
else if(x>200000&&x<=400000)
y=10000+7500+(x-200000)*0.05;
else if(x>400000&&x<=600000)
y=10000+7500+10000+(x-400000)*0.03;
else if(x>600000&&x<=1000000)
y=10000+7500+10000+6000+(x-600000)*0.015;
else
y=10000+7500+10000+6000+6000+(x-1000000)*0.01;
printf("%.2f",y);
return 0;
}
总结:
1.要注意审题,明确奖金和利润的关系,从而列出正确的数学公式。
2.要注意区分if语句、if-else语句或if-else if-else语句之间的区别。即
(1)if语句:当满足条件表达式1时,执行语句1,否则,都不执行;
(2)if-else语句:当满足条件表达式1时,执行语句1,否则,执行语句2;
(3)if-else if-else语句:当满足条件表达式1时,执行语句1,当不满足条件表达式1时,判断是否满足条件表达式2,若满足则执行语句2,如果仍然不满足条件表达式2,则继续判断是否满足下一个条件表达式,直至最后到else语句,执行else语句所对应的语句。
3.变量名不要用x、y、z等无代表含义的名称,最好使用具有想关含义的英文来表示变量。
4.在本题中,如果写明单位为万元,那么代码中的许多数字便可不加那么多零了。
#include<stdio.h>
int main()
{
double profit,bonus; //profit为公司当月利润,bonus为应发奖金总数
printf("输入公司的当月利润:\n");
scanf("%lf",&profit);
if(profit<=10)
bonus=0.1*profit;
else if(profit<=20)
bonus=1+(profit-10)*0.075;
else if(profit<=40)
bonus=1+0.75+(profit-20)*0.05;
else if(profit<=60)
bonus=1+0.75+1+(profit-40)*0.03;
else if(profit<=100)
bonus=1+0.75+1+0.6+(profit-60)*0.015;
else
bonus=1+0.75+1+0.6+0.6+(profit-100)*0.01;
printf("%.2f",bonus);
return 0;
}