题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
整个 20 世纪(1901 年 1 月 1日至 2000 年 12 月 31 日之间),一共有多少个星期一?(不要告诉我你不知道今天是星期几)
问题分析
我们不知道1901年1月1日是星期几,但是我们知道今天是星期几,我们采用日历的形式倒推回去,这样我们就能直到每一天是星期几,在倒推的同时我们数一下有多少个星期一即可。需要注意闰年有365天。
代码实现
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int year=2023,month=2,day=3;
int x=5;
int count=0;
int m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int M[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
while(year>1901||(year==1901&&month>1)||(year==1901&&month==1&&day>1)){//到1901年1月1日跳出循环
if(year<2001&&x==1){
count++;
}
if(day>1){
day--;
}else{
if(month>1){
month--;
}else{
month=12;
year--;
}
if((year%4==0&&year%100!=0)||year%400==0){
day=M[month];
}else{
day=m[month];
}
}
if(x>1){
x--;
}else{
x=7;
}
}
if(x==1){//因为最后一天跳出循环了,并没有判断这一天是星期几,所以我们要判断一下1901年1月1日是星期几
count++;
}
printf("%d",count);
return 0;
}