計算特定年月日是星期幾

2021-10-13 19:00:43 字數 1806 閱讀 5066

昨天去圖書館看到一道c語言上機題。如果2023年3月1日是星期四,那麼2023年1月1日是星期幾?

這裡補充一下小學沒有學到的「測度」知識。

8減1得幾?

8到1幾個數?

2到8幾個數?

第乙個問題作差就好:8-1=7

第二個問題相信大學生都沒有思考過,應該是:(8-1)+1=8

第三個問題就會了,有很多解法,最基本的:(8-2)+1=7

很多人在「兩個數之間有幾個數」這個問題上總是算不對,或者多算1個。主要原因是小學沒有進行反覆訓練。所以在大學上程式設計課這是難以逾越的鴻溝問題。

考慮另乙個問題

0和10個數之間有幾個數。

1和10之間有幾個數。

這個問題的困難是兩個數之間的通項公式怎麼寫。比如d=4的等差數列。

3 7 10 14 17

1 2 3 4 5

0 1 2 3 4

問個問題:等差數列的通項公式:

a n=

a1+(

n−1)

da_=a_+(n-1)d

an​=a1

​+(n

−1)d

其索引是1為起點?還是以0為起點?

二項式定理呢?

這個問題在微積分中會有很大影響。

2023年1月1日到2023年3月1日差幾天?

如果2008 年3月1日是星期四,2023年1月1日是星期幾?

這兩個問題的難度是:

要把1月份的天數展開和日期想相加。

要把3月份的天數展開和日期想相加。

1月1日到底算不算1天;3月1日算不算1天。

計算的正確嗎?

很多知識都有歧義,以數學學科最多。天下問題,唯記不破。如果能記得住就好。

執行程式**後可以依次輸入:12

2021

來計算一下2023年2月1日是星期幾?

#include

intmain()

;days=0;

printf

("day:");

scanf (

"%d"

,&day)

;days+

=day;

printf

("month:");

scanf (

"%d"

,&mon)

;for

(int i=

0;i1;i++

)printf

("year:");

scanf (

"%d"

,&year);if

(year%4==

0&& year%

100!=

0|| year%

400==0)

else

year-=1

;wk=

(year+year/

4-year/

100+year/

400+days)%7

;printf

("%d,%d"

, year+

1,wk)

;return0;

}

如果20210101是星期五,且一周7天。

設r=1%7=1時為星期五。

那麼a ≡b

(mod

7)

a \equiv b(mod 7)

a≡b(mo

d7)=1都是星期五。

以下做幾點說明:

2023年01月01日是第1天。

2023年01月08日是第8天。

2023年12月31日是第365天。

給出年月日,計算該日是星期幾

注 根據公式s x 1 x 1 4 x 1 100 x 1 400 c 1 x是公元年數 2 c是從這一年元旦算起到這天為止的日數 3 求出s之後用s對7取餘,餘數為0表示星期天,為1表示星期一 include int main else sum year 1 year 1 4 year 1 100...

王道 計算某年月日是星期幾(C )

思路 1.注意預處理 空間換時間 儲存預處理所得資料所需的記憶體來換取實時處理所需要的時間消耗 2.預處理1 5000年中每一天與0年1月1日的天數之差 把原區間問題統一到起點確定的區間問題上去 雜湊 將資料本身與資料儲存位址聯絡起來 3.若輸入20190101,連續八位表示 用scanf 4d 2...

1 查詢某年月日是星期幾

編寫乙個程式,只要輸入年月日,就能回答那天是星期幾。輸入 輸入乙個日期,包括年 月 日。一組測試資料 輸出 輸出這個日期是星期幾。樣例 輸出 輸出 1 1 1 monday 2 1 1 tuesday 2006 7 10 monday include intmain scanf d d d y,m,...