c語言常見的問題
1. c語言面試經常問到的問題有哪些
c語言面試經常問到的問題有:
1、C語言的主要特徵是什麼?
C是一種過程語言。C語言的主要功能包括對內存的低級訪問,簡單的關鍵字集和簡潔的樣式。這些功能使其適用於諸如操作系統或編譯器開發之類的系統編程。
2、i ++和++i有什麼區別?
1)表達式「i ++」返回舊值,然後遞增i。表達式++i遞增該值並返回新值。
2)後綴++的優先順序高於前綴++。
3)後綴++的關聯性從左到右,前綴++的關聯性從右到左。
4)在C ++中,++i可用作左值,但i ++不能用作左值。在C中,它們都不能用作l值。
3、什麼是l值?
l值或位置值是指可以在賦值運算符左側使用的表達式。例如,在表達式「a = 3」中,a是l值,而3是r值。
l值有兩種類型:
「不可修改的l值」表示無法修改的l值。const變數是「不可修改的l值」。
「可修改的l值」表示可以修改的l值。
4、數組和指針有什麼區別?
指針用於存儲動態分配的數組的地址,以及用於作為參數傳遞給函數的數組。在其他情況下,數組和指針是兩個不同的東西,盡管數組和指針是不同的東西,但是數組的以下屬性使它們看起來相似。
5、C語言中的「循環」數據類型是指什麼?
所謂的「循環」數據類型,其實就是某種類型的數據溢出後,又從頭開始存儲。一個典型的例子是unsigned char變數若已經等於255,仍然對其加1,那麼該變數就會溢出從頭開始,也即等於零:
unsigned char a = 255。
a = a+1;// a等於0。
2. C語言數組在使用中常見的幾種錯誤
在計算機程序中,通常可能發生以下三種類型的錯誤:
(1)語法錯誤:這是指程序中含有不符合語法規定的語句,例如關鍵字或符號書寫錯誤(將printf寫成print、將數組元素引用寫成a(2)等)、使用了未定義的變數、括弧不配對等。含有語法錯誤的程序是不能通過編譯的,因此程序將不能運行。
(2)邏輯錯誤:這是指程序中沒有語法錯誤,可以通過編譯、連接生成可執行程序,但程序運行的結果與預期不相符的錯誤。例如整型變數的取值超出了有效的取值范圍、在scanf函數遺漏了取地址運算符&、數組元素引用中下標越界、在應當使用復合語句時沒有使用復合語句等。由於含有邏輯錯誤的程序仍然可以運行,因此這是一種較難發現、較難調試的程序錯誤,在程序設計、調試中應予特別注意。
(3)系統錯誤:這是指程序沒有語法錯誤和邏輯錯誤,但程序的正常運行依賴於某些外部條件的存在,如果這些外部條件缺失,則程序將不能運行。例如折半查找法是在已經排序的數組上進行的,但實際的數據並沒有進行排序、程序中需要打開一個已經存在的文件,但這個文件由於其他原因丟失等。
3. 在C語言中運行程序時最常出現的有那些錯誤
一、基礎知識和數據類型、表達式 1、{},[],(),『』,「」不配對。解決這個問題最好的方法就是每當寫這些符號的時候就先寫成一對,然後再在中間加內容。 2、忘記在語句的末尾加分號,或在預處理命令後多加分號。記住:每一個語句的後邊都要加分號,而預處理命令並不是語句,所以不加分號,他們必須每行一條,不能把多個命令寫在一行。 3、混淆/和\;注釋對應的符號是/* */,而轉義字元是以\開頭,除號是/。 4、printf()和scanf()的參數設置有誤,主要表現在以下幾方面: l 類型不匹配的問題。(例如:有float a=3.5,但輸出的時候printf(「a=%d」,a);則屏幕上會顯示出a=0.00000或者提示其它運行錯誤)。基本原則是:float對應%f, int對應%d, char對應%c。 l 個數不匹配。無論是哪個函數,都可以有n個參數,第一個永遠是「」括起來的內容,表示輸出格式。剩下的n-1個是輸出的變數或者輸入的變數的地址。需要注意的是,如果後邊有n-1個參數,那麼前邊一定對應n-1個%f一類的格式說明符。 l scanf()中變數前忘了加&。記住:scanf()中變數前要有&(但後邊學到的字元數組名和指針前不用加) 5、定義標識符的時候經常出現使用非法字元的情況,例如:標識符中不能用空格,也就是說不能有這樣的定義:int radium of circle;一般情況下可用下劃線將三個單詞連接在一起。 6、在使用變數前未定義,或未初始化。例如:若下邊的sum未定義,則在編譯時會提示相應的錯誤信息,而若未初始化為0,則求和的結果一定是錯誤的。 void main() { int I,a[10], sum=0; /*只要下邊要用,這個定義就必須要有,一般情況下也要有初始值*/ for(I=0;I<10;I++) sum+=a[I]; printf(「%d」,sum); } 7、計算錯誤。主要注意:++,――和其它運算符一起運算時,除根據優先順序進行計算時,還要考慮先後位置的特殊含義;數據類型不一致時發生的自動轉換也會導致計算的誤差;還要注意求模結果的符號與被除數相同;某些特殊情況下 使用懶惰求值法。 8、不能除以0,要做合法性檢查; 9、類型溢出。記住每種數據類型的取值范圍,確保數據在所定義類型範圍之內; 10、數學表達式的格式有誤。常見的有:
4. 計算機程序c語言面試常見問題
計算機程序c語言面試常見問題
c語言作為計算機程序設計語言,是考察軟體工程師應聘者技術能力的關鍵。計算機程序c語言面試常見問題,我們來看看。
c語言 面試題 精選(筆試)
單選題部分
1、C語言程序的基本單位是____
A.語句
B.函數
C.程序行
D.字元
答案:B
2、C語言程序由()組成
A.子程序
B.過程
C.函數
D.主程序段程序
答案:C
3、演算法的表示方法有______
A.自然語言,傳統流程圖,N-S流程圖,偽代碼,計算機語言
B.高級語言,匯編語言,機器語言
C.C語言,QBASIC語言,InterDev
D.圖形圖像法,描述法,編程法
E.計算機語言
答案:A
4、下列變數定義中合法的是
A.short_a=1-.le-1;
B.doubleb=1+5e2.5;
C.longdo=0xfdaL;
D.float2_and=1-e-3;
答案:A
5、下面說法中正確的是()
A.int型和long型運算先將int型轉換成unsigned型,再轉換
B.兩個float型運算結果為double型
C.只要表達式中存在double型,所有其他類型數據都必須轉
D.表達式中的'類型轉換與運算順序有關
答案:C
6、以下不正確的敘述是
A.在C程序中,逗號運算符的優先順序最低
B.在C程序中,APH和aph是兩個不同的變數
C.若a和b類型相同,在計算了賦值表達式a=b後b中的值將放入a中,而b中的值不變
D.當從鍵盤輸入數據時,對於整型變數只能輸入整型數值,對於實型變數只能輸入實型數值
答案:D
7、以下說法中正確的是
A.#define和printf都是C語句
B.#define是C語句,而printf不是
C.printf是C語句,但#define不是
D.#define和printf都不是C語句
答案:D
8、若有條件表達式(exp)?a++:b–,則以下表達式中能完全等價於表達式(exp)的是
A.(exp==0
B.(exp!=0)
C.(exp==1)
D.(exp!=1)
答案:B
9、若有說明:inta[3][4]={0};則下面正確的敘述是
A.只有元素a[0][0]可得到初值0
B.此說明語句不正確
C.數組a中各元素都可得到初值,但其值不一定為0
D.數組a中每個元素均可得到初值0
答案:D
c語言面試問答題
1、局部變數能否和全局變數重名?
答:能,局部會屏蔽全局。要用全局變數,需要使用"::"
局部變數可以與全局變數同名,在函數內引用這個變數時,會用到同名的局部變數,而不會用到全局變數。對於有些編譯器而言,在同一個函數內可以定義多個同名的局部變數,比如在兩個循環體內都定義一個同名的局部變數,而那個局部變數的作用域就在那個循環體內。
2、如何引用一個已經定義過的全局變數?
答:extern
可以用引用頭文件的方式,也可以用extern關鍵字,如果用引用頭文件方式來引用某個在頭文件中聲明的全局變理,假定你將那個變寫錯了,那麼在編譯期間會報錯,如果你用extern方式引用時,假定你犯了同樣的錯誤,那麼在編譯期間不會報錯,而在連接期間報錯
3、全局變數可不可以定義在可被多個.C文件包含的頭文件中?為什麼?
答:可以,在不同的C文件中以static形式來聲明同名全局變數。
可以在不同的C文件中聲明同名的全局變數,前提是其中只能有一個C文件中對此變數賦初值,此時連接不會出錯。
;