龙猫主题曲简谱:看看我写错了没有,算出来的结果好象不对!
考虑使用万元为单位
#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了