#include <stdio.h>
int main()
{
int year,day,leapyear=0,i,whichday;
scanf("%d",&year);
for(i=1900;i<=year;i++)
{
if((i%400==0)||((i%100!=0)&&(i%4==0)))leapyear+=1;/*找出1900年到目標年之間有幾個閏年*/
}
day=(((year-1899)*365+leapyear)-(31+30+31+31+30+31+30+31))%7;/*計算從1900年1月1日(星期一)到目標年4月30日共有多少天,并且目標年4月30日為星期幾*/
if(day==7)whichday=14;
else whichday=14-day;
printf("%d",whichday);
return 0;
}
有以下幾個問題:
1.C語言中星期求解的問題一般都是默認已知1900年1月1日為星期一嗎?
2.為什么取余運算答案可以為7
if(day==7)whichday=14;
else whichday=14-day;
uj5u.com熱心網友回復:
我個人理解應該是輸出第幾天,比如具體的100多天,而不是輸出星期幾?這樣的話就不用管星期幾了,直接算閏年計算出5月之前的天數再加上14就了uj5u.com熱心網友回復:
對7取余不可能位7,有可能為0~6之間的一個值;一般會固定一個日期的星期,這樣有一個參考。某年某月某日是星期幾是一個相對時間,那么就要有一個參照;比如1900年1月1日是星期一
uj5u.com熱心網友回復:
所以是代碼里有錯嗎 但是運行上又沒什么錯uj5u.com熱心網友回復:
沒錯,只是d == 7的判斷不會成立,所以會一直執行else的部分
uj5u.com熱心網友回復:
嚶嚶嚶有木有人可以解釋一下為啥是-1899不是1900!轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/195499.html
標籤:C語言
