一個C++的萬年歷類_第1頁
一個C++的萬年歷類_第2頁
一個C++的萬年歷類_第3頁
一個C++的萬年歷類_第4頁
一個C++的萬年歷類_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

indoc.in

一個C++的萬年歷類

這篇文章是一位很熱心的作者的力作,程序沒有問題,大家如果有需要

可以閱讀一下,能幫助大家是我們的心愿。

#ifndef_CALENDAR_H

#define_CALENDAR_H

Sinclude<windows.h>

structmyDATE{

intyear;

intmonth;

intday;

boolisRunYue;

);

classcalendar(

public:

calendar(){};

心docin銀豆網(wǎng)

文章內(nèi)容版權(quán)歸原作者所有VICHU.NET

indoc.in

^calendar(){};

LONG!DaysFroml900(myDATEdate);〃date與1900年相差的天數(shù)

UINTlYearDays(UINTy);〃農(nóng)歷y年的總天數(shù)

UINTleapDays(UINTy);〃傳回農(nóng)歷y年閏月的天數(shù)

UINTleapMonth(UINTy);//傳回農(nóng)歷y年閏哪個月1-12,沒閏傳回0

UINTmonthDays(UINTy,UINTm);〃傳回農(nóng)歷y年m月的總天數(shù)

myDATELunar(myDATEdate);〃輸入陽歷日期,返回陰歷日期

char*dayOfWeek(myDATEdate);〃輸入陽歷日期,返回星期幾

char*getLunarString(myDATEdate);//輸入陰歷日期,得到表示農(nóng)歷的字串

UINTsolarDays(UINTy,UINTm);〃傳回國歷y年某m+1月的天數(shù)

private:

charm_slunar[100];〃用于存儲農(nóng)歷信息

staticDWORDlunarInfo[];//

staticUINTsolarmonth[];

staticcharsSolarTerm[];

staticDWORDdTermlnfot];

staticcharsFtv[];

(J^docin銀豆網(wǎng)

文章內(nèi)容版權(quán)歸原作者所有VICHU.NET

indoc.in

):

#endif

ttinclude〃calendar.h〃

Sinclude<stdio.h>

DWORDcalendar::lunarlnfo[]={

0x04bd8,0x04ae0,0x0a570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,0x055d2,

0x04ae0,0x0a5b6,0x0a4d0,0x0d250,0xld255,0x0b540,0x0d6a0,0x0ada2,0x095b0,0x14977,

0x04970,0x0a4b0,0x0b4b5,0x06a50,0x06d40,0xlab54,0x02b60,0x09570,0x052f2,0x04970,

0x06566,0x0d4a0,0x0ea50,0x06e95,0x05ad0,0x02b60,0xl86e3,0x092e0,0xlc8d7,0x0c950,

0x0d4a0,0xld8a6,0x0b550,0x056a0,0xla5b4,0x025d0,0x092d0,0x0d2b2,0x0a950,0x0b557,

0x06ca0,0x0b550,0x15355,0x04da0,0x0a5d0,0x14573,0x052d0,0x0a9a8,0x0e950,0x06aa0,

0x0aea6,0x0ab50,0x04b60,0x0aae4,0x0a570,0x05260,0x0f263,0x0d950,0x05b57,0x056a0,

0x096d0,0x04dd5,0x04ad0,0x0a4d0,0x0d4d4,0x0d250,0x0d558,0x0b540,0x0b5a0,0xl95a6,

0x095b0,0x049b0,0x0a974,0x0a4b0,0x0b27a,0x06a50,0x06d40,0x0af46,0x0ab60,0x09570,

0x04af5,0x04970,0x064b0,0x074a3,0x0ea50,0x06b58,0x055c0,0x0ab60,0x096d5,0x092e0,

0x0c960,0x0d954,0x0d4a0,0x0da50,0x07552,0x056a0,0x0abb7,0x025d0,0x092d0,0x0cab5,

0x0a950,0x0b4a0,0x0baa4,0x0ad50,0x055d9,0x04ba0,0x0a5b0,0x15176,0x052b0,0x0a930,

心docin銀豆網(wǎng)

文章內(nèi)容版權(quán)歸原作者所有VICHU.NET

indoc.in

0x07954,0x06aa0,0x0ad50,0x05b52,0x04b60,0x0a6e6,0x0a4e0,0x0d260,0x0ea65,0x0d530,

0x05aa0,0x076a3,0x096d0,0x04bd7,0x04ad0,0x0a4d0,0xld0b6,0x0d250,0x0d520,0x0dd45,

0x0b5a0,0x056d0,0x055b2,0x049b0,0x0a577,0x0a4b0,0x0aa50,0xlb255,0x06d20,OxOadaO

);

UINTcalendar::solarmonth[]=[31,28,31,30,31,30,31,31,30,31,30,31);

UINTcalendar::lYearDays(UINTy)

(

UINTi,sum=348;

for(i=0x8000;i>0x8;i?=l)

(

sum+=(lunarInfo[y-1900]&i)?1:0;

)

return(sum+leapDays(y));

)

UINTcalendar::leapDays(UINTy)

