Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

請問若要寫一個萬年曆該如何下手..

0 views
Skip to first unread message

天意

unread,
Aug 1, 1997, 3:00:00 AM8/1/97
to


as title.....
thank you......
--
* Origin: ★ 交通大學資訊科學系 BBS ★ <bbs.cis.nctu.edu.tw: 140.113.23.3>

松風水月

unread,
Aug 1, 1997, 3:00:00 AM8/1/97
to

==> poo...@bbs.cis.nctu.edu.tw (天意) 提到:
: as title.....
: thank you......

先找出萬年曆的規則啊...
1.3.5.7.8.10.12月有31天..
4.6.9.11月有30天..
2月閏年29天..
非閏年28天..
每當西元年數除以4而於數為0時為閏年...
e.g:1996%4=0----閏年
1997%4=1----非閏年

有問題的話再找我啦..

--
◎ [1;31m龍 [32m貓 [33m資 [34m訊 [35m天 [36m地 [0m( [1mbbs.mgt.ncu.edu.tw [0m)
◎[ [1;33;46myrna [0m]來自: 210.71.244.203

todd...@csie.nctu.edu.tw

unread,
Aug 2, 1997, 3:00:00 AM8/2/97
to

==> 在 yrna...@bbs.mgt.ncu.edu.tw (松風水月) 的文章中提到:
: ==> poo...@bbs.cis.nctu.edu.tw (天意) 提到:

: : as title.....
: : thank you......
: 先找出萬年曆的規則啊...
: 1.3.5.7.8.10.12月有31天..
: 4.6.9.11月有30天..
: 2月閏年29天..
: 非閏年28天..
: 每當西元年數除以4而於數為0時為閏年...
: e.g:1996%4=0----閏年
: 1997%4=1----非閏年
: 有問題的話再找我啦..

潤年應該是 年數%4==0 && 年數%100!=0

Summer Of '69

unread,
Aug 3, 1997, 3:00:00 AM8/3/97
to

【 在 todd...@csie.nctu.edu.tw () 的大作中提到: 】

S = x-1 + [(x-1)/4] - [(x-1)/100] + [(x-1)/400] + C
^^^^^^^只要整數部份
x:公元年數
C:從這一年元旦算到這天為止(連這一天也在內)
S:求出S後,再用7除,所得餘數即為星期幾.

提供一個公式 參考一下 :-)

--

I got my first real six-string
Bought it at the five-and-dime
Played it til my fingers bled
It was the [1;33mSummer [0m Of ` [1;31m6 [1;32m9 [0m

[m [1;32m※ 來源:‧中原大學資管森林站 bbs.mis.cycu.edu.tw‧[FROM: 192.192.227.140] [m

Pseudonym

unread,
Aug 5, 1997, 3:00:00 AM8/5/97
to

【 在 yrna...@bbs.mgt.ncu (松風水月) 的大作中提到: 】

: ==> poo...@bbs.cis.nctu.edu.tw (天意) 提到:
: : as title.....
: : thank you......
: 先找出萬年曆的規則啊...
: 1.3.5.7.8.10.12月有31天..
: 4.6.9.11月有30天..
: 2月閏年29天..
: 非閏年28天..
: 每當西元年數除以4而於數為0時為閏年...
: e.g:1996%4=0----閏年
: 1997%4=1----非閏年
: 有問題的話再找我啦..

西元1年1月1日是星期1...其他就簡單啦!

--
[m [1;35m※ 來源:‧輔大美少女夢工場 bbs.secc.fju.edu.tw‧[FROM: me.ntu.edu.tw] [m

Tan Koan-Sin

unread,
Aug 5, 1997, 3:00:00 AM8/5/97
to

Pseudonym (jeffe...@bbs.secc.fju.edu.tw) 提到:
: 西元1年1月1日是星期1...其他就簡單啦!

別亂講, 稍有曆法常識的人都知道西元一年一月一日是星期六

--
/* You are not expected to understand this */

if (rp->p_flag & SSWAP) {
rp->p_flag =& ~SSWAP;
aretu(u.u_ssav);
}

海豚

unread,
Aug 6, 1997, 3:00:00 AM8/6/97
to

==> 在 fre...@csie.nctu.edu.tw (Tan Koan-Sin) 的文章中提到:

> Pseudonym (jeffe...@bbs.secc.fju.edu.tw) 提到:
> : 西元1年1月1日是星期1...其他就簡單啦!
> 別亂講, 稍有曆法常識的人都知道西元一年一月一日是星期六

記得小時寫萬年歷 西元一年一月一日是星期一說.

Tan Koan-Sin

unread,
Aug 6, 1997, 3:00:00 AM8/6/97
to

海豚 (yuans...@bbs.cis.nctu.edu.tw) 提到:
: ==> 在 fre...@csie.nctu.edu.tw (Tan Koan-Sin) 的文章中提到:
: > Pseudonym (jeffe...@bbs.secc.fju.edu.tw) 提到:
: > 別亂講, 稍有曆法常識的人都知道西元一年一月一日是星期六
: 記得小時寫萬年歷 西元一年一月一日是星期一說.

有兩個可能,
1. 你記錯了
2. 你從小學的就是錯的

要知西元一年一月一日是星期幾, 請先查一查羅馬教皇格理高
十三世 (Pope Gregory XIII)在 1582 年在曆法上做了甚麼,
然後再用現在的日期往前推.

--
"When a distinguished but elderly scientist states that something is possible,
he is almost certainly right. When he states that something is impossible, he
is very probably wrong."
-- Arthur C. Clarke

凡人

unread,
Aug 6, 1997, 3:00:00 AM8/6/97
to

==> jeffe...@bbs.secc.fju.edu.tw (Pseudonym) 提到:
: 【 在 yrna...@bbs.mgt.ncu (松風水月) 的大作中提到: 】
: : 先找出萬年曆的規則啊...

: : 1.3.5.7.8.10.12月有31天..
: : 4.6.9.11月有30天..
: : 2月閏年29天..
: : 非閏年28天..
: : 每當西元年數除以4而於數為0時為閏年...
: : e.g:1996%4=0----閏年
: : 1997%4=1----非閏年
: : 有問題的話再找我啦..
: 西元1年1月1日是星期1...其他就簡單啦!
^^^^^^^^^^^^^^^^^^^^^
我懷疑西元元年一月一日是星期一...
我向老師請教過..老師也不敢確定哦...
所以......
要自己再揣揣看...然後最後的答案可加減1看看那一個對..

--
◎ [1;31m龍 [32m貓 [33m資 [34m訊 [35m天 [36m地 [0m( [1mbbs.mgt.ncu.edu.tw [0m)

◎[ [1;33;46mmaan [0m]來自: 203.68.85.245

海豚

unread,
Aug 6, 1997, 3:00:00 AM8/6/97
to

==> 在 yuansen@cis_nctu (海豚) 的文章中提到:

> ==> 在 fre...@csie.nctu.edu.tw (Tan Koan-Sin) 的文章中提到:
> > 別亂講, 稍有曆法常識的人都知道西元一年一月一日是星期六

> 記得小時寫萬年歷 西元一年一月一日是星期一說.

還有 4 倍數年是閏年
但 100 倍數年不是
但 400 倍數年又是

如 風

unread,
Aug 7, 1997, 3:00:00 AM8/7/97
to

※ 引述《fre...@csie.nctu.edu.tw (Tan Koan-Sin)》之銘言:
: Pseudonym (jeffe...@bbs.secc.fju.edu.tw) 提到:
: : 西元1年1月1日是星期1...其他就簡單啦!
: 別亂講, 稍有曆法常識的人都知道西元一年一月一日是星期六

我非常確定是星期一
其公式如下

DAY=[x-1]+[(x-1)/4]-[(x-1)/100]+[(x-1)/400]+S
where x is 西元紀年,s為當年算來的第s天
if day % 7 =0 則為星期日
=1 則為星期一
以下類推
此公試可以推到西元紀年p, p→∞

如西元一年一月一日,則x=1 , s=1,
代入得DAY=1
故為星期一

若各位不信可以隨便拿一天來試
或者各位出生的那一天

以下是我剛學c++時隨便寫的
內容當然不足取
不過結論是對的
各位可以試看看哦:)

//This program is get the weekday of what
//you input the year, month, day
#include <iostream.h>

class what_day
{
private:
int year, month, day;
public:
what_day(int y, int m, int d)
{
year=y;
month=m;
day=d;
}

void read_out(int &yy, int &mm, int &dd)
{
yy=year;
mm=month;
dd=day;
}
}

main()
{
int i, j, year, month, day;
int year1, month1,day1;
char *p;
cout<<"\nPlease input the year, month , day to find what is the day. \n";
cin>>year>>month>>day;
while(month>12 || day >31)
{
cout<<"\nThe month should not more than 12 and the day should not more than 31. ";
cout<<"\nPlease input the year, month , day to find what is the day. \n";
cin>>year>>month>>day;
}
what_day dayy(year,month,day);
dayy.read_out(year1,month1,day1);

if((year1%4) !=0)
j=0;
else if((year1%100) ==0 && (year1%400)!=0)
j=0;
else
j=1;
j=j+28+day1;
switch(month)
{
case 1: j=day1; break;
case 2: j=31+day1;break;
case 3: j=31+j; break;
case 4: j=62+j; break;
case 5: j=92+j; break;
case 6: j=123+j; break;
case 7: j=153+j; break;
case 8: j=184+j; break;
case 9: j=215+j; break;
case 10:j=245+j; break;
case 11:j=276+j; break;
case 12:j=306+j; break;
default :break;
}
i=year1-1;
i=i+i/4-i/100+i/400+j;
i=i % 7;
switch(i)
{
case 1: p="Monday"; break;
case 2: p="Tuesday"; break;
case 3: p="Wednesday"; break;
case 4: p="Thursday"; break;
case 5: p="Friday"; break;
case 6: p="Saturday"; break;
case 0: p="Sunday"; break;
default : break;

}
cout<<"\nThe day of "<<year<<"/"<<month<<"/"<<day<<" is "<<p<<endl;
}

--
※ Origin: 程式設計樂園BBS(CS Zone) -- titan.cc.ntu.edu.tw
◆ From: Landerson.m3.ntu.edu.tw

如 風

unread,
Aug 8, 1997, 3:00:00 AM8/8/97
to

※ 引述《fre...@csie.nctu.edu.tw (Tan Koan-Sin)》之銘言:
: 如 風 (Windli...@titan.cc.ntu.edu.tw) 提到:
: : 我非常確定是星期一

: : 其公式如下
: : DAY=[x-1]+[(x-1)/4]-[(x-1)/100]+[(x-1)/400]+S
: : [deleted]
: 此一公式最多只能上溯至 1582 年, 從西元一年一月一日到今天,
: 其中有十天不見了, 原因是 Pope Gregory XIII 的曆法改革, 汝
^^^^^^^^^^
這裏我不是很了解
若真的十天不見了
而此公式不能顯現出來
那麼經過加10(或減10)的動作
其中應有一項會match您說的星期六
但為何星期一加十天為星期四
星期一減十天為星期五
皆非星期六??

如 風

unread,
Aug 8, 1997, 3:00:00 AM8/8/97
to

※ 引述《and...@csie.nctu.edu.tw (Chu-Hui Lin)》之銘言:
: Tan Koan-Sin (fre...@csie.nctu.edu.tw) 提到:
: : 此一公式最多只能上溯至 1582 年, 從西元一年一月一日到今天,

: : 其中有十天不見了, 原因是 Pope Gregory XIII 的曆法改革, 汝
: : 之論證忽略歷史事實顯屬無效.

原來還有這回事啊
謝謝您的更正

: 補充一下:以下是在 UNIX 下的輸出結果:
: % cal 9 1752
: September 1752
: Sun Mon Tue Wed Thu Fri Sat
: 1 2 14 15 16
: 17 18 19 20 21 22 23
: 24 25 26 27 28 29 30
: Windlike 兄的公式很明顯不太正確。

很奇怪說
我重新檢查
1952/9/1 是星期五
而不是星期二說
且從14以後皆是對的
而且若我當月份有一天出錯的話
當月的每一天都應該出現同樣的shift
(公式最後的那個天數不太可能輸入1、2對應的星期是對的
而14、15、…30卻是錯的)

能否請您再確定一下?

ps.我找1997 12 個月份各輸入一天測試的結果都正確

Tan Koan-Sin

unread,
Aug 8, 1997, 3:00:00 AM8/8/97
to

如 風 (Windli...@titan.cc.ntu.edu.tw) 提到:
: ※ 引述《fre...@csie.nctu.edu.tw (Tan Koan-Sin)》之銘言:
: : 如 風 (Windli...@titan.cc.ntu.edu.tw) 提到:

: : 此一公式最多只能上溯至 1582 年, 從西元一年一月一日到今天,
: : 其中有十天不見了, 原因是 Pope Gregory XIII 的曆法改革, 汝
: ^^^^^^^^^^
: 這裏我不是很了解

啊我真該死, 漏打了一個字, 是十一天, 對不起您啦

--
有南威之容,乃可以論其淑媛
有龍泉之利,乃可以議其斷割

0 new messages