自己在網上找的騰訊的筆試題(研發類),沒有答案,就沒個題自己做做,不會的就網上查資料。現在整理如下:
1、請定義一個宏,比較兩個數a、b 的大小,不能使用大於、小於、if 語句
答案:
#define max(a,b) (((a)-(b))&(1<<31))?(b):(a)
2、如何輸出源文件的標題和目前執行行的行數
答案:
[cpp]
#incluede<stdio.h>
#include<tchar.h>
#include<Windows.h>
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<stdio.h>
#include<tchar.h>
#include<Windows.h>
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++預先定義的一些宏來實現的。不止這兩個,還有下面這些比較常用的:
1)__DATE__:當前文件的編譯日期。與在time.h中定義的asctime函數返回的格式一樣,即是Mmm DD yyyy(月、日、年);
2)__FILE__:當前源文件的名稱。字符串格式(const char);
3)__LINE__:當前代碼在源文件中的行數。一個整數。
4)__TIME__:當前源文件的編譯時間。一個字符串(hh:mm:ss);
5)__TIMESTAMP__:當前源文件最後編譯的日期時間。一個字符串(格式為:Ddd Mmm Date hh:mm:ss yyyy,即星期幾、月、日、時、分、秒、年);
其中通過宏__FILE__和__LIEN__可以快速的定位程序出錯的文件和位置,並通過Email的形式發送給開發人員,從而進行快速維護。
3、兩個數相乘,小數點後位數沒有限制,請寫一個高精度算法
答案:
算法提示:
[plain] view plaincopyprint?輸入 string a, string b; 計算string c=a*b; 返回 c;
1, 紀錄小數點在a,b中的位置l1,l2, 則需要小數點後移動位置數為l=length(a)+length(b)-l1-l2-2;
2, 去掉a,b中的小數點,(a,b小數點後移,使a,b變為整數)
3, 計算c=a*b; (同整數的大數相乘算法)
4, 輸出c,(注意在輸出倒數第l個數時,輸出一個小數點。若是輸出的數少於l個,就補0)
輸入 string a, string b; 計算string c=a*b; 返回 c;
1, 紀錄小數點在a,b中的位置l1,l2, 則需要小數點後移動位置數為l=length(a)+length(b)-l1-l2-2;
2, 去掉a,b中的小數點,(a,b小數點後移,使a,b變為整數)
3, 計算c=a*b; (同整數的大數相乘算法)
4, 輸出c,(注意在輸出倒數第l個數時,輸出一個小數點。若是輸出的數少於l個,就補0)
4、寫一個病毒
5、有A、B、C、D 四個人,要在夜裡過一座橋。他們通過這座橋分別需要耗時1、2、5、10 分鐘,只有一支手電,並且同時最多只能兩個人一起過橋。
請問,如何安排,能夠在17 分鐘內這四個人都過橋?