【問題描述】
中國有句俗語叫「三天打魚兩天曬網」。某人從2023年1月1日起開始「三天打魚兩天曬網」,問這個人在以後的某一天中是「打魚」還是「曬網」。用c或c++語言實現程式解決問題。
基本要求:1.程式風格良好(使用自定義注釋模板),提供友好的輸入輸出。
提高要求:1.輸入資料的正確性驗證。
2.使用檔案進行資料測試。如將日期 20100101 20111214 等資料儲存在in.txt檔案中,程式讀入in.dat檔案進行判定,並將結果輸出至out.txt檔案。
【問題分析】
)計算從2023年1月1日開始至指定日期共有多少天;
2)由於「打魚」和「曬網」的週期為5天,所以將計算出的天數用5去除取餘;
3)根據餘數判斷他是在「打魚」還是在「曬網」;
若 餘數為1,2,3,則他是在「打魚」
否則 是在「曬網」 。
【程式設計】
建立乙個date類,包含年月日。建立乙個distance函式用於計算指定日期到2023年1月1日的天數。建立乙個乙個方法meath用於判斷打魚或者曬網。建立乙個資料讀取read函式用於把讀取資料存入到磁碟鐘,。建立乙個檔案寫入函式write用於把檔案資料讀入陣列中。建立乙個text函式用於判斷函式英語判斷輸入資料是否有誤,在write函式中呼叫text函式用於判斷輸入。主函式呼叫write函式讀資料,read函式寫資料,把讀取資料一一放入distance函式求天數,其返回值傳入meath函式中判斷打魚或者曬網並輸出並儲存。
【程式框架】
#include
#include
using
namespace std;
class
date
date()
;};//定義乙個distance函式用於計算從2023年1月1日起至今的天數
intdistance
(date d1, date d2),}
;//二維陣列儲存閏年和平年每月的天數
for(
int i =
1; i <= y; i++
)//計算截止這個月前的天數總和
if(d2.year %4==
0&& d2.year %
100!=
0|| d2.year %
400==0)
}else
//不是閏年二月加28天
} dis = dis + d2.day;
return dis;
//返回天數
}//函式meath用於判斷是否打魚或者曬網
void
meath
(long
int dis)
//測試函式用於判斷輸入資料的正確性
inttext
(int d)if(
0> month || month >12)
if(month ==2)
}else}}
if(month ==
4|| month ==
6|| month ==
9|| month ==11)
}else
}return0;
}//建立乙個write函式用於檔案的寫入
void
write
(int d,
int n)
cout <<
"請輸入要查詢的日期,並自動存入磁碟f2中:"
<< endl;
for(
int i =
0; i < n; i++
) outfile << d[i]
<<
" ";
//輸出磁碟中的資料
} outfile.
close()
;//關閉檔案
}//建立read函式用於讀取磁碟中的資料
void
read
(int d,
int n)
cout << endl;
cout <<
"磁碟f2.txt中的資料為:"
<< endl;
for(
int i =
0; i < n; i++
) cout << endl;
cout << endl;
infile.
close()
;}intmain()
return0;
}
除錯截圖:
測試截圖:
心得體會:
在計算從開始日期到指定日期的天數時,可以先計算中間間隔多少年,然後在判斷每一年是否是閏年,把每年的天數相加,在計算指定天數到1月的月數,如果指定月數等於二月則判斷是否閏年,把天數放入二維陣列裡面,一組下標代表閏年,一組代表平年,迴圈相加的月份天數,最後再加剩下的天數。步驟:(1)判讀是否閏年,(2)計算間隔年數的天數總和,(3)計算今年間隔月數的天數總和,(4)計算間隔天數總和。## 標題
三天打魚,兩天曬網。
判斷某人從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...