漁夫打魚曬網問題
如果乙個漁夫從 2011 年 1 月 1 日開始每三天打一次漁,兩天曬一次網,程式設計實現當輸入 2023年1 月 1 日以後的任意一天,輸出該漁夫是在打漁還是在曬網。
(1)、 自定義函式 leap(),用來判斷輸入的年份是否是閏年。
(2) 、自定義函式 number(),用來計算輸入日期距 2011 年 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 打魚",year,month,day); else printf("%d:%d:%d 曬網",year,month,day); return 0;}
執行結果:
請輸入年月日2011 1 42011:1:4 曬網
本例項主要有以下兩個技術要點:
(1) 、判斷輸入的年份(2011 年以後包括 2011 年)是否為閏年,這裡自定義函式 leap() 來進行判斷。該函式的核心內容就是閏年的判斷條件即能被 4 整除但不能被 100 整除,或能被 400 整除。(2)、 求輸入日期距 2011 年 1 月 1 日有多少天。首先判斷 2011 年距輸入的年份有多少年,這其中有多少年是閏年就將 sum 加多少個 366,有多少年是平年便將 sum 加上多少個 365。
其次要將 12 個月每月的天數存到陣列中,因為閏年 2 月份的天數有別於平年,故採用兩個陣列 a 和 b 分別儲存。若輸入年份是平年,月份為 m 時就在前面累加日期的基礎上繼續累加儲存著平年每月天數的陣列的前 m-1 個元素,將累加結果加上輸入的日期便求出了最終結果。閏年的演算法類似。
C語言 判斷閏年的方法
閏年的定義 閏年是公曆中的名詞。閏年分為普通閏年和世紀閏年。普通閏年 公曆年份是4的倍數的,一般是閏年 如2004年就是閏年 世紀閏年 公曆年份是整百數的,必須是400的倍數才是閏年 如1900年不是世紀閏年,2000年是世紀閏年 程式設計要點 1 能被4整除不能被100整除 2 能被400整除 如...
C語言 判斷是否是閏年
例10 c語言實現判斷某一年是否是閏年。解題思路 首先要想出如果這一年是閏年的條件,閏年是公曆中的名詞,分為普通閏年和世紀閏年,普通閏年 公曆年份是4的倍數的,且不是100的倍數,為普通閏年 世紀閏年 公曆年份是整百數的,必須是400的倍數才是世紀閏年。源 演示 include 標頭檔案 int m...
C語言判斷1000 2000之間的閏年。
經過一上午的學習,在這安靜美好的午休時間,又跑來給寶寶們更新 啦。由於我是新手,所以前期寫的 會簡單些,我的目的是幫助到和我一樣的小菜鳥們,也同時希望能和你們一起學習進步,如果有大佬能給我提一些優化 的建議那就更好啦,好了,廢話不多說了,附上今天的 今天能做完的事,絕不拖到明天 蘇步青 define...