




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、C語言陰陽歷算法2008-10-25 23:22:11 作者: 來源:中國論文下載中心 瀏覽次數:188 文字大小:【大】【中】【小】C語言陰陽歷算法 程序為:/*prototype: int calconv( struct convdate * );struct convdate int source; =0 則輸入日期為西歷, !=0 則輸入為農歷 int solaryear; 輸出或輸入之西歷年份 int solarmonth; 西歷月 int solardate; 西歷日 int lunaryear; 輸出或輸入之農歷年份 int lunarmonth; 農歷月 int lunarda
2、te; 農歷日 int weekday; 該日為星期幾 ( 0=星期日, 1=星期一, . ) int kan; 該日天干 ( 0=甲, 1=乙, ., 9=癸 ) int chih; 該日地支 ( 0=子, 1=丑, ., 11=亥 ) ;呼叫時須設定 souce 的值, 若為 0 則為西歷轉農歷, 否則為農歷轉西歷. 然後視輸入為西歷或農歷來設定西歷或農歷的年月日. 轉換後的年月日會填入結構中( 農歷或西歷 ), 以及該日為星期幾, 天干地支. 若函式的返回值為 0 表示沒有錯誤, 1 為輸入之年份錯誤, 2 為輸入之月份錯誤, 3 為輸入之日期錯誤. 輸入之西歷年須在 1937 - 20
3、31 間輸入之農歷年須在 1936 - 2030 間若須擴充, 則增加 lunarcal*/#define firstyear 1936 /* the first year in lunarcal */struct convdate int source; int solaryear; int solarmonth; int solardate; int lunaryear; int lunarmonth; int lunardate; int weekday; int kan; int chih; ;struct taglunarcal int basedays; /* 到西歷 1 月 1
4、日到農歷正月初一的累積日數 */ int intercalation; /* 閏月月份. 0=此年沒有閏月 */ int baseweekday; /* 此年西歷 1 月 1 日為星期幾再減 1 */ int basekanchih; /* 此年西歷 1 月 1 日之干支序號減 1 */ int monthdays13; /* 此農歷年每月之大小, 0=小月(29日), 1=大月(30日)*/ ;struct taglunarcal lunarcal = 23, 3, 2, 17, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0 , /* 1936 */ 41, 0
5、, 4, 23, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1 , 30, 7, 5, 28, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1 , 49, 0, 6, 33, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1 , 38, 0, 0, 38, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1 , /* 1940 */ 26, 6, 2, 44, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0 , 45, 0, 3, 49, 1, 0, 1, 1
6、, 0, 1, 0, 1, 0, 1, 0, 1, 0 , 35, 0, 4, 54, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1 , 24, 4, 5, 59, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1 , /* 1944 */ 43, 0, 0, 5, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1 , 32, 0, 1, 10, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1 , 21, 2, 2, 15, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1,
7、0, 1, 1 , 40, 0, 3, 20, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1 , /* 1948 */ 28, 7, 5, 26, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1 , 47, 0, 6, 31, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1 , 36, 0, 0, 36, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 , 26, 5, 1, 41, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1 , /* 1952 *
8、/ 44, 0, 3, 47, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1 , 33, 0, 4, 52, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0 , 23, 3, 5, 57, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1 , 42, 0, 6, 2, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1 , /* 1956 */ 30, 8, 1, 8, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0 , 48, 0, 2, 13, 1, 1,
9、 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0 , 38, 0, 3, 18, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 , 27, 6, 4, 23, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0 , /* 1960 */ 45, 0, 6, 29, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0 , 35, 0, 0, 34, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1 , 24, 4, 1, 39, 1, 0, 1, 0, 0, 1, 0, 1,
10、0, 1, 1, 1, 0 , 43, 0, 2, 44, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0 , /* 1964 */ 32, 0, 4, 50, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1 , 20, 3, 5, 55, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0 , 39, 0, 6, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0 , 29, 7, 0, 5, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1 , /* 19
11、68 */ 47, 0, 2, 11, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1 , 36, 0, 3, 16, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0 , 26, 5, 4, 21, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1 , 45, 0, 5, 26, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1 , /* 1972 */ 33, 0, 0, 32, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1 , 22, 4, 1, 37,
12、 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1 , 41, 0, 2, 42, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1 , 30, 8, 3, 47, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1 , /* 1976 */ 48, 0, 5, 53, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1 , 37, 0, 6, 58, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1 , 27, 6, 0, 3, 1, 0, 0, 1, 0, 1, 1
13、, 0, 1, 1, 0, 1, 0 , 46, 0, 1, 8, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0 , /* 1980 */ 35, 0, 3, 14, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1 , 24, 4, 4, 19, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1 , 43, 0, 5, 24, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1 , 32, 10, 6, 29, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1
14、, /* 1984 */ 50, 0, 1, 35, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0 , 39, 0, 2, 40, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1 , 28, 6, 3, 45, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0 , 47, 0, 4, 50, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1 , /* 1988 */ 36, 0, 6, 56, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0 , 26, 5,
15、 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1 , 45, 0, 1, 6, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0 , 34, 0, 2, 11, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0 , /* 1992 */ 22, 3, 4, 17, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0 , 40, 0, 5, 22, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0 , 30, 8, 6, 27, 0, 1, 1, 0, 1
16、, 0, 1, 1, 0, 0, 1, 0, 1 , 49, 0, 0, 32, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1 , /* 1996 */ 37, 0, 2, 38, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1 , 27, 5, 3, 43, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1 , 46, 0, 4, 48, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1 , 35, 0, 5, 53, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1,
17、 0, 1 , /* 2000 */ 23, 4, 0, 59, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1 , 42, 0, 1, 4, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1 , 31, 0, 2, 9, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0 , 21, 2, 3, 14, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1 , /* 2004 */ 39, 0, 5, 20, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1 , 28
18、, 7, 6, 25, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1 , 48, 0, 0, 30, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1 , 37, 0, 1, 35, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1 , /* 2008 */ 25, 5, 3, 41, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1 , 44, 0, 4, 46, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1 , 33, 0, 5, 51, 1, 0, 1
19、, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1 , 22, 4, 6, 56, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 , /* 2012 */ 40, 0, 1, 2, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 , 30, 9, 2, 7, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1 , 49, 0, 3, 12, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1 , 38, 0, 4, 17, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0
20、, 1, 1, 0 , /* 2016 */ 27, 6, 6, 23, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1 , 46, 0, 0, 28, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0 , 35, 0, 1, 33, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0 , 24, 4, 2, 38, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1 , /* 2020 */ 42, 0, 4, 44, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
21、1 , 31, 0, 5, 49, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0 , 21, 2, 6, 54, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1 , 40, 0, 0, 59, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1 , /* 2024 */ 28, 6, 2, 5, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0 , 47, 0, 3, 10, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1 , 36, 0, 4, 15, 1,
22、 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1 , 25, 5, 5, 20, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0 , /* 2028 */ 43, 0, 0, 26, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1 , 32, 0, 1, 31, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0 , 22, 3, 2, 36, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0 ;#define lastyear (firstyear+sizeof(l
23、unarcal)/sizeof(struct taglunarcal)-1)/* 西歷年每月之日數 */ int solarcal12 = 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ;/* 西歷年每月之累積日數, 平年與閏年 */ int solardays214 = 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365, 396 , 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366, 397 ;/* 求此西歷年
24、是否為閏年, 返回 0 為平年, 1 為閏年 */ int getleap( int year ) if ( year % 400 = 0 ) return 1; else if ( year % 100 = 0 ) return 0; else if ( year % 4 = 0 ) return 1; else return 0; /* 西歷農歷轉換 */ int calconv( struct convdate *cd ) int leap, d, sm, y, im, l1, l2, acc, i, lm, kc; if ( cd->source = 0 ) /* solar *
25、/ if ( cd->solaryear <= firstyear | cd->solaryear > lastyear ) return 1; sm = cd->solarmonth - 1; if ( sm < 0 | sm > 11 ) return 2; leap = getleap( cd->solaryear ); if ( sm = 1 ) d = leap + 28; else d = solarcalsm; if ( cd->solardate < 1 | cd->solardate > d ) retu
26、rn 3; y = cd->solaryear - firstyear; acc = solardaysleapsm + cd->solardate; cd->weekday = ( acc + lunarcaly.baseweekday ) % 7; kc = acc + lunarcaly.basekanchih; cd->kan = kc % 10; cd->chih = kc % 12; if ( acc <= lunarcaly.basedays ) y-; cd->lunaryear = cd->solaryear - 1; leap
27、 = getleap( cd->lunaryear ); sm += 12; acc = solardaysleapsm + cd->solardate; else cd->lunaryear = cd->solaryear; l1 = lunarcaly.basedays; for ( i=0; i<13; i+ ) l2 = l1 + lunarcaly.monthdaysi + 29; if ( acc <= l2 ) break; l1 = l2; cd->lunarmonth = i + 1; cd->lunardate = acc -
28、 l1; im = ercalation; if ( im != 0 && cd->lunarmonth > im ) cd->lunarmonth-; if ( cd->lunarmonth = im ) cd->lunarmonth = -im; if ( cd->lunarmonth > 12 ) cd->lunarmonth -= 12; else /* lunar */ if ( cd->lunaryear < firstyear | cd->lunaryear >= lastyear ) return 1; y = cd->lunaryear - firstyear; im = lunarcal
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東工貿職業技術學院《傳播倫理學》2023-2024學年第二學期期末試卷
- 閩南理工學院《照明基礎》2023-2024學年第二學期期末試卷
- 新疆第二醫學院《大規模集成電路布局規劃設計》2023-2024學年第二學期期末試卷
- 宜春學院《孔型設計》2023-2024學年第二學期期末試卷
- 淮南職業技術學院《材料成型綜合性設計與制作》2023-2024學年第二學期期末試卷
- 蘇州大學《分布式處理與云計算》2023-2024學年第二學期期末試卷
- 中央財經大學《工程量清單計量》2023-2024學年第二學期期末試卷
- 吉林工商學院《商業空間設計》2023-2024學年第二學期期末試卷
- 炎黃職業技術學院《軟件需求與建模》2023-2024學年第二學期期末試卷
- 泉州工程職業技術學院《環境管理與政策》2023-2024學年第二學期期末試卷
- 寧波市施工圖設計常見問題及質量通病
- JGT 486-2015 混凝土用復合摻合料
- 校服授權生產協議合同范本
- 碼頭維修保養投標方案(技術方案)
- 2024年北京市高考數學真題試卷及答案
- 07SG531鋼網架設計圖集
- DL∕T 2025.2-2019 電站閥門檢修導則 第2部分:蝶閥
- DL∕T 1033.6-2014 電力行業詞匯 第6部分:新能源發電
- 7《玩磁鐵》(教學設計)-一年級上冊科學青島版
- 黃腐植酸肥項目投資計劃書
- 小學數學二年級下冊-第七、八單元教材分析
評論
0/150
提交評論