解题思路:
该题说白了就是求明年的今天是星期几。
闰年,共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 人评分
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:1116 |
矩阵转置 (C语言代码)浏览:1525 |
C语言程序设计教程(第三版)课后习题8.3 (Java代码)浏览:1367 |
C语言考试练习题_一元二次方程 (C语言代码)浏览:734 |
A+B for Input-Output Practice (C++代码)浏览:605 |
简单的a+b (C语言代码)浏览:520 |
C语言程序设计教程(第三版)课后习题1.6 (C++代码)浏览:889 |
P1001 (C语言代码)浏览:800 |
C语言程序设计教程(第三版)课后习题6.8 (C语言代码)浏览:763 |
淘淘的名单 (C语言代码)浏览:1095 |