问答详情
源自:4-17 switch与if语句的应用

为什么不管我输入的year是平年还是闰年,二月份的天数总是28呢?

int main()

{

    int year,month,day;

    int i,j,n;

    int a[12];

    scanf ("%d%d%d",&year,&month,&day);

    printf ("%d\t%d\t%d\n",year,month,day);

    for (i=0;i<=12;i++){

        if (i==0){

            a[i]=31;

        }else if(i==1){

            a[i]=28;

        }else if(i%2==1){

            a[i]=31;

        }else{

            a[i]=30;

        }

    }

    if (year%400==0 || (year%4==0 && year%100!=0)){

        a[1]=29;

    }else{

        a[1]=28;

    }

    for (i=0;i<=12;i++){

        printf ("%d\t",a[i]);

    }

return 0;

}

为什么我不管输入year是平年还是闰年,二月份的天数都是28呢?我搞不懂。。。。。

提问者:TheRedWolf 2017-03-10 21:05

个回答

  • TheRedWolf
    2017-03-10 21:18:24

    我找到错误地方了,我在第一个for循环的时候,给i设定条件的时候是i<=12,但是我的数组长度为12,数组越界了,把这个<=改为< ,一切正常了