编程序判断输入年份的 3 月 1 日 是星期几 ?
1 ) 要求选取 2000 / 03 / 01 ( 周三 ) 为基准。
2 ) 同时必须考虑闰年的情况,思考计算 2000 年 前后年份的算法有何不同 。
3 ) 运行时分别输入 1988 ( 闰年 ) , 2100 ( 平年 ) 观察运行结果验证程序的正确性 。
#include <stdio.h>
int main() {
int year = 2000;
int month = 3;
int day = 1;
printf("请输入一个年份:");
scanf("%d", &year);
int diffDays = 0;
for (int i = year > 2000 ? 2000 : year; i < (year > 2000 ? year : 2000); i++) {
if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) {
diffDays += 366;
} else {
diffDays += 365;
}
}
int days = diffDays + (day - 1);
for (int i = 1; i < month; i++) {
if (i == 2) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
days += 29;
} else {
days += 28;
}
} else if (i == 4 || i == 6 || i == 9 || i == 11) {
days += 30;
} else {
days += 31;
}
}
int weekDay = (days % 7) + 2;
printf("%d 年 3 月 1 日是星期 %d。\n", year, weekDay);
return 0;
}
程序代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int year;
for (year = 1900; year < 2001; year++)
{
if (year % 4 == 0 && year % 100 != 0)
{
printf("%d\n", year);
}
if (year % 100 == 0 && year % 400 == 0)
{
printf("%d\n", year);
}
}
system("pause");
return 0;
}
运行结果:
利用蔡勒公式判断某天是星期几,供参考:
#include <stdio.h>
int Get_Week(int y, int m, int d)
{
int week = -1;
if (m == 1 || m == 2) {
m += 12; y--;
}
week = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400) % 7;
return week;
}
int main()
{
int y, m, d;
char* week[7] = { "星期一","星期二","星期三","星期四","星期五","星期六","星期日" };
printf("请输入(年/月/日):");
scanf("%d/%d/%d", &y, &m, &d);
printf("%d年%d月%d日是:%s", y, m, d, week[Get_Week(y, m, d)]);
return 0;
}