日期類問題 機試自學手記(2)

2021-09-25 05:16:27 字數 1652 閱讀 8332

文章根據王道機試書進行學習。

當年數不能被100整除時若其能被4整除則為閏年,或者其能被400整除也為閏年,閏年二月29天,平年二月28天

year%100!=0 &&year%4==0 ||year%400==0

問題描述:

有兩個日期,求兩個日期之間的天數,如果兩個日期時連續的我們規定他們之間的天數為兩天。

輸入:有多組資料,每組資料有兩行,分別表示兩個日期,形式為yyyymmdd

示例**:

(思想是把問題統一到與原點日期2023年1月1日時間差的計算上)

#include

#define isyeap(x) x%100!=0&&x%4==0||x%400==0?1:0

//定義巨集判斷是否閏年

int dayofmonth[13]

[2]=

;struct data}}

};int buf[

5001][

13][32

];//儲存預處理的天數

intabs

(int x)

intmain()

int d1,m1,y1;

int d2,m2,y2;

while

(scanf

("%4d%2d%2d"

,&y1,

&m1,

&d1)

!=eof

)return0;

}

樣例輸入:

9 october 2001

14 october 2001

樣例輸出:

tuesday

sunday

示例**:

#include

#include

#define isyeap(x) x%100!=0&&x%4==0||x%400==0?1:0

int dayofmonth[13]

[2]=

;struct data}}

};int buf[

5001][

13][32

];char monthname[13]

[20]=

;char weekname[7]

[20]=

;int

main()

int d,m,y;

char s[20]

;while

(scanf

("%d%s%d"

,&d,s,

&y)!=

eof)

}int days=buf[y]

[m][d]

-buf[

2019][

7][12

];//2023年7月12日是周五

days+=5

;//周五下標是5

printf

("%s\n"

,weekname[

(days%7+

7)%7

]);}

return0;

}

巨集定義的函式形式如:#define isyeap(x) x%100!=0&&x%4==0||x%400==0?1:0

strcmp()字串比較,當為0時候表示相同

王道機試 日期類問題

題目描述 有兩個日期,求兩個日期之間的天數,如果兩個日期是連續的我們規定他們之間的天數為兩天輸入 有多組資料,每組資料有兩行,分別表示兩個日期,形式為yyyymmdd輸出 每組資料輸出一行,即日期差值做題思路 樣例輸入 20110412 20110422樣例輸出 11對於日期類 年月日,就像學生資訊...

機試之日期問題 列印日期

題目描述 給出年分m和一年中的第n天,算出第n天是幾月幾號。輸入描述 輸入包括兩個整數y 1 y 3000 n 1 n 366 輸出描述 可能有多組測試資料,對於每組資料,按 yyyy mm dd的格式將輸入中對應的日期列印出來。示例1輸入 2000 32000 312000 402000 6020...

c c 機試排版類問題

第一題,列印梯形 題目描述 輸入乙個高度h,輸出乙個高為h,上底邊為h的梯形。輸入 乙個整數h 1 h 1000 輸出 h所對應的梯形。樣例輸入 4 樣例輸出 這題比較簡單,為 include include include include include includeusing namespac...