用模拟的方法算很繁琐,而且很容易出错。
其实可以用蔡勒公式,快速求某一天是星期几。
#include<cstdio> int days[12]={31,28,31,30,31,30,31,31,30,31,30,31}; bool isLeapYear(int y) { return ( (y%100!=0)&&(y%4==0) ) || (y%400==0); } //0=Monday..6=Sunday int getweekdays(int y, int m, int d) { //一二月份看成前一年的13、14月份 if(m==1 || m==2 ) { m+=12; --y; } return (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7; } int main() { int t,m,y,d; scanf("%d", &t); for (int i=0;i<t; ++i) { scanf("%d%d%d", &m, &d, &y); int k=getweekdays(y,m,d); //还得等k天才到下一个Sunday if(k==6) { k=7; } else { k=6-k; } bool tag=isLeapYear(y); days[1]+=tag;//闰年二月要多加一天 d+=k; if ( d>days[m-1] ) { d-=days[m-1]; ++m; if( m>12) //下一个月已到新一年 { m=1; ++y; } } //利用c语言的格式化输出很方便 printf("%02d %02d %d/n",m, d, y); days[1]-=tag;//记得还原 } return 0; }
本文介绍了一种使用蔡勒公式快速计算指定日期是星期几的方法,并通过C语言实现了一个具体的程序示例。该程序不仅可以计算出给定日期是周几,还能自动调整日期到下一个星期天。
133

被折叠的 条评论
为什么被折叠?



