#include<stdio.h>
int main ()
{
float i,x;
printf("请输入当月利润:");
scanf("%f",&i);
if(i<=100000)
x=0.1*i;
else if(100000<i<=200000)
x=10000+(i-100000)*0.075;
else if(200000<i<=400000)
x=17500+(i-200000)*0.05;
else if(400000<i<=600000)
x=27500+(i-400000)*0.03;
else if(600000<i<=1000000)
x=33500+(i-600000)*0.015;
else if(1000000<i)
x=39500+(i-1000000)*0.01;
printf("本月的奖金数是:%.4f元\n",x);
return 0;
}
以上c程序运行后结果如下:
请输入当月利润:2000000
本月的奖金数是:152500.0000元
Process exited after 4.94 seconds with return value 0
请按任意键继续. . .
#include<stdio.h>
int main ()
{
float i,x;
printf("请输入当月利润:");
scanf("%f",&i);
if(i<=100000)
x=0.1*i;
else if(i<=200000)
x=10000+(i-100000)*0.075;
else if(i<=400000)
x=17500+(i-200000)*0.05;
else if(i<=600000)
x=27500+(i-400000)*0.03;
else if(i<=1000000)
x=33500+(i-600000)*0.015;
else
x=39500+(i-1000000)*0.01;
printf("本月的奖金数是:%.4f元\n",x);
return 0;
}
修改成这样之后就变成下边这样:
请输入当月利润:2000000
本月的奖金数是:49500.0000元
Process exited after 2.004 seconds with return value 0
请按任意键继续. . .
我觉得程序修改后没有很大的区别,但是为什么输出不一样呢?(第一个应该是错误输出,第二个正确)
第一个这么改下就行了:判断i时不能连续判断应该用&&表示且的条件,最后记得加else的情况
#include <stdio.h>
int main()
{
int i,j;
printf("请输入当月利润:");
scanf("%d",&i);
if(i <= 100000)
j = i * 0.1;
else if( i > 100000 && i <= 200000 )
j = 100000 * 0.1 + ( i - 100000 ) * 0.075;
else if( i > 200000 && i <= 400000 )
j = 17500 + (i - 200000) * 0.05;
else if( i > 400000 && i <= 600000 )
j = 27500 + (i - 400000) * 0.03;
else if( i > 600000 && i <= 1000000)
j = 33500 + (i - 600000) * 0.015;
else
j = 39500+ (i - 1000000) * 0.01;
printf("应得的奖金是:%d\n",j);
return 0;
}
else if(100000<i<=200000)
这种语句写法错误,100000<i如果为真,就会返回1,如果为假就返回0,这样不管真假,0,1都小于等于200000,所以结果就是错误了,要改为&&
else if(100000<i && i<=200000)
其他条件都是这种情况,需要修改一下。