一、給出年份m和一年中的第幾天,算出第n天是幾月幾號
二、求日期差值
示例一:給出年份m和一年中的第幾天,算出第n天是幾月幾號
題目分析:
(1)這類問題首先判斷年份為平年閏年
(2)由天數如何推算月份,遇到閏年了如何處理,使用一維陣列來表示每月的天數,設定初始值
(3)**中由天數推算月份這裡處理的較簡潔
(4)輸出格式
**:
#includeint main();
int y,n;
while(scanf("%d %d",&y,&n)!=eof) else
for(int i=0;i<12;i++)else
} }return 0;
}
**分析:
(1)定義一維陣列表示每月的天數,初始值設為平年每月的天數
int mon[13]=;
(2)判斷平年還是閏年,若為閏年mon[1]=29
if(y%400==0||(y%4==0&&y%100!=0)) else
(3)利用for迴圈,推斷給定的一年的第幾天是幾月幾號
for(int i=0;i<12;i++)else
}
(4)輸出格式,%04d,表示輸出四位,若不夠四位前面補0
printf("%04d-%02d-%02d\n",y,i+1,n);
輸出:
示例二:求日期差值
題目描述:
有兩個日期,求兩個日期之間的天數,如果兩個日期是連續的我們規定他們之間的天數為兩天
有多組資料,每組資料有兩行,分別表示兩個日期,形式為yyyymmdd,每組資料輸出一行,即日期差值
題目分析:
(1)日期用字串表示或者用整數表示,設定寬度即可;
(2)求給定日期是一年中的第多少天;
(3)根據年份判定之間有多少個閏年;
**:
#includeusing namespace std;
int main();
while(scanf("%s%s",m,n)!=eof)
}else
if((y_2%4==0&&y_2%100!=0)||y_2%400==0)
}else
for(int i=y_1+1;i方法 2:
#includeusing namespace std;
bool yearpd(int x)
int daypd(int y,int m,int d);
if(yearpd(y))
}else
return day;
}int main();
while(scanf("%04d%02d%02d",&y_1,&m_1,&d_1)!=eof)
return 0;
}
日期處理問題(摘自演算法筆記)
日期處理的問題總是會讓許多人頭疼,因為在這種問題中,總是會需要處理平年和閏年 大月和小月的問題,因此細節比較繁雜,但是只要細心處理細節,一般都可以解決。有兩個日期,求兩個日期之間的天數,如果兩個日期是連續的,則規定它們之間的天數為兩天。有多組資料,每組資料有兩行,分別表示兩個日期,形式為yyyymm...
演算法筆記3 4 問題 C 列印日期
給出年分m和一年中的第n天,算出第n天是幾月幾號。輸入包括兩個整數y 1 y 3000 n 1 n 366 可能有多組測試資料,對於每組資料,按 yyyy mm dd的格式將輸入中對應的日期列印出來。2013 60 2012 300 2011 350 2000 2112013 03 01 2012 ...
演算法筆記3 4 問題 E 日期累加
設計乙個程式能計算乙個日期加上若干天後是什麼日期。輸入第一行表示樣例個數m,接下來m行每行四個整數分別表示年月日和累加的天數。輸出m行,每行按yyyy mm dd的個數輸出。1 2008 2 3 1002008 05 13 include include includeusing namespace...