as title.....
thank you......
--
* Origin: ★ 交通大學資訊科學系 BBS ★ <bbs.cis.nctu.edu.tw: 140.113.23.3>
先找出萬年曆的規則啊...
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
潤年應該是 年數%4==0 && 年數%100!=0
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
西元1年1月1日是星期1...其他就簡單啦!
--
[m [1;35m※ 來源:‧輔大美少女夢工場 bbs.secc.fju.edu.tw‧[FROM: me.ntu.edu.tw] [m
別亂講, 稍有曆法常識的人都知道西元一年一月一日是星期六
--
/* You are not expected to understand this */
if (rp->p_flag & SSWAP) {
rp->p_flag =& ~SSWAP;
aretu(u.u_ssav);
}
記得小時寫萬年歷 西元一年一月一日是星期一說.
有兩個可能,
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
--
◎ [1;31m龍 [32m貓 [33m資 [34m訊 [35m天 [36m地 [0m( [1mbbs.mgt.ncu.edu.tw [0m)
◎[ [1;33;46mmaan [0m]來自: 203.68.85.245
> 記得小時寫萬年歷 西元一年一月一日是星期一說.
還有 4 倍數年是閏年
但 100 倍數年不是
但 400 倍數年又是
我非常確定是星期一
其公式如下
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
原來還有這回事啊
謝謝您的更正
: 補充一下:以下是在 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 個月份各輸入一天測試的結果都正確
啊我真該死, 漏打了一個字, 是十一天, 對不起您啦
--
有南威之容,乃可以論其淑媛
有龍泉之利,乃可以議其斷割