目录
1. 日期累加
题目描述
输入
输出
代码
2. 日期差值
题目描述
输入
输出
代码
3. 打印日期
题目描述
输入
输出
代码
写在最后:
题目链接:日期累加
1
2008 2 3 100
2008-05-13
#include
using namespace std;
//打表
int month[] = {0, 31, 28, 31, 30, 31, 30, 31 , 31, 30, 31, 30, 31};
//取当月日期
int get_mday(int year, int mon) {
if(mon == 2 && ((year % 4 == 0 && year % 100) || year % 400 == 0)) return month[mon] + 1;
else return month[mon];
}
//具体实现
void plus_day(int& year, int& mon, int& day, int plus) {
day += plus;
while (day > get_mday(year, mon)) {
int mday = get_mday(year, mon);
if(day > mday) {
day -= mday;
mon++;
}
if(mon > 12) {
mon -= 12;
year++;
}
}
}
int main()
{
int n;
cin >> n;
while(n--) {
int year, mon, day, plus;
cin >> year >> mon >> day >> plus;
//将日期加在一起
plus_day(year, mon, day, plus);
printf("%02d-%02d-%02d\n", year, mon, day);
}
return 0;
}
题目链接:日期差值
20110412
20110422
11
#include
using namespace std;
//打表
int month[] = {0, 31, 28, 31, 30, 31, 30, 31 , 31, 30, 31, 30, 31};
//判断闰年
bool is_leap(int year) {
if((year % 4 == 0 && year % 100) || year % 400 == 0) return true;
else return false;
}
int main()
{
int n1, n2;
while (cin >> n1 >> n2) {
//保证之后的代码时小的日期减大的日期
if(n1 > n2) swap(n1, n2);
else if(n1 == n2) {
cout << 2 <
题目链接:打印日期
2000 3
2000 31
2000 40
2000 60
2000 61
2001 60
2000-01-03
2000-01-31
2000-02-09
2000-02-29
2000-03-01
2001-03-01
#include
using namespace std;
//打表
int month[] = {0, 31, 28, 31, 30, 31, 30,31, 31, 30, 31, 30, 31};
//求当月日期
int get_mday(int year, int mon) {
if(mon == 2 && ((year % 4 == 0 && year % 100) || year % 400 == 0)) return month[mon] + 1;
else return month[mon];
}
int main()
{
int year, day;
while (cin >> year >> day) {
int mon = 1;
while (day > get_mday(year, mon)) {
day -= get_mday(year, mon);
mon++;
if(mon > 12) {
mon -= 12;
year++;
}
}
printf("%02d-%02d-%02d\n", year, mon, day);
}
return 0;
}
日期类的题目大同小异,
把日期类的基本思路练熟了,基本上是能够稳拿这一部分的分数的,
如果你的日期类还不熟练,赶快拿上面几道题练一练手吧!
以上就是本篇文章的内容了,感谢你的阅读。
如果喜欢本文的话,欢迎点赞和评论,写下你的见解。
如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。
之后我还会输出更多高质量内容,欢迎收看。