天天看點

日期類(暑假每日一題 19)

編寫一個日期類,要求按 ​

​xxxx-xx-xx​

​ 的格式輸出日期,實作加一天的操作。

輸入格式

第一行包含整數 ,表示共有

每組資料占一行,包含

輸出格式

每組資料輸出一行,一個結果,按 ​​

​xxxx-xx-xx​

​ 的格式輸出,表示輸入日期的後一天的日期。

資料範圍

輸入日期保證合法且不會出現閏年。

年份範圍

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;
}