日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
網(wǎng)上一個(gè)非常流行的計(jì)算農(nóng)歷的算法
網(wǎng)上一個(gè)非常流行的計(jì)算農(nóng)歷的算法
 更新時(shí)間:2008-7-26 20:02:04  點(diǎn)擊數(shù):2
【字體: 字體顏色

#include

int LunarCalendar(int year,int *pmonth,int *pday)

{

    const int MonthAdd[12] = {0,31,59,90,120,151,181,212,243,273,304,334};

    const int LunarCalendarTable[100] ={

                                2635,333387,1701,1748,267701,694,2391,133423,1175,396438

                            ,3402,3749,331177,1453,694,201326,2350,465197,3221,3402

                            ,400202,2901,1386,267611,605,2349,137515,2709,464533,1738

                            ,2901,330421,1242,2651,199255,1323,529706,3733,1706,398762

                            ,2741,1206,267438,2647,1318,204070,3477,461653,1386,2413

                            ,330077,1197,2637,268877,3365,531109,2900,2922,398042,2395

                            ,1179,267415,2635,661067,1701,1748,398772,2742,2391,330031

                            ,1175,1611,200010,3749,527717,1452,2742,332397,2350,3222

                            ,268949,3402,3493,133973,1386,464219,605,2349,334123,2709

                            ,2890,267946,2773,592565,1210,2651,395863,1323,2707,265877};

    int DateCount,loop;

    int i,j,n,Bit;

    int month,day;

    month = *pmonth;

    day = *pday;

    //計(jì)算從1921年2月8日(正月初一)到現(xiàn)在所經(jīng)歷的天數(shù)。

    DateCount = (year - 1921) * 365 + (year - 1921) / 4 + MonthAdd[month - 1] - 38 + day;

//如今年陽(yáng)歷是閏年(2月有29天),而且當(dāng)前月份大于2月,經(jīng)歷的總天數(shù)加1。

    if((!(year % 4)) && (month > 2))

       DateCount = DateCount + 1;

    //下面是查表的算法。

    loop = 1;

    j = 0;

    while(loop)

    {

       if(LunarCalendarTable[j] < 4095)

           i = 11;

       else

           i = 12;

       n = i;

       while(n>=0)

       {

           Bit = LunarCalendarTable[j];

           Bit = (Bit >> n) & 1;

           if (DateCount <= (29 + Bit))

           {

              loop = 0;

              break;

           }

           DateCount -= 29 + Bit;

           n--;

       }

       if(!loop)

           break;

       j++;

    }

    year = 1921 + j;

    month = i - n + 1;

    day = DateCount;

    if (i == 12)

    {

       if (month == LunarCalendarTable[j] / 65536 + 1)

       {

           month = 1 - month;

       }

       else if (month > LunarCalendarTable[j] / 65536 + 1)

           month--;

    }

    *pmonth = month;

    *pday = day;

    return 1;

}

main()

{

    const char *ChDay[] = {"*","初一","初二","初三","初四","初五",

                          "初六","初七","初八","初九","初十",

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

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

                          "廿一","廿二","廿三","廿四","廿五",

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

    const char *ChMonth[] = {"*","正","二","三","四","五","六","七","八","九","十","十一","臘"};

    struct tm * Local;

    long t;

    int year,month,day;

    char str[13] = "";

#if 0   

    t = time(NULL);

    Local = localtime(&t);

    year = Local->tm_year + 1900;

    month = Local->tm_mon + 1;

    day = Local-> tm_mday;

#else

    year = 2006;

    month = 1;

    day = 1;

#endif

    printf("%d年%d月%d日\(chéng)t",year,month,day);

    LunarCalendar(year,&month,&day);

    if(month < 0)

    {

       strcat(str,"閏");

       strcat(str,ChMonth[-month]);

    }

    else

       strcat(str,ChMonth[month]);

    strcat(str,"月");

    strcat(str,ChDay[day]);

    puts(str);

    system("pause");

}
 
節(jié)氣的計(jì)算
  先給節(jié)氣進(jìn)行編號(hào),從近日點(diǎn)開始的第一個(gè)節(jié)氣編為0,編號(hào)如下及其相應(yīng)的月份如下:

0 小寒 臘月


6 清明 三月


12 小暑 六月


18 寒露 九月

1 大寒 臘月


7 谷雨 三月


13 大暑 六月


19 霜降 九月

2 立春 正月


8 立夏 四月


14 立秋 七月


20 立冬 十月

3 雨水 正月


9 小滿 四月


15 處暑 七月


21 小雪 十月

4 驚蟄 二月


10 芒種 五月


16 白露 八月


22 大雪 冬月

5 春分 二月


11 夏至 五月


17 秋分 八月


23 冬至 冬月

把當(dāng)天和1900年1月0日(星期日)的差稱為積日,那么第y年(1900年算第0年)第x 個(gè)節(jié)氣的積日是
F = 365.242 * y + 6.2 + 15.22 * x - 1.9 * sin(0.262 * x)
這個(gè)公式的誤差在0.05天左右。
二、朔日的計(jì)算
  從1900年開始的第m個(gè)朔日的公式是
M = 1.6 + 29.5306 * m + 0.4 * sin(1 - 0.45058 * m)
這個(gè)公式的誤差在0.2天左右。
三、年份的確定
  1864年1月0日是農(nóng)歷癸亥年,所以用當(dāng)年減去1864,用10除得的余數(shù)作為年份天干的,用12除得的余數(shù)作為年份的地支,數(shù)字對(duì)應(yīng)的天。
  • 上一篇: 基于89C51計(jì)算機(jī)鎖定加密鍵盤設(shè)計(jì)
  • 下一篇: 多功能AT89C2051倒計(jì)時(shí)器
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1