今天做了乙個關於日期的問題,耗費了不少時間,鑑於之前也做過幾個日期問題,在這裡總結一下。
題目鏈結
**:
(這題對格式要求很嚴,下面的**交上去會格式錯誤,但這不是重點。)
#include
#include
#include
using
namespace std;
int dpm[13]
=;int cy=
2007
,cm=
1,cd=
1,wk=1;
bool
isleap
(int year)
return
false;}
void
date
(int y,
int m)if(
(cy||(cy==y&&cm
}if(cm>12)
}// printf("%d.%d.%d %d\n",cy,cm,cd,wk);
}int
main()
for(
int i=
1; i<
5; i++)}
printf
("---------------------\nsu mo tu we th fr sa\n---------------------\n");
for(
int i=
0; i<
5; i++
)else
printf
(" ");
printf
("\n");
}printf
("---------------------");
return0;
}
個人認為這類問題最煩的就在於各種邊界條件的處理。
1.這種題最常規的思路是用三層迴圈。在第
三、第二層迴圈結束的時候要考慮是否執行第三層迴圈裡面的某些操作。
2.接第一條,如果執行要考慮邊界條件,即在執行之前加一句if(…),防止最後多執行一次。
3.注意跨年、跨月很可能導致重複操作,要進行去重處理。
4.確認正確之前一定要在第三層迴圈內部輸出每一天的日期,如果出現錯誤方便判斷出錯位置和原因。確認後務必刪除該輸出語句再提交。
例題2.
部分**:
int a=
2000
,b=2020
,m=1
,d=1
,hr,nom,mth;
//b:最終年份,a,m,d:當前日期,nom:星期一數,hr:總小時數,mth:總月份數
int k=6;
//k為當前星期數
nom=
(days
(a,b,10,
1)-2
)/7+
1;mth=12*
(b-a)+9
+1; hr=
days
(a,b,10)
+mth+nom;
while
(a
d++;if
(d<=dpm[m]
) k++;if
(k==8)
k=1;
//返回星期一
} m++;if
(m<13)
} a++
; m=d=1;
k++;if
(k==8)
k=1;
}
Python 日期相關問題總結
比如 計算過去兩年 一年 半年 三個月 乙個月內的資料量 計算合同預計簽署日期在未來一年內的資料量 def past24mons time time time.replace past24ago format int datetime.datetime.now strftime y m d 4 2,...
Python 日期總結
usr bin python import time import calendar 時間元組 年 月 日 時 分 秒 一周的第幾日 一年的第幾日 夏令時 一周的第幾日 0 6 一年的第幾日 1 366 夏令時 1,0,1 python中時間日期格式化符號 y 兩位數的年份表示 00 99 y 四位...
問題 A 日期差值
時間限制 1 sec 記憶體限制 32 mb 有兩個日期,求兩個日期之間的天數,如果兩個日期是連續的我們規定他們之間的天數為兩天。有多組資料,每組資料有兩行,分別表示兩個日期,形式為yyyymmdd 每組資料輸出一行,即日期差值 20130101 201301055 includeint month...