前幾天一朋友讓我幫他做一個打印輸出萬年歷的程序,具體要求如下:實 驗 ——打印輸出萬年歷(75%)相關背景知識1.地球繞太陽一周的時間是365天5小時46秒,為了使一年的天數為整數,將一年的天數定為365天,余下的時間積累起來,四年就是23小時15分4秒,將近一天,把這一天加在某年的二月而成29天,該年稱為閏年,其它年稱為平年。但四年加一天又多用了44分56秒,這個數積滿400年為三天。因此400年中只能有97個閏年,所以凡能被400整除,或不能被100整除但能被4整除的年份為閏年。2.可根據一已知日歷進行,輸入任一年的年份后,打印該年的年歷。3.可利用萬年歷的計算公式進行計算:d=a-1+(a-1)/4-(a-1)/100+(a-1)/400+c;其中a為年c為該日期在本年中的天數,d取整數,當d/7余數0時是星期天,余數1時是星期依此類推。實驗基本要求1、可輸入指定年月的月歷,也可瀏覽某年的各月月歷,月份可輸出在月歷之上,或之左;2、盡量整齊美觀示例如下:12--------------------------- sun mon tue wed thu fri sat --------------------------- 11……………………….--------------------------- 由于他要求用TC2.0編寫(我不大會),于是我用Turbo C++ 3.0編寫了這個~:#include <stdio.h>int IsLeapyear(int iYear){return((iYear%4==0 && iYear%100!=0) || iYear%400==0);}int GetDaysofmonth(int iYear,int iMonth){if(iMonth<1 || iMonth>12) return 0;if(iMonth==2) return(IsLeapyear(iYear)?29:28);if(iMonth>=8) return(iMonth%2==0?31:30);else return(iMonth%2==0?30:31);}void DoPrintmonth(int iYear,int iMonth){int d,i,iDays=1;if(iMonth<1 || iMonth>12) return;for(i=1;i<iMonth;++i)iDays+=GetDaysofmonth(iYear,i);d=(iYear-1+(iYear-1)/4-(iYear-1)/100+(iYear-1)/400+iDays)%7;printf("%04d.%02d\n",iYear,iMonth);printf("Sun\tMon\tTue\tWed\tThu\tFri\tSat\n");for(i=0;i<d;++i)printf("\t");for(i=1;i<=GetDaysofmonth(iYear,iMonth);++i)printf((i+d)%7==0?"%d\n":"%d\t",i);}void main(){int x,y,i;printf("Enter the date(yyyy.m):");scanf("%4d.%2d",&x,&y);if(y==0){for(i=1;i<=12;++i){DoPrintmonth(x,i);printf("\n\n");}}elseDoPrintmonth(x,y);}不知道有沒有什么錯誤?請各位高手給我看看~另外~如果有會TC2.0的朋友~能不能幫我用2.0編寫一下這個程序,因為他要得比較急,謝謝大家了。

熱心網友

糾正!!!一年不是365天5小時46秒應該是:365天5小時48分46秒

熱心網友

你自己用Turbo C++ 3.0編寫的這個程序已經就很好了,可以完成全年月歷及某月月歷的打印,就你現在這個程序,我看完全可以在TC2.0下編譯通過,試試吧。

熱心網友

這個也來問,我真是服了你了!!所有的作業可以抄別人的,惟獨計算機的作業一定要自己動手,無論你是哪個專業的,C一定懂一點,會有莫大的好處。