6.2 筆試真題 & 詳解
1、請定義一個宏,比較兩個數(shù)a、b 的大小,不能使用大于、小于、if 語句
答案:
#define max(a,b) (((a)-(b))&(1<<31))?(b):(a)
2、如何輸出源文件的標(biāo)題和目前執(zhí)行行的行數(shù)
答案:
[cpp]
#incluede
#include
#include
int main(){
int nLine=__FILE__;
TCHAR *pFIle=_T(__FILE__);
_tprintf(TEXT("the file name is %s\r\n,line number is %d.\r\n"),pFile,nLine);
return 0;
}
#incluede
#include
#include
int main(){
int nLine=__FILE__;
TCHAR *pFIle=_T(__FILE__);
_tprintf(TEXT("the file name is %s\r\n,line number is %d.\r\n"),pFile,nLine);
return 0;
}
這主要是運用了ANSI C和Microsoft C++預(yù)先定義的一些宏來實現(xiàn)的。不止這兩個,還有下面這些比較常用的:
1)__DATE__:當(dāng)前文件的編譯日期。與在time.h中定義的asctime函數(shù)返回的格式一樣,即是Mmm DD yyyy(月、日、年);
2)__FILE__:當(dāng)前源文件的名稱。字符串格式(const char);
3)__LINE__:當(dāng)前代碼在源文件中的行數(shù)。一個整數(shù)。
4)__TIME__:當(dāng)前源文件的編譯時間。一個字符串(hh:mm:ss);
5)__TIMESTAMP__:當(dāng)前源文件最后編譯的日期時間。一個字符串(格式為:Ddd Mmm Date hh:mm:ss yyyy,即星期幾、月、日、時、分、秒、年);
其中通過宏__FILE__和__LIEN__可以快速的定位程序出錯的文件和位置,并通過Email的形式發(fā)送給開發(fā)人員,從而進(jìn)行快速維護(hù)。
3、兩個數(shù)相乘,小數(shù)點后位數(shù)沒有限制,請寫一個高精度算法
答案:
算法提示:
[plain] view plaincopyprint?輸入 string a, string b; 計算string c=a*b; 返回 c;
1, 紀(jì)錄小數(shù)點在a,b中的位置l1,l2, 則需要小數(shù)點后移動位置數(shù)為l=length(a)+length(b)-l1-l2-2;
2, 去掉a,b中的小數(shù)點,(a,b小數(shù)點后移,使a,b變?yōu)檎麛?shù))
3, 計算c=a*b; (同整數(shù)的大數(shù)相乘算法)
4, 輸出c,(注意在輸出倒數(shù)第l個數(shù)時,輸出一個小數(shù)點。若是輸出的數(shù)少于l個,就補0)
輸入 string a, string b; 計算string c=a*b; 返回 c;
1, 紀(jì)錄小數(shù)點在a,b中的位置l1,l2, 則需要小數(shù)點后移動位置數(shù)為l=length(a)+length(b)-l1-l2-2;
2, 去掉a,b中的小數(shù)點,(a,b小數(shù)點后移,使a,b變?yōu)檎麛?shù))
3, 計算c=a*b; (同整數(shù)的大數(shù)相乘算法)
4, 輸出c,(注意在輸出倒數(shù)第l個數(shù)時,輸出一個小數(shù)點。若是輸出的數(shù)少于l個,就補0)
4、寫一個病毒
5、有A、B、C、D 四個人,要在夜里過一座橋。他們通過這座橋分別需要耗時1、2、5、10 分鐘,只有一支手電,并且同時最多只能兩個人一起過橋。
請問,如何安排,能夠在17 分鐘內(nèi)這四個人都過橋?
更多騰訊筆試真題及答案:https://bbs.yjbys.com/bjfx/