闰年分为普通闰年和世纪闰年。
普通闰年:公历年份是4的倍数,且不是100的倍数,为普通闰年。(如 2004年就是普通闰年)。
世纪闰年:公历年份是整百数的,必须是400的倍数才是世纪闰年(如1900 年不是世纪闰年,2000年是世纪闰年)。
所以有人将此规则总结为:四年一闰,百年不闰,四百年再闰。
闰年的一年为366天,闰年的二月份为29天。平年一年为365天,平年的二 月为28天
每年的1、3、5、7、8、10、12月份为31天,4、6、9、11月份为30天。
【编程实现】
算天数。
用户输入未来的某一天,输入格式为如202161,编程计算这一天和今天相 差多少天?(例如:今天和明天是相差一天)星期几?(注意:输出格式为 星期的数字值并在其前加“*”)。
输入描述:按要求输入未来某一天。
输出描述:第一行输入一正整数表示今天和未来一天相差的天数,第二行输 入未来的一天星期几且在星期前加“*”。
【样例输入】
2021 6 1
【样例输出)
183
*2
蓝桥杯C++题目《平年闰年算天数》创氪编程参考程序
#include <bits/stdc++.h>
using namespace std;
bool isLeap(int y){//判断闰年和平年的函数,返回布尔值
return y%4==0&&y%100!=0||y%400==0;
}
int main(){
const int Y=2021, M=1, D=14, W=4; // 定义今日日期
int days[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
//每个月份的天数
days[2] = 28 + (int)isLeap(Y);//2月平年为28天
int y, m, d;
cin >> y >> m >> d;//输入年 月 日
int i=Y, j=M, k=D, w=W, cnt=0;
while (!(i==y&&j==m&&k==d)){//循环至满足条件
cnt++;//总数累加
w++;//星期累加
if (w>7){//一星期七天
w=1;//大于7从1开始
cout<<"星期w="<<w<<endl;
}
k++;//天数
if (k>days[j]){//循环至条件满足
k=1;
j++;
if (j>12){
j=1;
i++;
days[2]=28+(int)isLeap(i);//2月28天
}
}
}
cout<<cnt<<endl<< '*' << w << endl; //输出结果
return 0;
}