(

if(leapMonth(y))

(

return(lunarInfo[y-1900]&0x10000)?30:29;

)

心docin銀豆網(wǎng)

文章內(nèi)容版權(quán)歸原作者所有VICHU.NET

indoc.in

else

(

return0;

UINTcalendar::leapMonth(UINTy)

(

returnlunarlnfo[y-1900]&Oxf;

I

UINTcalendar::monthDays(UINTy,UINTm)

(

return(lunarlnfo[y-1900]&(0xl0000>>m))?30:29;

LONGcalendar::!DaysFroml900(myDATEdate)

(

LONGdays;

days=365*date.year+(date.year-1)/4-(date,year-1)/100+(date,year-1)/400-

(365*1900+(1900-1)/4-(1900-1)/100+(1900-1)/400);

心docin銀豆網(wǎng)

文章內(nèi)容版權(quán)歸原作者所有VICHU.NET

indoc.in

for(inti=0;i<date.month-1;i++)

{

days+=solarmonth[i];

)

days+=date.day;

if((date.year%4==0&&date.year%100!=0)||date.year%400==0)

{

if(date.month>2)

(

days++;

)

)

returndays;

myDATEcalendar::Lunar(myDATEdate)

(

LONGoffset;

inti,leap=0,temp=0;

myDATEretdate;

?docin銀豆網(wǎng)

文章內(nèi)容版權(quán)歸原作者所有VICHU.NET

indoc.in

offset=lDaysFroml900(date)-30;

for(i=1900;i<2050&&offset>0;i++)

temp=lYearDays(i);

offset-=temp;

if(offset<0)

offset+=temp;

i—;

retdate.year=i;

leap=leapMonth(i);

boolisLeap=false;

for(i=l;i<13&&offset>0;i++)

?docin銀豆網(wǎng)

文章內(nèi)容版權(quán)歸原作者所有VICHU.NET

indoc.in

if(leap>0&&i==(leap+l)&&isLeap==false)

(

—i;

isLeap=true;

temp=leapDays(retdate.year);

)

else

(

temp=monthDays(retdate.year,i);

}

if(isLeap==true&&i==(leap+l))

(

isLeap=false;

)

offset-=temp;

}

if(offset==0&&leap>0&&i==leap+l)

(

if(isLeap)

?docin銀豆網(wǎng)

文章內(nèi)容版權(quán)歸原作者所有VICHU.NET

indoc.in

isLeap=false;

)

else

(

isLeap=true;

—i;

)

)

if(offset<=0)

{

offset+=temp;

—i:

)

retdate.month=i;

retdate.day=offset;

retdate.isRunYue=isLeap;

returnretdate;

)

char*calendar::getLunarString(myDATEdate)

(

心docin銀豆網(wǎng)

文章內(nèi)容版權(quán)歸原作者所有VICHU.NET

indoc.in

TCHARszNongli[30],szNongliDay[10],szShuXiang[10];

constchar*cTianGan口={"甲","乙","丙","丁","戊","己"庚","辛","壬","癸”};

/*天干名稱*/

constchar*cDiZhi口={"子","丑"寅"卯〃,"辰"巳","午",〃未〃申",〃酉","戌

亥"};/*地支名稱*/

constchar*cShuXiang口={“鼠"牛","虎","兔","龍"蛇","馬","羊"猴","雞","狗

","豬"};/*屬相名稱*/

constchar*cDayName[]={"初一","初二","初三","初四","初五",/*農(nóng)歷日期名

*/

“初六〃,〃初七","初八","初九","初十”,

“十一〃十二"十三",〃十四","十五",

"十六","十七","十八","十九","二十",

“廿一",〃廿二","廿?三",〃廿四","廿五",

“廿六"廿七","廿八〃廿九"三十"};

constchar*cMonNameLJ={*,正,一,二,四,五,八,七,八,九,十

〃,〃十一〃,〃臘〃};

/*一生成農(nóng)歷天干、地支、屬相==>wNongli—*/

intnShuXiang=((date,year-4)%60)%12;

if(nShuXiang<0||nShuXiang>=sizeof(cShuXiang)/sizeof(cShuXiang[0]))

(

returnNULL;

}

wsprintf(szShuXiang,z,%sz,,cShuXiang[nShuXiang]);

心docin銀豆網(wǎng)

文章內(nèi)容版權(quán)歸原作者所有VICHU.NET

indoc.in

intnTianGan=((date,year-4)%60)%10;

if(nTianGan<0||nTianGan>=sizeof(cTianGan)/sizeof(cTianGan[0]))

(

returnNULL;

)

intnDiZhi=((date,year-4)%60)%12;

if(nDiZhi<0||nDiZhi>=sizeof(cDiZhi)/sizeof(cDiZhi[0]))

{

returnNULL;

)

wsprintf(szNongli,/z%s(%s%s)年〃,szShuXiang,cTianGan[nTianGan],cDiZhi[nDiZhi]);

/*一生成農(nóng)歷月、曰==>wNongliDay一*/

if(date,month<0||date,month>=sizeof(cMonName)/sizeof(cMonName[0]))

(

returnNULL;

)

if(date.isRunYue)

{

(J'docin銀豆網(wǎng)

文章內(nèi)容版權(quán)歸原作者所有VICHU.NET

indoc.in

wsprintf(szNongliDay,“閏%s",cMonName[date,month]);

)

else

(

strcpy(szNongliDay,cMonName[date,month]);

)

strcat(szNongliDay,〃月〃);

if(date,day<0|Idate,day>=sizeof(cDayName)/sizeof(cDayName[0]))

{

returnNULL;

)

strcat(szNongliDay,cDayName[date,day])

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論