以下两段代码有什么区别?


#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;
}

img


else if(100000<i<=200000)
这种语句写法错误,100000<i如果为真,就会返回1,如果为假就返回0,这样不管真假,0,1都小于等于200000,所以结果就是错误了,要改为&&
else if(100000<i && i<=200000)
其他条件都是这种情况,需要修改一下。