输出是工资为20001是为什么呀

img


我设置了g最大为20000但输出是20001
大佬们帮我看看是哪里错了

因为g<=20000;g++
g=20000时执行下面的语句块,然后执行完之后,执行g++,g=20001,然后g与20000比较 g<=20000不成立
退出循环,输出为20001。
如果想输出为20000的话 把g<=20000 改为 g<20000即可。
希望对题主有所帮助,望采纳!!

1、工资范围在1-5000元之间的,包括5000元,适用个人所得税税率为0%;
2、工资范围在5000-8000元之间的,包括8000元,适用个人所得税税率为3%;
3、工资范围在8000-17000元之间的,包括17000元,适用个人所得税税率为10%;
4、工资范围在17000-30000元之间的,包括30000元,适用个人所得税税率为20%;
代码大致实现:

#include<stdio.h>
#include<stdlib.h>

int main(){
    int i;
    double a[20005];
    for(i=10000;i<=20000;i++){
        if(i>=10000&&i<=17000){
            a[i]=i-(i-8000)*0.1-(8000-5000)*0.03;
        }
        else if(i>17000){
            a[i]=i-(i-17000)*0.2-(17000-8000)*0.1-(8000-5000)*0.03;
        }
    }
    double max=a[10000];
    int flag=0;
    for(i=10000;i<=20000;i++){
        if(a[i]>max){
            max=a[i];
            flag=i;
        }
         
    }
    printf("工资为%d时收入最大,为%lf:\n",flag,max);
    return 0;
}

img

img