日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

微软面试题目(一) 计算两个日期之间的天数

發(fā)布時間:2025/1/21 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微软面试题目(一) 计算两个日期之间的天数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

微軟的面試,沒能參加啊,只好打聽了下題目,其中一題是在20分鐘內(nèi)寫出:計算兩個日期之間天數(shù)的方法。昨天晚上想了一下,今天實現(xiàn)了一下,經(jīng)過調(diào)試,差不多一個小時才弄好,慚愧啊

代碼如下:

/********************************************************************file name: CountDaysfile ext: cppauthor: zoudhcreated: 2012/04/18 purpose: 計算兩個日期之間的天數(shù) *********************************************************************/#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; }//計算從當(dāng)年年初到當(dāng)前日期的天數(shù) 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; } //計算從當(dāng)前日期到年底的天數(shù) int GetDaysToNextYear( Date date ) {bool bLeapYear = IsLeapYear(date.year);//當(dāng)月有多少天int iDaysInMonth = GetDaysInMonth(date.month,bLeapYear);//統(tǒng)計當(dāng)月的天數(shù)int iTotalDays = iDaysInMonth - date.day + 1;for( int month = date.month + 1; month <= 12 ; month++){iTotalDays += GetDaysInMonth(month,bLeapYear);}return iTotalDays; } //計算本年內(nèi)的天數(shù) 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;} }//獲取一個月份中的天數(shù) 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); }

轉(zhuǎn)載于:https://www.cnblogs.com/dylantsou/archive/2012/05/13/2498364.html

總結(jié)

以上是生活随笔為你收集整理的微软面试题目(一) 计算两个日期之间的天数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。