C語言解決漁夫打魚曬網問題

2021-09-24 11:54:49 字數 1531 閱讀 5824

如果乙個漁夫從 2015 年 1 月 1 日開始每三天打一次漁,兩天曬一次網,程式設計實現當輸入 2015 1 月 1 日以後的任意一天,輸出該漁夫是在打漁還是在曬網。

實現過程:

(1) 自定義函式 leap(),用來判斷輸入的年份是否是閏年。

(2) 自定義函式 number(),用來計算輸入日期距 20152015201520152015 年 1 月 1 日共有多少天。

(3) main() 函式作為程式的入口函式,在 main() 函式中呼叫上面兩個函式。程式**如下:

#include int leap(int a) /*自定義函式leap()用來指定輸入的年份是否為閏年*/

int number(int year,int month,int day) /*自定義函式 number() 計算輸入日期距2023年1月1日共有多少天*/

; /*陣列a存放平年每月的天數*/

int b[12]=; /*陣列b存放閏年每月的天數*/

if(leap(year)==1) /*判斷是否為閏年*/

for(i=0;i0) /*餘數是1或2或3時說明在打漁,否則在曬網*/

printf("%d:%d:%d 打魚\n",year,month,day);

else

printf("%d:%d:%d 曬網\n",year,month,day);

return 0;

}

執行結果:

linuxidc@linuxidc:~/linuxidc.com$ ./linuxidc.com

請輸入年月日

2019 5 19

2019:5:19 曬網

linuxidc@linuxidc:~/linuxidc.com$ ./linuxidc.com

請輸入年月日

2019 5 18

2019:5:18 打魚

linuxidc@linuxidc:~/linuxidc.com$ ./linuxidc.com

請輸入年月日

2019 5 20

2019:5:20 曬網

技術要點:

本例項主要有以下兩個技術要點:

(1) 判斷輸入的年份(2015 年以後包括 2015 年)是否為閏年,這裡自定義函式 leap() 來進行判斷。該函式的核心內容就是閏年的判斷條件即能被 4 整除但不能被 100 整除,或能被 400 整除。

(2) 求輸入日期距 2015 年 1 月 1 日有多少天。首先判斷 2015 年距輸入的年份有多少年,這其中有多少年是閏年就將 sum 加多少個 366,有多少年是平年便將 sum 加上多少個 365。

其次要將 12 個月每月的天數存到陣列中,因為閏年 2 月份的天數有別於平年,故採用兩個陣列 a 和 b 分別儲存。若輸入年份是平年,月份為 m 時就在前面累加日期的基礎上繼續累加儲存著平年每月天數的陣列的前 m-1 個元素,將累加結果加上輸入的日期便求出了最終結果。閏年的演算法類似。

c解決打魚曬網問題

題目 漁夫打漁,三天打漁兩天曬網,從1990年1 月1日從業,給出年月日,這天,是打漁還是曬網。思路 當你看到這道題,也許也是沒有思路,所以先慢慢分析 目標 1.解決那天打魚還是曬網問題,你首先得知道這一年過了多少天,這樣在就 5,就簡單。2.你解決一年過了多少天,就得先判斷這一年 過了多少天,再加...

打魚曬網問題

include using namespace std 題目 如果乙個漁夫從2000年1月1日開始每三天打一次魚,兩天曬一次網,程式設計實現檔輸入2000年1月1日以後的任意一天,輸出該漁夫是在打魚還是在曬網 分析根據題意假設魚的總數是x,那麼第一次每人分到的魚的數量可用 x一1 巧表示,餘下的魚數...

打魚還是曬網C

中國有句俗語叫 三天打魚兩天曬網 某人從1990年1月1日起開始 三天打魚兩天曬網 問這個人在以後的某一天中是 打魚 還是 曬網 問題分析與演算法設計 根據題意可以將解題過程分為三步 1 計算從1990年1月1日開始至指定日期共有多少天 2 由於 打魚 和 曬網 的週期為5天,所以將計算出的天數用5...