演算法筆記 日期類問題

2021-10-03 20:12:44 字數 1638 閱讀 9256

一、給出年份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...