PAT练习 日期累加

    技术2025-11-05  25

    PAT练习 日期累加

    题目描述

    设计一个程序能计算一个日期加上若干天后是什么日期。

    输入

    输入第一行表示样例个数m,接下来m行每行四个整数分别表示年月日和累加的天数。

    输出

    输出m行,每行按yyyy-mm-dd的个数输出。

    样例输入

    1 2008 2 3 100

    样例输出

    2008-05-13

    C++实现

    #include <iostream> #include <string.h> #include <stdio.h> using namespace std; const int month[13][2]={{0,0},{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},{31,31},{31,31},{30,30},{31,31},{30,30},{31,31}}; bool isLeap(int year){ return (year%4==0 && year%100!=0)||(year%400==0); } int main(){ int year_num,month_num,day_num,m,n; scanf("%d",&m); for(int i=0;i<m;i++){ scanf("%d %d %d %d",&year_num,&month_num,&day_num,&n); for(int j=0;j<n;j++){ if(day_num==month[month_num][isLeap(year_num)]){ day_num=1; if(month_num==12){ month_num=1; year_num++; }else{ month_num++; } }else{ day_num++; } } if(year_num<10){ printf("000"); }else{ if(year_num<100){ printf("00"); }else{ if(year_num<1000){ printf("0"); } } } printf("%d-",year_num); if(month_num<10){ printf("0"); } printf("%d-",month_num); if(day_num<10){ printf("0"); } printf("%d\n",day_num); } return 0; }

     

    Processed: 0.037, SQL: 9