題目描述:中國有句俗語叫「三天打魚兩天曬網」。某人從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...