「三天打魚,兩天曬網」俗語的程式設計(c )

2021-08-26 05:37:07 字數 1822 閱讀 6427

題目描述:中國有句俗語叫「三天打魚兩天曬網」。某人從2023年1月1日起開始「三天打魚兩天曬網」,問這個人在以後的某一天中是「打魚」還是「曬網」。(c++程式設計)

針對這個問題,首先進行程式設計思路分析。

根據題意可以分三步來分析:

1. 計算從2023年1月1日開始至指定日期共有多少天;

2. 由於「打魚」和「曬網」的週期為5天,所以將計算出的天數用5去除;

3. 根據餘數判斷他是在「打魚」還是在「曬網」;

若餘數為1,2,3,則他是在「打魚」

否則 是在「曬網」

這三步中,關鍵是第一步。求從2023年1月1日至指定日期有多少天,要判斷經歷年份中是否有閏年,判斷每一年中是否有二月,閏年二月為29天,平年為28天。

閏年應滿足以下兩種情況:

1)年份能被4除盡且不能被100除盡。

2)年份能被400整除。

滿足兩種情況的任意一種都可判斷為閏年。

c語言中對或運算進行處理時,只有左邊條件為假時才會繼續判斷右邊條件,所以在寫判斷語句時將整除400的條件放在左邊可以提高運算效率。

c語言中判斷能否整除可以使用求餘運算(即求模),即判斷整除後餘數是否為0。

程式完成的功能:

1. 基本的輸入輸出,即輸入年月日,輸出「打魚」還是「曬網」的結果。

2. 輸入資料的正確性驗證,即驗證輸入日期的格式是否正確。

3. 使用檔案進行資料測試,如將日期 20100101 20111214 等資料儲存在in.txt檔案中,程式讀入in.dat檔案進行判定,並將結果輸出至out.txt檔案。

源**:

#include

#include

#include

using

namespace

std;

class my;

my::my () //建構函式初始化;}

int my::judge() //判斷平閏年函式

else

//為平年

}for(int i=1;i1]; //加當前月份的天數

/* 如果是二月,則判斷年份是閏年還是平年,閏年二月天數加1*/

if(month==2&&(year%400==0)||(year%4==0&&year%100!=0))

}sum+=day; //總天數

days=sum%5;//除5取餘

sum=0;//初始化

return days;

}int my::key()

else

if(month<=0||month>12) //判斷月

else

if(day<=0||day>m_day[month-1]) //判斷日

judge();

if (days>0&&days<4)//餘數1,2,3

int my::file() //定義檔案讀取與寫入函式

cout

/測試是否能成功讀取檔案內容

int y=judge(); //將餘數值賦給y

if (y>0&&y<4)

else

f2.close(); //關閉f2檔案

三天打魚,兩天曬網。

判斷某人從2010年1月1日起開始 三天打魚,兩天曬網 到之後某一天是在打漁還是曬網 設計日期 2019.3.1 include define year 2010 void main 用陣列表示每月的天數 printf 請輸入所要判斷的時間 n scanf 4d 2d 2d year,month,d...

三天打魚兩天曬網(c )

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

三天打魚兩天曬網C

中國有句俗語叫 三天打魚兩天曬網 某人從2010年1月1日起開始 三天打魚兩天曬網 問這個人在以後的某一天中是 打魚 還是 曬網 使用檔案進行資料測試。如將日期 20100101 20111214 等資料儲存在in.txt檔案中,程式讀入in.dat檔案進行判定,並將結果輸出至out.txt檔案。i...