一道面試題

2021-06-05 23:27:42 字數 1235 閱讀 9444

#include "stdio.h"

void print()

void main()

要求在*部分寫**使整個程式執行後輸出「hello world」,有些人說,這還不簡單啊,於是寫出這樣的**:

view source

print?

01.#include "stdio.h"

02.voidprint()

03.

06.voidmain()

07.

這樣寫的確是沒問題,但是違背了題目的要求,因為題目不允許修改main函式,這下彷彿我們就沒轍了,因為我們學習c/c++語言的時候,明確說明main函式是程式的主函式,也是程式的入口函式,可是現在主函式為空,那怎麼會執行子函式呢?

其實這個筆試題考察的不是我們對基本知識的理解,而是要學會發現問題解決問題的能力,有時候,當一條路走不通的時候,我們就要換一條路,通過查詢資料,我們發現其實c++是可以修改入口函式的。

這裡需要乙個c++預編譯識別符號 #pragma comment()   來幫助我們搞定這個問題。他的使用型別是:pragma comment( comment-type ,["commentstring"] )。

comment-type是乙個預定義的識別符號,指定注釋的型別,應該是compiler,exestr,lib,linker之一。

commentstring是乙個提供為comment-type提供附加資訊的字串。

#pragma comment(linker, "/entry:print")

看到了麼?通過/entry引數來設定程式鏈結時候的主函式為print,這樣,就相當於print函式是整個程式的主函式,他替換了main函式的作用,相反的,main函式則成為了乙個子函式

完整的**和執行結果如圖所示:

至於#pragma comment(lib, "msvcrt.lib")是因為使用了puts函式,如果使用printf的話可以不要這一句

一道面試題

一道面試題 射擊運動員10發打中90環有多少種可能,請編寫程式計算出來,並列印出結果,0環和10環均有效。打中90環就是沒打中10環,所以打中90環跟打中10環的可能性是一樣的。然後開始遞迴狂打槍,一到10就記錄 if params i 10 在迴圈的控制中已經排除了大於10的可能性 i 10 pa...

一道面試題

前些時候在找工作,就在準備結束此次找工作歷程的時候,去了一家公司面試,去了之後技術經理直接帶到一台電腦旁,給了一張紙條,上面是這樣的題目 用c或c 來實現 1 建立一棵樹,該樹的深度是隨機的,每個節點的位元組點數是隨機的。2 給每個節點分配一段隨機大小的記憶體空間,給每個節點賦乙個隨機數。3 遍歷這...

一道面試題

如果n為偶數,則將它除以2,如果n為奇數,則將它加1或者減1。問對於乙個給定的n,怎樣才能用最少的步驟將它變到1。例如 n 61 n 60 n 2 30 n 2 15 n 16 n 2 8 n 2 4 n 2 2 n 2 1 public class myclass public static vo...