解题思路:
该题说白了就是求明年的今天是星期几。
闰年,共366天
平年,共365天
比如17年8月16到18年8月16就过去了365天,到19年8月16就是730天,以此类推,一个星期七天, 如果这个数字能被7整除,那就是那一年没错啦;
注意事项:
分三种情况 a. 2月28号之前(从当年判断是否为闰年)
b.3月1号之后(从下一年判断是否为闰年)
c. 输入的刚好是闰年的2月29日(非得闰年才有这一天)
参考代码:
#include <stdio.h> 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<t;i++) { scanf("%s",arr[i]); } for(i=0;i<t;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; }
0.0分
2 人评分
2005年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:647 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:586 |
printf基础练习2 (C语言代码)浏览:617 |
1126题解浏览:577 |
数列排序 (C语言代码)浏览:606 |
字符逆序 (C语言代码)浏览:504 |
10月月赛题解浏览:536 |
幸运数 (C++代码)浏览:2857 |
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:1218 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:521 |