当前位置:编程学习 > C/C++ >>

天勤OJ 题目1448: 日期累加

题目描述
设计一个程序能计算一个日期加上若干天后是什么日期。
 
 
 
 
输入
输入第一行表示样例个数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{
补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,