DreamJudge-1437-日期类

1.题目介绍

Time Limit: 1000 ms
Memory Limit: 256 mb

编写一个日期类,要求按xxxx-xx-xx 的格式输出日期,实现加一天的操作。

输入输出格式

输入描述:

输入第一行表示测试用例的个数m,接下来m行每行有3个用空格隔开的整数,分别表示年月日。测试数据不会有闰年。

输出描述:

输出m行。按xxxx-xx-xx的格式输出,表示输入日期的后一天的日期。

输入输出样例

输入样例#:

2
1999 10 20
2001 1 31

输出样例#:

1999-10-21
2001-02-01

提示
注意个位数日期前面要有0。

题目来源

北京理工大学机试题

2.题解

2.1 日期计算 + 类应用

思路

注意下printf("%4d-%02d-%02d\n", year, month, day); 怎么补0即可

代码

#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(){
		day++;
		if(day > f[month]){
			month++;
			day = 1;
			if(month == 13){
				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;
		cin >> y >> m >> d;
		Date date(y, m, d);
		isLeapYear(date.year);
		date.AddDays();
		date.printDate();
	}
	return 0;
}
posted @   DawnTraveler  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示