这个代码有逻辑错误,求修改

题目:某年某月某日是当年的第几天(switch月份倒序)

#includeh>
int judgeyear(int year){
    int flag=0;//平年返回0
    if ((year%4==0 && year%100 !=0) || year%400==0)
           flag=1;//闰年返回1
    return flag;
}
/*本题不考虑日期的合法性,输入的日期是合法的*/
int main(){
    int year,month,day,flag;
    int dayNumber=0;
    scanf("%d%d%d",&year,&month,&day);
    switch (month){
       case 12:dayNumber +=30;
       case 11:dayNumber +=31;
       case 10:dayNumber +=30;
       case 9 :dayNumber +=31;
       case 8 :dayNumber +=31;
       case 7 :dayNumber +=30;
       case 6 :dayNumber +=31;
       case 5 :dayNumber +=30;
       case 4 :dayNumber +=31;
       case 3 :if(flag==0)dayNumber +=28;
                   else dayNumber +=29;//3月的情况,请填写多行代码
       case 2 :dayNumber +=31;//2月的情况,请填写一行代码
       case 1 :dayNumber +=day;break;//1月的情况,请填写多行代码
       default:printf("Input error!");
    }
    printf("%d",dayNumber);
}

第23行修改,供参考:

#include<stdio.h>
int judgeyear(int year){
    int flag=0;//平年返回0
    if ((year%4==0 && year%100 !=0) || year%400==0)
           flag=1;//闰年返回1
    return flag;
}
/*本题不考虑日期的合法性,输入的日期是合法的*/
int main(){
    int year,month,day;    //,flag; 修改
    int dayNumber=0;
    scanf("%d%d%d",&year,&month,&day);
    switch (month){
       case 12:dayNumber +=30;
       case 11:dayNumber +=31;
       case 10:dayNumber +=30;
       case 9 :dayNumber +=31;
       case 8 :dayNumber +=31;
       case 7 :dayNumber +=30;
       case 6 :dayNumber +=31;
       case 5 :dayNumber +=30;
       case 4 :dayNumber +=31;
       case 3 :if(judgeyear(year)==0)//if(flag==0)修改
                   dayNumber +=28;
               else
                   dayNumber +=29;//3月的情况,请填写多行代码
       case 2 :dayNumber +=31;//2月的情况,请填写一行代码
       case 1 :dayNumber +=day;break;//1月的情况,请填写多行代码
       default:printf("Input error!");
    }
    printf("%d",dayNumber);
    return 0;
}


#include <stdio.h>
int main()
{
    int year, month, day, leap, sum;
    printf("请输入:");
    scanf("%d,%d,%d", &year, &month, &day);
    switch (month)
    {
    case 1:sum = 0;break;
    case 2:sum = 31;break;
    case 3:sum = 59;break;/*一月31天加平年28天等于59天*/
    case 4:sum = 90;break;
    case 5:sum = 120;break;
    case 6:sum = 151;break;
    case 7:sum = 181;break;
    case 8:sum = 212;break;
    case 9:sum = 243;break;
    case 10:sum = 273;break;
    case 11:sum = 304;break;
    case 12:sum = 331;break;
    default:printf("error\n");
    }
    sum = sum + day;
    if (year%400 == 0 || year%4 == 0 && year%100 != 0)/*判断闰年*/
        leap = 1;
    else
        leap = 0;
    if(leap == 1 && month>2)/*当是闰年,月份大于二时,才需要加一,为一月时,不需要加一*/
        sum = sum++;
    printf("为今年的%d\n",sum);
    return 0;
}