以下是引用A13433758072在2011-9-20 21:59:48的发言:
看看答案吧 题目:企业发放的奖金根据利润提成。利润(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.程序源代码:
main()
{
long int i; /*这里定义了一个变量“i”,也就是利润*/
int bonus1,bonus2,bonus4,bonus6,bonus10,bonus; /*这里是定义了6个变量“bonus1”等等,这里的变量代表的是各个条件下的“奖金”*/
scanf("%ld",&i); /*输入“利润”*/
bonus1=100000*0.1;bonus2=bonus1+100000*0.75; /*这里把代表“奖金”的变量赋值,“bonus1”相当于“利润”等于10万元时的“奖金”有多少,也就是10万*0.1。*/
bonus4=bonus2+200000*0.5; /*这里的意思同上,“bonus2=bonus1+10万*0.75”的意思是:当利润等于20万元时,奖金就是10万元的奖金加上20万减10万元的奖金*/
bonus6=bonus4+200000*0.3; /*意思跟奖金是20万时的意思一样,因为“bonus4”代表的是10万利润时的奖金加上20万减10万所得的奖金再加上剩余20万所得的奖金*/
bonus10=bonus6+400000*0.15; /*看了这么多解释原理很简单,代入进去看下就知道这里的意思了*/
if(i<=100000) /*现在开始判断输入的利润满足哪个条件了,如果利润小于10万,*/
bonus=i*0.1; /*那么奖金就是“利润”*0.1,其实这里的小数点算错了,10万的奖金是10%,应该是乘以0.01的。上边也一样,都是小数点错了*/
else if(i<=200000) /*不满足上边的条件就判断“利润”是否小于20万*/
bonus=bonus1+(i-100000)*0.075; /*奖金是10万元时的奖金加上利润减去10万元后乘以0.075后的奖金*/
else if(i<=400000) /*以下条件判断效果同上*/
bonus=bonus2+(i-200000)*0.05;
else if(i<=600000)
bonus=bonus4+(i-400000)*0.03;
else if(i<=1000000)
bonus=bonus6+(i-600000)*0.015;
else
bonus=bonus10+(i-1000000)*0.01;
printf("bonus=%d",bonus); /*最后输出应得的奖金*/
}
我也是个菜鸟,才学C语言不久,看到你出的问题我也感觉有点摸不着思路,不过看到别人贴出来的程序后分析
却能明白他的意思,我也学到了不少东西。