日期问题题解大合集
算法1
典型的日期问题
我们只需要把每月的天数先给写好:
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
紧接着输入后知道符合题目要求为止
在中途我们需要:
判断闰年(y
):
if(y%4==0&&y%100!=0||y%400==0)a[2]=29;else a[2]=28;
看天数(d
)有没有超过这个月的天数(a[m]
):
if(d>a[m]){
m++;
d=1;
}
看月数(m
)有没有超过12
:
if(m>12){
y++;
m=1;
}
最终输出printf("%04d/%02d/%02d\n",y,m,d);
即可
参考文献
C++ 代码
#include<bits/stdc++.h>
using namespace std;
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{
int y,m,d;
char ch;
cin>>y>>ch>>m>>ch>>d;
while(y%(m*d)!=0){
d++;
if(y%4==0&&y%100!=0||y%400==0)a[2]=29;else a[2]=28;
if(d>a[m]){
m++;
d=1;
}
if(m>12){
y++;
m=1;
}
}
printf("%04d/%02d/%02d\n",y,m,d);
}