小白求助。。C案例为什么同月同日不同年的时候却无法输出,比如20010303和20020303
#include <stdio.h>/*检查日期合法性*/
int checkdate(int year,int month,int day)
{if(year<1900||year>2020)
{printf("输入的年份无效!\n");return 0;}
else if(month<0||month>12)
{printf("输入的月份无效!\n");return 0;}
else if(day<=0||day>31)
{printf("输入的日期无效!\n");return 0;}
else
{switch(month)
{case 4:
case 6:
case 9:
case 11:
/*小月30天*/
if(day>30)
{printf("输入的日期无效!\n");return 0;}break;
case 2:
if ((year%4==0&&year%100!=0)||year%400==0)
{if(day>29)
{printf("输入的日期无效!\n");return 0;}
}
else
{if(day>28)
{printf("输入的日期无效!\n");return 0;}
}break;
}/*end of switch(month)*/
}
}
void main()
{int y0,m0,d0;/*生日*/
int y1,m1,d1;/*当前日期*/
int years,months,days;/*实足年龄*/
printf("请输入学生的生日:");
scanf("%d%d%d",&y0,&m0,&d0);
/*当前计算日期合法性检查*/
if(!checkdate(y0,m0,d0))
{printf("请重新打开程序!\n");}
else
{printf("请输入当前日期:");
scanf("%d%d%d",&y1,&m1,&d1);
if(!checkdate(y1,m1,d1))
{printf("请重新打开程序!\n");}
if(y0>y1)
{printf("出生年份比当前年份晚!\n请重新打开程序!\n");}
else if(y0==y1&&m0>m1)
{printf("出生月份比当前月份晚!\n请重新打开程序!\n");}
else if(y0==y1&&m0==m1&&d0>d1)
{printf("出生日期比当前日期晚!\n请重新打开程序!\n");}
/*计算实足年龄*/
else if(years=y1-y0,months=m1-m0,days=d1-d0)
{if(days<0)
{months--;}
/*end of switch(m1)*/
/*end of if(days<0)*/
/*修正实足年龄*/
if(months<0)
{years--;}
/*end of if(months<0)*/
printf("出生日期:%d年%d月%d日\n",y0,m0,d0);
printf("当前日期:%d年%d月%d日\n",y1,m1,d1);
printf("实足年龄:%d岁\n",years);
}
}
}