美亚联系在线客服:看看我写错了没有,算出来的结果好象不对!

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 02:49:58
企业年底发放的奖金根据当年的利润提成,利润低于或等于10万元时,奖金可提成10%;[u]利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时,高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,输入当年的利润,求应发放奖金总数。
考虑使用万元为单位

#include<stdio.h>

void main()
{
int x,y;
printf("请输入利润:");
scanf("%d",&x);

if(x<=10)
printf("应发的奖金为%d",y=x*0.1);
else if(x>10&&x<=20)
printf("应发的奖金为%d",y=(x-10)*0.075+10*0.1);
else if(x>20&&x<=40)
printf("应发的奖金为%d",y=(x-20)*0.05+10*0.075+10*0.1);
else if(x>40&&x<=60)
printf("应发的奖金为%d",y=(x-40)*0.03+20*0.05+10*0.075+10*0.1);
else if(x>60&&x<=100)
printf("应发的奖金为%d",y=(x-60)*0.015+20*0.03+20*0.05+10*0.075+10*0.1);
else if(x>100)
printf("应发的奖金为%d",y=(x-100)*0.01+40*0.015+20*0.03+20*0.05+10*0.075+10*0.1);
printf("\n");
}

把x,y改成float或double类型就行了,你用的是int型,强制取整了,比如你输入8,那么y=int(0.8)=0,当然不正确了。

另外if(x<=10)的else已经隐含了x>10,所以只要写else if(x<=20)就行了,其他的也同样如此。
if(x<=10)
printf("应发的奖金为%d",y=x*0.1);
else if(x<=20)
printf("应发的奖金为%d",y=(x-10)*0.075+10*0.1);
else if(x<=40)
printf("应发的奖金为%d",y=(x-20)*0.05+10*0.075+10*0.1);
else if(x<=60)
printf("应发的奖金为%d",y=(x-40)*0.03+20*0.05+10*0.075+10*0.1);
else if(x<=100)
printf("应发的奖金为%d",y=(x-60)*0.015+20*0.03+20*0.05+10*0.075+10*0.1);
else
printf("应发的奖金为%d",y=(x-100)*0.01+40*0.015+20*0.03+20*0.05+10*0.075+10*0.1);

else if(x>60&&x<=100)
printf("应发的奖金为%d",y=(x-60)*0.015+20*0.03+20*0.05+10*0.075+10*0.1);
else if(x>100)
printf("应发的奖金为%d",y=(x-100)*0.01+40*0.015+20*0.03+20*0.05+10*0.075+10*0.1);

--------------这两个地方写错了
应该是
else if(x>60&&x<=100)
printf("应发的奖金为%d",y=(x-60)*0.015+40*0.03+20*0.05+10*0.075+10*0.1);
else if(x>100)
printf("应发的奖金为%d",y=(x-100)*0.01+60*0.015+40*0.03+20*0.05+10*0.075+10*0.1);

P.S.
if(x<=10)
else if (x>10&&x<=20)
else if (x>20&&x<=40)
...

可以写成:
if(x<=10)
else if (x<=20)
else if (x<=40)
...
不用对x>10,x>20等再做判断,因为前面已经判断了。

楼上写的基本是对的

不过注意一点, printf中不应该是%d了