日期问题

2020-06-27  本文已影响0人  CristianoC

日期问题掌握规律就很好解决了,主要是处理闰年2月这个问题,输出格式有要求前置0的话用C语言的输出方式即可。

#include <iostream>
using namespace std;
struct da{
    int year;
    int month;
    int day;
}date[100];
int mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
void is(int y){
    if((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0))
        mon[2] = 29;
    else
        mon[2] = 28;
}
int main(){
    int n,number;
    while (scanf("%d",&n) != EOF){
        for(int i = 0;i < n;i++){
            scanf("%d%d%d%d",&date[i].year,&date[i].month,&date[i].day,&number);
            is(date[i].year);
            int y = date[i].year,m = date[i].month,d = date[i].day;
            if(number <= mon[m+1] - d){
                d = d + number;
            }else {
                    while (number > mon[m] - d) {
                        number -= mon[m];
                        m++;
                        if (m > 12) {
                            y++;
                            is(y);
                            m = 1;
                        }
                    }
                    d = d + number;
                    }
            printf("%d-%02d-%02d\n",y,m,d);
        }
    }
}
上一篇下一篇

猜你喜欢

热点阅读