问题描述 :
写一个函数,传入年月日,计算它的第二天,并返回该日期。由用户输入年月日和一个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;
}