巨大八爪鱼
武林盟主 二十一级
|
Floor 1
Posted at: 5/8/16 17:41
【题目】
【结果填空】 (满分5分)
1949年的国庆节(10月1日)是星期六。
今年(2012)的国庆节是星期一。
那么,从建国到现在,有几次国庆节正好是星期日呢?
只要答案,不限手段! 可以用windows日历,windows计算器,Excel公式,。。。。。 当然,也可以编程!
不要求写出具体是哪些年,只要一个数目! 千万不要提交源代码!
答案不要写在这里,写在“解答.txt”中
【代码】 int main(void) { int days[] = {31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int y = 1949; int m = 10; int d = 1; int week = 6; int cnt = 0; while (y < 2012) { if (days[1] == 0) { if (y % 400 == 0 || (y % 100 != 0 && y % 4 == 0)) days[1] = 29; else days[1] = 28; }
d++; if (d > days[m - 1]) { d = 1; m++; if (m > 12) { m = 1; y++; days[1] = 0; } }
week++; if (week > 6) { week = 0; if (m == 10 && d == 1) { cout << y << '-' << m << '-' << d << endl; cnt++; } } }
cout << cnt << endl;
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
|
巨大八爪鱼
武林盟主 二十一级
|
Floor 2
Posted at: 5/21/16 13:45
如果用C语言标准库函数的话,只能计算1970年后的年份。 【代码】 #include <stdio.h> #include <string.h> #include <time.h>
void main() { time_t t; struct tm info; int cnt = 0; memset(&info, 0, sizeof(info)); info.tm_year = 1970 - 1900; info.tm_mon = 10 - 1; info.tm_mday = 1; while (info.tm_year <= 2012 - 1900) { t = mktime(&info); if (info.tm_wday == 0) { printf("%s", ctime(&t)); cnt++; } info.tm_year++; } printf("共有%d个\n", cnt); } 【输出】 Sun Oct 01 00:00:00 1972 Sun Oct 01 00:00:00 1978 Sun Oct 01 00:00:00 1989 Sun Oct 01 00:00:00 1995 Sun Oct 01 00:00:00 2000 Sun Oct 01 00:00:00 2006 共有6个
|