解题思路:
该题说白了就是求明年的今天是星期几。
闰年,共366天
平年,共365天
比如17年8月16到18年8月16就过去了365天,到19年8月16就是730天,以此类推,一个星期七天, 如果这个数字能被7整除,那就是那一年没错啦;
注意事项:
分三种情况 a. 2月28号之前(从当年判断是否为闰年)
b.3月1号之后(从下一年判断是否为闰年)
c. 输入的刚好是闰年的2月29日(非得闰年才有这一天)
参考代码:#include
int runnian(int year);
int runnian(int year) //判断闰年
{
if((year%4==0)&&(year%100!=0)||(year%400==0))
return 366;
else
return 365;
}
int main()
{
int t,sum=0;
int i;
int year,mounth,day;
char arr[10000][11]; //存储几组数据
scanf("%d",&t);
for(i=0;i
{
scanf("%s",arr[i]);
}
for(i=0;i
{
sum=0;
year=(arr[i][0]-'0')*1000+(arr[i][1]-'0')*100+(arr[i][2]-'0')*10+(arr[i][3]-'0');
mounth=(arr[i][5]-'0')*10+(arr[i][6]-'0');
day=(arr[i][8]-'0')*10+(arr[i][9]-'0');
while(1)
{
if(mounth<=2&&day<29) //2月28之前
{
sum+=runnian(year);
if(sum%7==0)
{
printf("%d\n",year+1);
break;
}
else
year++;
}
else if(mounth==2&&day==29) //2月29当天
{
sum+=runnian(year+1);
if(sum%7==0&&runnian(year+1)==366)
{
printf("%d\n",year+1);
break;
}
year++;
}
else //3月1日之后
{
sum+=runnian(year+1);
if(sum%7==0)
{
printf("%d\n",year+1);
break;
}
year++;
}
}
}
return 0;
}