程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 天勤OJ 題目1448: 日期累加

天勤OJ 題目1448: 日期累加

編輯:C++入門知識

題目描述 設計一個程序能計算一個日期加上若干天後是什麼日期。         輸入 輸入第一行表示樣例個數m,接下來m行每行四個整數分別表示年月日和累加的天數。         輸出 輸出m行,每行按yyyy-mm-dd的個數輸出。         樣例輸入 1 2008 2 3 100    樣例輸出 2008-05-13    提示 [+] *** 提示已隱藏,點擊上方 [+] 可顯示 ***       來源 北京理工大學計算機專業2008年研究生復試上機試題               [cpp]  /*********************************  *   日期:2013-2-16  *   作者:SJF0115  *   題號: 天勤OJ 題目1448: 日期累加  *   來源: *   結果:AC  *   來源:北京理工大學計算機專業2008年研究生復試上機試題  *   總結:  **********************************/   #include<stdio.h>    #include<string.h>    #include<stdlib.h>          //判斷閏年      int leap_year(int year){         if((year%100 != 0 && year%4 == 0) || (year % 400 == 0)){             return 1;         }         else{             return 0;         }     }     //閏年    int Month[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};     int main()   {       int n,i,j,year,month,day,days;        //freopen("C:\\Users\\SJF\\Desktop\\acm.txt","r",stdin);           while(scanf("%d",&n) !=EOF){           for(i = 0;i < n;i++){               //輸入每行四個整數分別表示年月日和累加的天數                scanf("%d %d %d %d",&year,&month,&day,&days);               //閏年2月29天                if(leap_year(year)){                   Month[2] = 29;               }               else{                   Month[2] = 28;               }               //從month月第一天開始計算                days = days + day;               for(j = month;j <= 13;j++){                   //到了下一年                    if(j == 13){                       month = 1;                       j = 1;                       year ++;                       if(leap_year(year)){                           Month[2] = 29;                       }                       else{                           Month[2] = 28;                       }                   }                   //累加的天數不夠這個月的                    if(days > Month[j]){                       days -= Month[j];                   }                   else{                       month = j;                       break;                   }               }//for                //輸出                printf("%d-%02d-%02d\n",year,month,days);           }       }         return 0;     }     /********************************* *   日期:2013-2-16 *   作者:SJF0115 *   題號: 天勤OJ 題目1448: 日期累加 *   來源: *   結果:AC *   來源:北京理工大學計算機專業2008年研究生復試上機試題 *   總結: **********************************/ #include<stdio.h> #include<string.h> #include<stdlib.h>     //判斷閏年   int leap_year(int year){       if((year%100 != 0 && year%4 == 0) || (year % 400 == 0)){           return 1;       }       else{           return 0;       }   }   //閏年 int Month[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};   int main() {     int n,i,j,year,month,day,days;  //freopen("C:\\Users\\SJF\\Desktop\\acm.txt","r",stdin);        while(scanf("%d",&n) !=EOF){ for(i = 0;i < n;i++){ //輸入每行四個整數分別表示年月日和累加的天數 scanf("%d %d %d %d",&year,&month,&day,&days); //閏年2月29天 if(leap_year(year)){ Month[2] = 29; } else{ Month[2] = 28; } //從month月第一天開始計算 days = days + day; for(j = month;j <= 13;j++){ //到了下一年 if(j == 13){ month = 1; j = 1; year ++; if(leap_year(year)){ Month[2] = 29; } else{ Month[2] = 28; } } //累加的天數不夠這個月的 if(days > Month[j]){ days -= Month[j]; } else{ month = j; break; } }//for //輸出 printf("%d-%02d-%02d\n",year,month,days); }     }       return 0;   }     轉載     [cpp] #include<stdio.h>    #include<string.h>    #include<stdlib.h>       int f[13] = {0, 31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};      bool check(int y) {       if (y % 100 == 0)           return y % 400 == 0;       else           return y % 4 == 0;   }      int main() {       int t;       scanf("%d", &t);       while (t--) {           int y, m, d, x;           scanf("%d %d %d %d", &y, &m, &d, &x);           f[2] = 28 + check(y);           d += x;           while (d > f[m]) {               d -= f[m];               ++m;               if (m > 12) {                   m = 1;                   ++y;                   f[2] = 28 + check(y); //重新更新二月份的天數                }           }           printf("%04d-%02d-%02d\n", y, m, d);       }       return 0;   }     #include<stdio.h> #include<string.h> #include<stdlib.h>   int f[13] = {0, 31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};   bool check(int y) {     if (y % 100 == 0)         return y % 400 == 0;     else         return y % 4 == 0; }   int main() {     int t;     scanf("%d", &t);     while (t--) {         int y, m, d, x;         scanf("%d %d %d %d", &y, &m, &d, &x);         f[2] = 28 + check(y);         d += x;         while (d > f[m]) {             d -= f[m];             ++m;             if (m > 12) {                 m = 1;                 ++y;                 f[2] = 28 + check(y); //重新更新二月份的天數             }         }         printf("%04d-%02d-%02d\n", y, m, d);     }     return 0; }  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved