DreamJudge-1446-日期累加
1.题目介绍
Time Limit: 1000 ms
Memory Limit: 256 mb
设计一个程序能计算一个日期加上若干天后是什么日期。
输入输出格式
输入描述:
输入第一行表示样例个数m,接下来m行每行四个整数分别表示年月日和累加的天数。
输出描述:
输出m行,每行按yyyy-mm-dd的个数输出。
输入输出样例
输入样例#:
1
2008 2 3 100
输出样例#:
2008-05-13
题目来源
北京理工大学机试题
2.题解
2.1 日期计算
思路
这里最容易出错的地方就是在year++后,我们需要重新判断当前年份是否是闰年!!!
代码
#include<bits/stdc++.h>
using namespace std;
vector<int> f{0,31,28,31,30,31,30,31,31,30,31,30,31};
void isLeapYear(int year){
if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) f[2] = 29;
else f[2] = 28;
}
class Date{
public:
int year;
int month;
int day;
Date(int y, int m, int d): year(y), month(m), day(d){};
void AddDays(int addNum){
day += addNum;
while(day > f[month]){
day -= f[month];
month++;
if(month == 13){
year++;
isLeapYear(year); // 非常注意!!!!!
month = 1;
}
}
}
void printDate(){
printf("%4d-%02d-%02d\n", year, month, day);
}
};
int main(){
int n;
cin >> n;
for(int i = 0; i < n; i++){
int y, m, d, num;
cin >> y >> m >> d >> num;
Date date(y, m, d);
isLeapYear(date.year);
date.AddDays(num);
date.printDate();
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了