1樓:匿名使用者
我有哦!
演算法是程式設計師雜誌01年的方法,查你郵箱吧
2樓:匿名使用者
我認為如下:(知識思路)
先把固定一天的年月日星期放進去(一個物件)構造然後設計 一個計算閏年的函式
一個計算某天至這個固定天的間隔多少天算出來,然後再除以7,餘下來的再用一個函式判斷.
3樓:匿名使用者
#include
#include
#include
#include
#include
#include "wnl.h"
#define week_startx 4
#define week_starty 4
#define yl_date_startx week_startx
#define yl_date_starty week_starty+2
#define nl_date_startx week_startx
#define nl_date_starty week_starty+3
void main()
根據2023年星期的月份**及星期與月份年份的關係計算
2023年星期的月份**
一月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月
1 4 4 0 2 5 0 3 6 1 4 6
從設定**中找規律
平年規律:
有數月**相同:1和10月,2、3和11月,4和7月,9和12月相同,無相同的只有5、6、8月
**變化規律:**相同月份,**數逐年增加
閏年規律(2004為閏年):
有數月**相同:1-4-7,2-8,3-11,9-12
**變化規律:從2月閏日之後有變化,從三月起**+2
int getweek(mydate structyldate)
;int irunniannum, ipingniannum,icalweek;
/*計算平年和閏年數
注意運算:1901-2023年的間隔為0=1901-1900-1;1902-2023年的間隔為1=1902-1900-1*/
irunniannum = (structyldate.iyear - 1900 - 1) / 4;
ipingniannum = structyldate.iyear - 1900 - irunniannum;
icalweek = u_1900_weekcode[structyldate.imonth] + irunniannum * 2 + ipingniannum;
/*如果為閏年,從2月閏日之後有變化,從三月起**+2*/
if (structyldate.imonth > 2)
}icalweek %=7;
return icalweek;
}void printfweekname()
;int i;
printf("\n");
for(i=0;i<7;i++)
printf("\n");
printf("\n");
}void printfday(int istartweekday,mydate structyldate,
mydate structnldate)
}for(i=1;i<42;i++)
printf("%s",nl_monthname[structnldate.imonth]);
if(structnldate.imonthdaynum == 30)
else
}else
structnldate.iday++;
if(structnldate.iday>structnldate.imonthdaynum)
/*x向的偏移量增加*/
offsetx+=10;
if( (i % 7) == 0 )
if(idaynum>imonthday)
}else}}
void getofnonglidate(mydate *structnldate,mydate structyldate)
,tmp1[2]=,runyue[2]=;
int sepdaynum;/*所要計算的日期距本年新年的天數*/
int runyue=0,ifirstflag=1,i;
structyuandandate.iyear=structyldate.iyear;
inityear:
/*得到新年(農曆正月初一)所對應的陽曆日期*/
memset(tmp,0,2);
memcpy(tmp,dalist[structyuandandate.iyear-1900]+14,2);
structyuandandate.imonth = atoi(tmp);
memset(tmp,0,2);
memcpy(tmp,dalist[structyuandandate.iyear-1900]+16,2);
structyuandandate.iday = atoi(tmp);
/*如果要換算陽曆的日期比當年的新年(農曆正月初一)的日期早,則應該根據上一年的資料來
計算農曆的日期,否則以當年的資料為準即可*/
if( structyldate.imonth <= structyuandandate.imonth && ifirstflag ==1 )
else
if( atoi(tmp) == 1)
else
}int getsepdaynum(mydate structyldate0 ,
mydate structyldate1 )
else
}else}}
}/*需要分3種情況進行分析:
1.要求的日期與春節不同年
2.要求的日期與春節同年,不同月
3.要求的日期與春節同年,同月,不同日
*/if(structyldate1.iyear>structyldate0.iyear)/*不同年*/
/*iyear1年足月的天數*/
for(i=1;i 2)}}
else
else/*同年,不同月*/
else
}else
else
structmonthinfo->iday = premonthinfo.iday;
memcpy(tmp,dalist[structmonthinfo->iyear-1900]+structmonthinfo->imonth-1,1);
if(atoi(tmp) == 1)
else
structmonthinfo->imonthisrun = 0;}}
標頭檔案檔案為:
/*天干,地支,屬象,農曆月份名,農曆日期名,陽曆每月的天數*/
unsigned char tianganname[3]=;
unsigned char dizhiname[3]=;
unsigned char shuxingname[3]=;
unsigned char nl_monthname[7]=;
unsigned char nl_dayname[5]=;
int yl_monthdays=;
1900 to 2023年的農曆資料
日期資料定義方法如下
前12個位元組代表1-12月為大月或是小月,1為大月30天,0為小月29天,
第13位為閏月的情況,1為大月30天,0為小月29天,第14位為閏月的月
份,如果不是閏月為0,否則給出月份,10、11、12分別用a、b、c來表
示,即使用16進位制。最後4位為當年家農曆新年-即農曆1月1日所在公曆
的日期,如0131代表1月31日。
unsigned char dalist[18] =;
typedef struct _tagmydate
mydate;
void getofnonglidate(mydate *nldate,mydate yldate);
void printfday(int istartweekday,mydate structyldate,
mydate structnldate);
int getweek(mydate structyldate);
void printfweekname();
int getsepdaynum(mydate structyldate0 ,
mydate structyldate1 );
void getmonthinfo(mydate *structmonthinfo,mydate premonthinfo);
4樓:匿名使用者
不用這麼複雜,有現成的公式可套.
你只要用c++把這個公式表述出來就好了
這麼簡單的程式不用幫寫吧
英語高手請進解答一道題
選項 b.jack s mother s 解析 1.a friend of one s 稱作雙重所有格。1 第一重 由名詞所有格 one s 充當,為了避免重複 one s 後省略了前面提及的 friends,意思是 xx 的 所有朋友 2 第二重 由介詞短語 of 充當所有格,表示 xx 所有朋友...
一道數學題,數學高手請進
底面積是6.28 2 3.14平方釐米 底面半徑是1釐米 高是80 2 1 2 20釐米 表面積是 3.14 1 1 2 3.14 1 2 20 6.28 125.6 131.88平方釐米 我給你一題類似的題目,這類題不用求出底面半徑,只要求出底面半徑平方就行。具體解得方法希望通過下面這題,你能理解...
兩道題,一道數學題,一道聰明屋。。急 會的進
1 因為跑道是環形的,內圈的圓半徑小周長小,越大外圈圓周長越大,所以要保證跑的距離相等,運動員出發位置必須不一樣 2 因為閉上眼睛走路的時候,左腳和右腳落地點會有一個偏差,這個偏差會隨著距離的增加形成一個越來越明顯的弧度,類似一個有圓心的圓,最終會回到原點 第二問,個人認為被蒙上眼之後失去了視力的引...