『壹』 計算機C語言面試常問問題(適用於考研復試,保研復試)【背誦版】
答:C++是面向對象的,面向對象就是以對象作為中心,然後以對象的行為以及屬性去構建一個完整的事件。
答:C語言的程序可以由一個主函數和若干個函數構成。
答:(1)void修飾函數返回值;如果函數沒有函數值,可以將其聲明為void類型
(2)void修飾函數參數,如果函數沒有參數,應該使用void進行修飾,以增強程序的可讀性。
答:(1)正確性;即對任何合法的輸入,演算法都會得出正確的結果
(2)可讀性;演算法創建後由人來閱讀、理解、使用以及修改
(3)健壯性;當輸入非法數據時,不會產生莫名其妙的輸出結果
(4)時間復雜度與空間復雜度;時間復雜度就是演算法運行所需要的時間;空間復雜度是指演算法運行所需的存儲空間的多少。
答:C語言源程序的執行要經過預處理,編譯(對源碼進行優化,最後生成匯編代碼),鏈接(將目標文件生成可執行文件),運行等步驟
答:程序:為了實現特定目標或解決特定問題而用計算機語言編寫的指令序列,它由演算法和數據結構組成。
演算法:就是計算機解題的步驟(是一系列解決問題的清晰指令)
答:(1)組織和存儲數據。數據結構提供了一種有效地方式來組織和存儲數據,使得程序能夠快速地訪問操作這些數據。
(2)提高程序的效率。比如,使用散列表可以快速地查找數據
(3)提高程序的可讀性和可維護性。合適的數據結構可以使程序的代碼更加清晰和易於理解
答:頭文件是包含著一些已經寫好的函數以及定義好的變數。這樣我們在寫程序的時候,引用頭文件,就可以使用這些函數和變數了
答:(1)使用指針
(2)使用宏函數
(3)使用位操作
(4)長內短外嵌套循環
答:全部變數是定義在函數之外的變數,全局變數可以為本文件中其它函數所共用;局部變數是定義在函數內部的變數。
局部變數和全局變數可以重名,局部變數會屏蔽全局變數
答:常量是指在程序執行過程中值不能改變,具有固定值的量
變數是指在程序執行中值可以改變的量。
答:(1)if語句由多個條件構成多分支,而switch由一個表達式構成多分支
(2)if語句結構靈活,能處理任意多分支;而Switch結構簡單,但實現程序邏輯結構清晰
答:do....while語句是先執行一次循環體,然後再判斷
While語句是先判斷後執行器
答:(1)break可用於Switch語句,表示跳出整個Switch塊,而continue則不能用於Switch語句。
(2)兩者都可用於循環語句的循環體,break用於立即退出當期循環體,而continue僅跳過當次循環。
答:值傳遞:在調用函數時,將實參的值復制一份給形參,形參和實參互不影響。在函數中修改形參的值不會影響實參的值。
地址傳遞:在調用函數時,將實參的地址(指針)作為形參傳遞給函數,實參和形參表示同一個內容,在函數中修改形參的值會直接影響到實參的值。
答:只能針對基本數據類型使用Switch,這些類型包括int,char。對於其他類型如long,float,double,則必須使用if語句。
答:自動變數:西數中所有的非靜態局部變數。其作用域僅僅局限於其定義的函數中,存儲在動態存儲區。
靜態變數:在變數前加上static 關鍵字的變數。存儲在靜態存儲區,在沒有顯式初始化的時候會被初始化為0或者null,並且只初始化一次(初始化不等於賦值)。長期存在靜態存儲區,直到程序結束。
外部變數:一般用作全局變數作用域的擴展。把全局變數在其他源文件中聲明成extern變數,可以擴展該全局變數的作用域至聲明的那個文件,其本質作用就是對全局變數作用域的擴展。長期存在靜態存儲區,直到程序結束。
寄存器變數:一般經常被使用的的變數(如某一變數需要計算幾千次)可以設置成寄存器變數,register變數會被存儲在寄存器中,計算速度遠快於存在內存中的非register變數。存儲在cpu的寄存器中,速度快。
答:C語言中*在定義的時候,只是說明要定義一個指針
*在非定義的時候,表示取後面那個地址裡面的內容
答: 數組:是用於存儲多個相同類型數據的集合,數組名是首元素的地址
指針:相當於一個變數,它存放的是其他變數在內存中的地址,指針名指向了內存的首地址。
區別:(1)數組是直接訪問數據,指針是間接訪問數據
(2)同類型指針可以相互賦值;數組不行,只能一個元素一個元素的賦值或拷貝
數組對應著一塊內存區域,而指針是指向一塊內存區域。
答:在不嚴格的情況下,可以說字元數組就是字元串;
嚴格來講,字元數組是用來存放字元的數組;而字元串就是用雙引號括起來的任意字元系列,可以看作是一個個單個字元的數組,但是字元串的末尾有『\0』結束標記。
答:指針保存了某個變數的地址,指針本身是一個變數,它也有自身的地址,而指針的內容是某個變數的地址。
答:算術運算、關系運算、賦值
指針編程的優點:(1)提高程序的編程效率和執行速度
(2)利用指針可以實現動態內存分配
(3)直接操縱內存地址,更容易實現函數的編程和調用
答:形參:指定義函數時,函數名後面括弧中的變數名
實參:指在主函數調用一個函數時,函數名後面括弧中的參數
形參和實參的功能是進行數據傳送;發生函數調用時,主函數把實參的值傳送給被調用的形參,從而實現主函數向被調函數的數據傳送。
答:使編譯系統知道被調用函數返回值的類型,以便在主函數中按此類型對返回值進行相應的處理。
答:在調用一個函數的過程中又出現直接或間接地調用該函數本身
簡單說,遞歸就是把復雜問題分解成簡單的小問題,小問題再按同樣的方法分解成小小問題,一直到問題小到可以解決,然後子問題得到結果不斷回朔,最後就可以解決最初的問題
答:函數是構成C語言程序的基本單位。一個完整得C程序一般由文件包含、宏定義、函數聲明、變數和一個或若干個函數組成。
答:(1)printf()函數可以輸出各種類型,並且一次可以輸出多項;puts()函數只能輸出字元串,一次只能輸出一個字元串
(2)puts()輸出後具有自動換行的功能,而printf()函數只有輸入「 」才能換行
答:(1)結構體類型是一種構造出來的數據類型,而基本類型不需要用戶構造
(2)結構體類型可以包含不同數據類型,而基本類型只能包含一種數據類型