用C C 解決三天打魚兩天曬網問題

2021-09-11 17:51:05 字數 2495 閱讀 4049

某人從2023年1月1日起開始「三天打魚兩天曬網」,問這個人在以後的某一天中是「打魚」還是「曬 網」。

基本要求:

1.程式風格良好(使用自定義注釋模板),提供友好的輸入輸出。

提高要求:

1.輸入資料的正確性驗證。

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

計算指定日期與2023年1月1日相距的天數,記為r,再用r%5來得到此人正在打魚還是篩網。

(1),r的計算:總的思路:r=年+月+日,即指定日期距2023年1月1日經過的年,月,日,具體演算法見詳細**;

(2),判斷日期是否合法;

(3),判斷正在打魚還是篩網:w=r%5;若w=1,2,3時,正在打魚;

(4),測試日期寫在in.txt中,將結果儲存在out.txt中。

#include

#include

//檔案操作

using namespace std;

struct date //定義乙個結構體來儲存日期

d;int

judge

(int year)

//判斷是否是閏年,是閏年返回1,否則返回0

intremainder

(int year,

int month,

int day)

//計算據2023年1月1日共多少天,賦值給r

;//閏年

int commonyear[12]

=;//平年

for(

int i = year; i !=

2010

; i--)if

(judge

(i)==1)

r +=366

;else r +

=365;if

(judge

(year)==1

)for

(int j =

0; j <

(month -1)

; j++

) r = r + leapyear[j]

;else

for(

int k =

0; k <

(month -1)

; k++

) r = r + commonyear[k]

; r = r + day;

return

(r);

}int

islegal

(int year,

int month,

int day)

//判斷日期是否合法

return1;

}int

main()

for(

int i =

0; i <

5; i++

) file.

close()

;}ifstream infile

("in.txt"

, ios:

:out)

;//從檔案中讀取資料

ofstream ofile

("out.txt"

, ios:

;//開啟out.txt,將結果儲存在該檔案中if(

#七、總結:

在程式設計的過程中,練習了c++對日期的處理,同時複習了檔案操作。

補充:2019/11/15

判斷乙個日期是否合法

#define _crt_secure_no_warnings

#include

#include

// 判斷日期是否合法

intmain()

else

system

("pause");

return0;

}

三天打魚,兩天曬網。

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

三天打魚兩天曬網問題

中國有句俗語叫 三天打魚兩天曬網 某人從2010年1月1日起開始 三天打魚兩天曬網 問這個人在以後的某一天是 打魚 還是 曬網 1 輸入乙個年月日,判斷輸入的年月日是否符合實際。如果輸入符合要求,計算從2010年1月1日到所輸入日期的總天數。總天數的演算法 首先計算從2010到所輸入年份的所有年的天...

用C 解決「三天打魚兩天曬網」問題

中國有句俗語叫 三天打魚兩天曬網 某人從2010年1月1日起開始 三天打魚兩天曬網 問這個人在以後的某一天中是 打魚 還是 曬網 用c或c 語言實現程式解決問題。基本要求 1.程式風格良好 使用自定義注釋模板 提供友好的輸入輸出。提高要求 1.輸入資料的正確性驗證。2.使用檔案進行資料測試。如將日期...