1949年的国庆节是星期六.2012年的国庆节是星期一.那么,从建国到2012,有几次国庆节是星期日?
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/08 11:25:27
1949年的国庆节是星期六.2012年的国庆节是星期一.那么,从建国到2012,有几次国庆节是星期日?
1949年的国庆节是星期六.2012年的国庆节是星期一.那么,从建国到2012,有几次国庆节是星期日?
1949年的国庆节是星期六.2012年的国庆节是星期一.那么,从建国到2012,有几次国庆节是星期日?
∵365/7=52余1,366/7=52余2,49年是星期6,
∴49年是星期六,50年是星期天,51年是星期一,52年是星期三;
53年是星期四,54年是星期五,55年是星期六,56年是星期一;
以后依次是2、3、4、6;
日、1、2、4;
5、6、日、2;
3、4、5、日;
1、2、3、5;
6、日、1、3;(和49-52一样)
∴28年一周期,其中有4个国庆是星期日,
2012-1949+1=64,
64/28=2余8,
剩余8年没有周日国庆,
∴共有8个 .
给你我的代码(不要再用上面的那个答案了,误人子弟啊):
#include
#include
#include
int month[13] = {0, 31, 29, 31, 30, 31, 30, 31, 31,30, 31,30, 31};
int main(void)
{
int...
全部展开
给你我的代码(不要再用上面的那个答案了,误人子弟啊):
#include
#include
#include
int month[13] = {0, 31, 29, 31, 30, 31, 30, 31, 31,30, 31,30, 31};
int main(void)
{
int sum = 0;
int yy = 1949, mm = 10, dd = 1;
int week = 5;
while(!(yy == 2012 && mm == 10 && dd == 1))
{
if(yy % 100 ? yy % 4 : yy % 400)
month[2] = 28;
else month[2] = 29;
dd ++;
if(dd > month[mm])
{
dd = 1;
mm ++;
}
if(mm > 12)
{
mm = 1;
yy ++;
}
week = (week + 1) % 7;
if(mm == 10 && dd == 1 && week == 6)
{
printf("%d-%d-%d\n", yy, mm, dd);
sum ++;
}
}
printf("%d\n", sum);
return 0;
}
答案:
1950-10-1
1961-10-1
1967-10-1
1972-10-1
1978-10-1
1989-10-1
1995-10-1
2000-10-1
2006-10-1
9
收起
千分一晓生同学的算法代码:
(应该是这个问题比较好的方法了)
#include
void main()
{
int add = 365%7;
int day = 6;
int i;
for(i = 1950;i <= 2012;i++)
{
if((i%400==0)||((i%10...
全部展开
千分一晓生同学的算法代码:
(应该是这个问题比较好的方法了)
#include
void main()
{
int add = 365%7;
int day = 6;
int i;
for(i = 1950;i <= 2012;i++)
{
if((i%400==0)||((i%100!=0)&&(i%4==0))) //this is leap year
{
add = 366%7;
}
else
{
add = 365%7;
}
day = (day + add)%7;
if(day == 0)
{
printf("%d is true\n",i);
}
}
}
收起