为什么我这里不管输入的月数是多少,天数都是31啊?求指导!


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

int main()
{
    int year,month,flag;
    do{
        printf("Input year,month:");
        scanf("%d %d",&year,&month);
    }while(month<1||month>12);
    switch(month){
        case4:
        case6:
        case9:
        case11:
            printf("%d年的%d月的天数为30\n",year,month);
            break;
        case2:
            if((year%4==0&&year%100!=0||year%400==0)){
                    flag=1;
                    printf("%d是闰年\n",year);
                    printf("%d年的%d月的天数为28+flag\n",year,month);
        }

        else{
            flag=0;
            printf("%d不是闰年\n",year);
            printf("%d年的%d月的天数为28+flag\n",year,month);
        }
        break;
        default:printf("%d年的%d月的天数为31\n",year,month);
    }

    return 0;
}

case4: case 和 4 之间有空格的:case 4: 其他的同样

因为你的case后面没有空格,case和数字中间加空格就可以了。case是关键字,在编译工具中一般都是跟其他标识符颜色不一样的。

        case 4:
        case 6:
        case 9:
        case 11:
            printf("%d年的%d月的天数为30\n",year,month);
            break;
        case 2