一个简单的题目出错了,帮忙来看看,该如何解决

一个简单的题目出错了,帮忙来看看
输入某年某月某日,判断这一天是这一年的第几天。
  提示:   1,以3月5日为列,应该先把前两个月的天数加起来,然后再加上5天即为本年的第几天。
                2,需要考虑闰年的特殊情况,如果输入的年份是闰年且输入的月份大于3时,需要考虑多加一天。

这是我自己做的,但是错了,哥哥姐姐门帮忙改一下``x是指最后结果
   
        switch(month)
{
        case   12:
day   +=   31;
        case   11:
day   +=   30;
        case   10:
day   +=   31;
        case   9:
day   +=   30;
        case   8:
day   +=   31;
        case   7:
day   +=   31;
        case   6:
day   +=   30;
        case   5:
day   +=   31;
        case   4:
day   +=   30;
        case   3:
day   +=   31;

        case   2:
/*判断是否是闰年,如果是,2月就加29天,如果不是就加28天*/
          if((year   %   4   ==   0   &&   year   %   100   !=   0)   ||   (year   %   100   ==   0))
day   +=   29;
else
day   +=   28;
        case   1:
day   +=   31;    
       
}

x   =   month   -   1   +   day;
        printf( "\n%d ",   x);


------解决方案--------------------
大致写了一下,发现,原来case 12 可以省略的

#include <stdio.h>

int main()
{

int year, month, dat;
int day = 0;
printf( "Please input year, month and date: ");
scanf( "%d %d %d ", &year, &month, &dat);

switch(month-1)
{
case 11:
day += 30;
case 10:
day += 31;
case 9:
day += 30;
case 8:
day += 31;
case 7:
day += 31;
case 6:
day += 30;
case 5:
day += 31;
case 4:
day += 30;
case 3:
day += 31;

case 2:
/*判断是否是闰年,如果是,2月就加29天,如果不是就加28天*/
if((year % 4 == 0 && year % 100 != 0) || (year % 100 == 0))
day += 29;
else
day += 28;
case 1:
day += 31;

}

dat += day;
printf( "\n%d ", dat);

return 0;
}