-
這裡,146097 = 365 * 400 + 97。 也就是說,400年的總天數,因為400年97閏。
1461 = 365 * 4 + 1,即 4 年的總天數,這裡表示 4 年的飛躍。
ldate 是總天數,( ldate ) 146097經歷了 400 年。
ldate ) 146097 * 97 ) 400 年中的閏年數,即整數倍。
ldate % 146097 ) 是 400 年內總天數中剩餘的天數減去整數倍。
ldate % 146097 ) 1461 年經歷了幾個閏年。
-
輸入年、月、日三個值,先將年前每個月的月數相加,最後相加日期的天數即可得到結果。
1. 演算法設計
1.輸入年、月、日三個值;
2、為了保證方案的穩健性,可以判斷三個值的合法性,只有合法資料才能操作;
3、每個月累計前的天數;
4、累積當前每日價值;
5. 輸出結果。
二、注意事項:
您可以使用陣列來儲存每個月的天數,並將它們相加成乙個迴圈。 重要的是要注意閏年的判斷。 對於閏年,二月會增加一天。
#include
int main()
十二個月中的天數。
int y,m,d,r=0,i;
scanf("%d%d%d",&y,&m,&d);
if(y%400==0 ||y%4==0 &&y %100 != 0))閏年。
mdays[1] = 29;設定閏年的 2 月值。
if(y<0 ||m<=0 ||m>12 ||d<=0 ||d>mdays[m-1]) 無效。
for(i = 0; i < m-1;I++ 累積到前幾個月。
r+=mdays[i];
r+=d;累加日期值。
printf("%d",r);輸出結果。
return 0;}
-
程式不錯,但錯誤在於以下對閏年的判斷對計算結果不起作用,所以只需更改乙個地方:
倒數第二句話將被計算在內。
if(er==1&&month>2);
更改為:if(month>2)。
sum+=er;能。
首先,加上你想知道的日期號,加上月份程式碼,除以7,可以被星期日整除; 如果不可整除,則餘數為數字,日為星期幾。 如果日期和月份程式碼的總和小於 7,則總和是天數,該天是星期幾。 例如: >>>More