三天打鱼两天晒网问题

#include <stdio.h>
int main()
{
int y,m,d,sum;
scanf("%d%d",&y,&m,&d);
if (y<1||y>3000)
{
printf("ERROR");
}
else if((y%4==0&&y%100!=0)||(y%400==0))
{
switch (m)
{
case 1:sum=d;
case 2:sum=31+d;
case 3:sum=31+29+d;
case 4:sum=31+29+31+d;
case 5:sum=31+29+31+30+d;
case 6:sum=31+29+31+30+31+d;
case 7:sum=31+29+31+30+31+30+d;
case 8:sum=31+29+31+30+31+30+31+d;
case 9:sum=31+29+31+30+31+30+31+31+d;
case 10:sum=31+29+31+30+31+30+31+31+30+d;
case 11:sum=31+29+31+30+31+30+31+31+30+31+d;
case 12:sum=31+29+31+30+31+30+31+31+30+31+30+d;
printf("%d",sum);
}
switch (sum%5)
{
case 0:printf("晒网");break;
case 1:printf("打鱼");break;
case 2:printf("打鱼");break;
case 3:printf("打鱼");break;
case 4:printf("晒网");break;
}
}
else
{
switch (m)
{
case 1:sum=d;
case 2:sum=31+d;
case 3:sum=31+28+d;
case 4:sum=31+28+31+d;
case 5:sum=31+28+31+30+d;
case 6:sum=31+28+31+30+31+d;
case 7:sum=31+28+31+30+31+30+d;
case 8:sum=31+28+31+30+31+30+31+d;
case 9:sum=31+28+31+30+31+30+31+31+d;
case 10:sum=31+28+31+30+31+30+31+31+30+d;
case 11:sum=31+28+31+30+31+30+31+31+30+31+d;
case 12:sum=31+28+31+30+31+30+31+31+30+31+30+d;
printf("%d",sum);
}
switch (sum%5)
{
case 0:printf("晒网");break;
case 1:printf("打鱼");break;
case 2:printf("打鱼");break;
case 3:printf("打鱼");break;
case 4:printf("晒网");break;
}
}
}任意一年的第一天都是打鱼,这个代码为什么输出永远是晒网

啥都没看,只看了开头
光这个
scanf("%d%d",&y,&m,&d);
这行就写的不对.......


#include<stdio.h>



#define YEAR 2010



void main()

{    



int year,month,day,y,days=0;    



int num[13]=

{0,31,28,31,30,31,30,31,31,30,31,30,31};    



printf("请输入正确的年月日(年月日用空格键隔开):\n");



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



while(year<2010)

{

  printf("年份输入过小,请重新输入:\n");

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

}    



/*当满足条件时,在二月基础加一天(因为是闰年)*/

if(year%400==0||

  (year%4==0&&year%100!=0)) 

{

    num[2]+=1;   

}



 /*判断输入年份是否为闰年*/

for(y=2010;y<year;y++)  

{        

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

 {

    /*闰年一年有366天*/

    days+=366;    

 }

 else

 {

    days+=365;  

 }

}  



 /*计算从201011日到输入年份总共多少天*/

for(y=1;y<month;y++)  

{

   days+=num[y];

}

   days+=day;   

printf("\n从2010年1月1日起到%d年%

d月%d日共经过了%d天\n\n",

year,month,day,days);    



/*用计算出的总天数除以5,求余*/

if(days%5==3||days%5==2||days%5==1) 

{

printf("%d年%d月%d日他在打鱼\n\n",year,month,day);  

}

else

{

 printf("%d年%d月%d日他在晒网\n\n",year,month,day);

}



}


编程思路:

1、判断输入的年份是闰年还是平年;

2、然后计算输入的年份到2010年1月1日一共有多少天;

3、然后天数,对5求余等于3.或者等于2或者等于1都是在打鱼;

4、其它在晒网。

img