c++語言程式 ~~~~ 可以幫我解麼

2007-10-12 5:58 am
題目:
我們現行所用的曆法起源可以追溯到西元前46年,當時羅馬帝國凱薩大帝(Gaius Julius Caesar)聘請天文學家制訂新曆法,規定一年12個月,單月31天,雙月30天,共366天,但由於精確來說一年為365.2422天,所以從二月扣去一天,使二月變成29天,但這麼一來又比一年真正的時間短,因此又決定每四年加一天為閏年來補這個誤差。凱撒出生的七月為大月,以自己的名字Julius來命名;而繼任的奧古斯都(Augustus)為了顯揚自己,也將八月改名為Augustus,還將他出生的八月改為大月,可是原本八月是30天變成31天,平白多了一天,只好從二月再挪一天過來,於是成了現今平年二月只有28天的版本。

也由於一年精確算來是365.2422天,為了修正小數點後的誤差,除了每四年為閏年之外,每百年不閏年,每四百年則又閏年,每四千年則不閏(口訣:逢四閏,逢百不閏,逢四百閏,逢四千不閏)。
例如:
  1992、1996、2004年為4的倍數,閏年;
  1700、1800、1900年為100的倍數,不是閏年;
  1600、2000、2400年為400的倍數,閏年;
  4000、8000、12000年為4000的倍數,不是閏年。

請使用C/C++語言設計一程式,接受使用者連續輸入年份,判斷是否為閏年,當輸入為負值時,程式結束;輸入值在0000~9999間能正確運作即符合要求。
可以下列資料測試結果是否正確:
1899(平)、1900(平)、1999(平)、2000(閏)、2400(閏)、4000(平)
更新1:

開頭是 #include<stdio.h> int main() {............ .......... . 之類ㄉ 我是新手=ˇ= 不要寫太難

回答 (3)

2007-10-12 10:49 am
✔ 最佳答案
#include <stdio.h>
#include<stdlib.h>

int main() {
int y;
do {
printf("請輸入年份(0~9999),輸入負值則程式結束:");
scanf("%d", &y);
if( ( y % 4 == 0 && !( y % 100 == 0 ) ) || ( y % 400 == 0 && !( y % 4000 == 0) ) )
printf("%d(閏)\n", y);
else
printf("%d(平)\n", y);
}while( y >= 0 && y <= 9999);
system("PAUSE");
return(0);
}
參考: 個人的程式設計經驗
2007-10-12 7:16 am
噗~~~~會ㄇ=ˇ=
2007-10-12 7:05 am
=_=!!! 萬年曆


收錄日期: 2021-04-28 23:08:21
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20071011000015KK09397

檢視 Wayback Machine 備份