微软面试题目(一) 计算两个日期之间的天数
生活随笔
收集整理的這篇文章主要介紹了
微软面试题目(一) 计算两个日期之间的天数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
微軟的面試,沒能參加啊,只好打聽了下題目,其中一題是在20分鐘內寫出:計算兩個日期之間天數的方法。昨天晚上想了一下,今天實現了一下,經過調試,差不多一個小時才弄好,慚愧啊
代碼如下:
/********************************************************************file name: CountDaysfile ext: cppauthor: zoudhcreated: 2012/04/18 purpose: 計算兩個日期之間的天數 *********************************************************************/#include <stdlib.h> #include <string.h>typedef struct _Date{int year;int month;int day;_Date(char* strDate); }Date;int CountDays(Date date1,Date date2); int GetDaysFromThisYear(Date date); int GetDaysToNextYear(Date date); int GetDaysInYear(int year); int GetDaysInMonth(int month,bool LeapYear); bool IsLeapYear(int year);_Date::_Date( char* strDate ) {//初始化year = 1;month = 1;day = 1;const char* startpos=strDate;const char* pos = startpos;char buf[64]; //獲取年份memset(buf,0,64);while( '-' != *pos && '\0' != *pos ) pos++;memcpy_s(buf,64,startpos,pos-startpos);year = atoi(buf);startpos = ++pos;//獲取月份memset(buf,0,64);while( '-' != *pos && '\0' != *pos ) pos++;memcpy_s(buf,64,startpos,pos-startpos);month = atoi(buf);startpos = ++pos;//獲取日期memset(buf,0,64);memcpy_s(buf,64,pos,strlen(pos));day = atoi(buf); } int CountDays(Date date1,Date date2) {int iTotalDays = 0;if( date1.year == date2.year)\{return GetDaysFromThisYear(date2) - GetDaysFromThisYear(date1) + 1;}iTotalDays = GetDaysToNextYear(date1); iTotalDays += GetDaysFromThisYear(date2);int year = date1.year + 1;while(year < date2.year ){iTotalDays += GetDaysInYear(year); }return iTotalDays; }//計算從當年年初到當前日期的天數 int GetDaysFromThisYear( Date date ) {bool bLeapYear = IsLeapYear(date.year);int iTotalDays = date.day;for( int month = 1; month < date.month ; month++){iTotalDays += GetDaysInMonth(month,bLeapYear);}return iTotalDays; } //計算從當前日期到年底的天數 int GetDaysToNextYear( Date date ) {bool bLeapYear = IsLeapYear(date.year);//當月有多少天int iDaysInMonth = GetDaysInMonth(date.month,bLeapYear);//統計當月的天數int iTotalDays = iDaysInMonth - date.day + 1;for( int month = date.month + 1; month <= 12 ; month++){iTotalDays += GetDaysInMonth(month,bLeapYear);}return iTotalDays; } //計算本年內的天數 int GetDaysInYear( int year ) {bool bLeapYear = IsLeapYear(year);if(bLeapYear)return 366;elsereturn 365; } //判斷是否是閏年 bool IsLeapYear( int year ) {if( year%100 == 0){if( year%4 == 0)return true;elsereturn false;}else{if( year%4 == 0)return true;elsereturn false;} }//獲取一個月份中的天數 int GetDaysInMonth( int month,bool LeapYear ) {switch (month){case 1:return 31;case 2:if(LeapYear)return 29;elsereturn 28;case 3:return 31;case 4:return 30;case 5:return 31;case 6:return 30;case 7:return 31;case 8:return 31;case 9:return 30;case 10:return 31;case 11:return 30;case 12:return 31;default:return 0; } }int main() {char* szdate1 = "2011-3-1";char* szdate2 = "2012-3-1";Date date1(szdate1);Date date2(szdate2);int days = CountDays(date1,date2); }轉載于:https://www.cnblogs.com/dylantsou/archive/2012/05/13/2498364.html
總結
以上是生活随笔為你收集整理的微软面试题目(一) 计算两个日期之间的天数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软核、固核、硬核的区别【转】
- 下一篇: Spring表单的initBinder: