//曆法規定,四年一閏,四百年閏,例如2023年是閏年,2023年不閏年,
//公曆年份是整百數的,必須是400的倍數的才是閏年,不是400的倍數的就是平年
//計算兩個日期之間的天數(c++)
//定義變數year1, month1, day1, year2, month2, day2
//取出2個日期中的年 月 日
//如果年相同,月也相同
//return day1- day2
/*問題: 給你兩個日期(如"2010-04-13"和"1988-10-24"),求它們之間相差的天數
分析: 這是一年看似簡單,實際上卻有點複雜的小問題,首先你要考慮到月大月小的問題,其次你要考慮到閏年的問題
當然,你也要檢測一下,給定的日期格式是否合法,對這個問題的解法,寫出偽**如下
定義變數year1, month1, day1, year2, month2, day2
取出2個日期中的 年 月 日
如果年相同,月也相同:
return | day1 - day2
如果年相同,月不同:
d1 = date1是該年的第幾天
d2 = date2是該年的第幾天
return | d1 - d2
如果年份不同:
d1 = 年份小的日期,離年低還有多少天
d2 = 年份大的日期是這年的第幾天
d3 = 兩個日期之間相差多少個整年,共有多少天
return d1 + d2 + d3
上面的偽**使用者c++實現如下:
*/
#include using namespace std;//isleap函式判斷乙個年份是否為閏年,方法如下:
bool isleap(int year)
//上面的stringtodate函式用於取出日期中的年月日並判斷日期是否合法
//從字元中最得年月日 規定日期的格式是yyyy-mm-dd
bool stringtodate(string date, int& year, int& month, int& day)
; if(isleap(year))
return year >= 0 && month<=12 && month>0 && day<=day[month] && day>0;
}//dayinyear能根據給定的日期,求出它在該年的第幾天,**如下
int dayinyear(int year, int month, int day)
; if(isleap(year))
day[1] = 29;
for(int i=0; iday2 ? day1 - day2 : day2 - day1;
//如果年相同
}else if(year1 == year2)
else
int d1,d2,d3;
if(isleap(year1))
d1 = 366 - dayinyear(year1,month1, day1); //取得這個日期在該年還於下多少天
else
d1 = 365 - dayinyear(year1,month1, day1);
d2 = dayinyear(year2,month2,day2); //取得在當年中的第幾天
cout<<"d1:"
for(int year = year1 + 1; year < year2; year++)
return d1 + d2 + d3;
}}int main()
計算兩個日期之間的天數
問題描述 給定兩個日期,計算相差的天數。比如2010 1 1和2010 1 3相差2天。時間限制 1000 記憶體限制 65536 輸入共兩行 第一行包含三個整數startyear,startmonth,startday,分別是起始年 月 日。第二行包含三個整數endyear,endmonth,en...
c 計算兩個日期之間的天數差
有兩個日期,求兩個日期之間的天數,如果兩個日期是連續的,我們規定他們之間的天數為兩天。輸入形式為yyyymmdd,例如 20110412 20110422 輸出為 11 include define isyeap x x 100 0 x 4 0 x 400 0?1 0 定義巨集判斷是否是閏年,方便計...
C 計算任意兩個日期之間的天數
c 寫的乙個計算兩個日期之間天數的小程式 cpp view plain copy include include struct tagdate 設定日期 void setdate int y,int m,int d,tagdate date 是否閏年 int isleapyear int year ...