機試演算法講解 第3題 求兩個日期相差的天數

2021-07-04 05:40:54 字數 2023 閱讀 5617

/*

問題:求兩個日期相差的天數,連續2天預設為一天。日期形式:yyyymmdd

輸入:20110412

20110422

輸出:11

思路:方法1:將2個日期都應該化為絕對秒數,然後相減,用絕對秒數之差然後除以24*3600即可

易錯點:

time_t mktime(struct tm* tmptr)

double difftime(time_t time1,time_t time2)

char* strncpy(char* strdest,const char* stdsource,size_t count)返回的是strdest

void* memset(void* dest,int i,size_t count)

方法2:

建立乙個日期結構體,判斷閏年:能被4整除且不能被100整除,或者能被400整除,

建立月份:1,3,5,7,8,10,12有31天

4,6,9,11有30天

2月:閏年29天,平年28天

if( (i/4==0 && i/100!=0) || i/400==0 )

20140122

19891005

8875(正確) 8870錯誤

年與年相減得diffyear,每一年按照是否是閏年加366或365

大日期的月做加法: 依次加上上乙個月的天數

小日期的日做減法:依次減去日期

大日期的日做加法:依次加上日期

易錯點:

1結構體內不能給陣列賦值

2採用加減法計算日期,不需要最終再加上1

3while(scanf("%4d%2d%2d",&y1,&m1,&d1)) 來讀取前4位給年,後2位給月

*/#include #include #include #include //memset

#include //atoi

//#define leap(y) ((y/4==0 && y/100!=0) || y/400==0),寫錯了是%而不是/

#define leap(y) ((y%4==0 && y%100!=0) || y%400==0)

typedef struct date

else

else

}} void operator = (date& date)

//int imonarr[2][12] = , };//用兩個花括號括起來,結構體內不能賦值

int iyear;

int imon;

int iday;

}date;

void todate(char* sdate,date& date)

int days(date& date1,date& date2)

, };

date datemax;

date datemin;

if(date2 < date1)

else

int idiffdays = 0,i;

for( i = datemin.iyear ; i < datemax.iyear ; i++ )

for( i = 1 ; i < datemax.imon ; i++)

//idiffdays += datemax.iday ;

idiffdays += datemax.iday -1;

for( i = 1 ; i < datemin.imon ; i++)

//idiffdays -= datemin.iday;

idiffdays -= datemin.iday -1;

//return(idiffdays+1);//這裡不需要加1,因為求出來的就是兩天之差

return idiffdays;

}//using namespace std;

time_t mk_time(char* sdate)

int main(int argc,char* argv)

getchar();

return 0;

}

機試演算法講解 第55題 Piggy Bank

問題 與乙個儲蓄罐,告知空的質量和當前重量,並給定一些錢幣的價值和相應的重量,求儲蓄罐中最少有多少現金。輸入 包含t組測試用例。第一行。每乙個測試用例包含2個整數e和f,表明空儲蓄罐的重量和裝滿錢的重量。10,000g,第二行是每個測試用例,包含乙個整數n 1 n 500 給出了各種硬幣的數量。接下...

機試演算法講解 第58題 輸入外掛程式

輸入外掛程式 scanf快於 cin,在scanf基礎上再次優化,使那些剛超時一點的程式能夠卡金時限範圍。原理 在讀入緩衝中字元的前提下,手動分析字串中輸入的整數 浮點數等我們需要的輸入型別,並將其儲存在變數中 include include include 輸入整數,並將整數儲存在引用變數ret中...

機試演算法講解 第7題 輸出梯形

問題 輸入高度h,輸出高為h,上底邊圍h的梯形 思路 由於多出的底邊x可以設為任意值,不放設x h 第1行,h h 第2行,列印h 1個空格,1個 然後列印h個空格,再列印1個 h 2 1 3 h 2 1 h 2 1 1個 h 2 2 4 h 3個空格,1個 h 2 2 1個 h 1 2 1個 h ...