东华大学 oj65——求N天后的日期

问题描述 :
写一个函数,传入年月日,计算它的第二天,并返回该日期。由用户输入年月日和一个n值,使用前述函数,计算该日期加n天的日期为多少。

输入说明 :
输入year,month,day和n共4个正整数,以空格分隔。n的值不超过2000。

输出说明 :
输出计算得到的结果年月日共3个正整数,整数之间以一个空格分隔,行首与行尾无多余空格。

输入范例 :
2000 1 1 366

输出范例 :
2001 1 1

#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int countDays(int year,int month,int R){
    
    
	int day;
	if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){
    
    
		day=31;
	}else if(month==4||month==6||month==9||month==11){
    
    
		day=30;
	} else if(month==2){
    
    
		if((year % 4 == 0 && year % 100 != 0 )|| ( year % 400 == 0)){
    
    
			day=29;
		}else{
    
    
			day=28;
		}
	}
	return day;
}



int main(int argc, char *argv[]) {
    
    
	int year,month,day,n;
	int months[13] = {
    
    0,31,28,31,30,31,30,31,31,30,31,30,31};
	while(scanf("%d%d%d%d",&year,&month,&day,&n)!=EOF){
    
    
		if ((year%400==0)||(year%4==0&&year%100!=0)){
    
    
			months[2]=29;
		}
		day=day+n;
		while(day>months[month]){
    
    
				if((year%400==0)||(year%4==0&&year%100!=0)){
    
    
					months[2]=29;//可能接下来还会出现闰年 
				}else{
    
    
					months[2]=28;
				}
				day=day-months[month];
				month++;
				if(month>12)
				{
    
    
					year++;
					month=month-12;
				}
		}
		printf("%d %d %d\n",year,month,day);
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_44169095/article/details/113737397