日期类(暑假每日一题 19)

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

输入格式
第一行包含整数 T T T,表示共有 T T T 组测试数据。

每组数据占一行,包含 3 3 3 个用空格隔开的整数,分别表示年月日。

输出格式
每组数据输出一行,一个结果,按 xxxx-xx-xx 的格式输出,表示输入日期的后一天的日期。

数据范围
输入日期保证合法且不会出现闰年。
年份范围 [ 1000 , 3000 ] [1000,3000] [1000,3000]

输入样例:

2
1999 10 20
2001 1 31

输出样例:

1999-10-21
2001-02-01

#include<iostream>

using namespace std;

int md[] = {
    
    0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

void next_day(int& y, int &m, int &d){
    
    
    
    d ++;
    int days = md[m];
    if((y % 400 == 0 || y % 100 != 0 && y % 4 == 0) && m == 2)
        days++;
    
    if(d > days) d %= days, m++;
    if(m > 12) m %= 12, y++;
}

int main(){
    
    
    
    int t;
    cin >> t;
    int y, m, d;
    while(t--){
    
    
        
        cin >> y >> m >> d;
        next_day(y, m, d);
        printf("%04d-%02d-%02d\n", y, m, d);
    }
    
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_46456049/article/details/126239873