1. 程式人生 > >經典C語言筆試題目

經典C語言筆試題目

來源:https://blog.csdn.net/qq_36032963/article/details/64479469

題目來源:

1、中興、華為、慧通、英華達、微軟亞洲技術中心等中
外企業面試題目;
2、C 語言面試寶典(林銳《高質量程式設計第三版》)。
說明:
1、部分C 語言面試題中可能會參雜部分和C++ 相關的知
識,為了保持題目的靈活性故保留,但選題最終還是
會以C 語言題目為主體;
2、以上公司的面試題目已成為國內中小型企業公司出題
模板;
3、由於本人的能力有限加上時間倉促,本課件肯定存在

不足之處,懇請各位同學批評指正。

1、請填寫bool , float,  指標變數 與“零值”比較的if  
語句。
提示:這裡“零值”可以是0, 0.0 , FALSE  或者“空指標”

。例如int 變數n  與“零值”比較的if  語句為:
if ( n == 0 ) 
if ( n != 0 ) 
以此類推。

(1)請寫出bool flag  與“零值”比較的if  語句:
【標準答案】if ( flag )    if ( !flag )
100 條經典 C語言筆試題目
(2)請寫出float  x   與“零值”比較的if  語句:
【標準答案】 const float EPSINON = 0.00001;                    
if ((x >= - EPSINON) && (x <= EPSINON)                  
不可將浮點變數用“==” 或“!=” 與數字比較,應該設法

轉化成“>=” 或“<=” 此類形式。
100 條經典 C語言筆試題目
(3)請寫出char  *p   與“零值”比較的if  語句
【標準答案】 if (p == NULL)    if (p != NULL) 2、以下為Linux下的32 位C 程式,請計算sizeof 的
值。
char  str[] = “Hello” ;                               
char   *p = str ;                                      
i nt    n = 10;                                                    

請計算
(1)sizeof (str ) =                  (2)s i zeof ( p ) =                 
(3)sizeof ( n ) =

【標準答案】

(1)6、(2)4 、(3 )4

(4)void Func ( char str[100])                           
{                                          
…… ;                                                            
}                                          
請計算sizeof( str ) =                                       
(5)void * p = malloc( 100 );                                                
請計算sizeof ( p ) = 
【標準答案】(4)4、(5)4
4、用變數a 給出下面的定義
e) 一個有10個指標的陣列,該指標是指向一個整型數
的;
f)  一個指向有10個整型數陣列的指標;
g) 一個指向函式的指標,該函式有一個整型引數並返
回一個整型數;
h) 一個有10個指標的陣列,該指標指向一個函式,該
函式有一個整型引數並返回一個整型數;
【標準答案】e)int *  a[10];      f)int (*a)[10]                                 
g)int (*a)(int);   h) int (*a[10])(int)
5、設有以下說明和定義:
typedef u nion {long i; int k[5]; char c;} DATE;
struct data { int cat; DATE cow; double dog;} too;
DATE max;
則語句printf("%d",sizeof(struct date)+sizeof(max)); 的
執行結果是:_____
【標準答案】DATE是一個union, 變數公用空間.  裡面最
大的變數型別是int[5],  佔用20個位元組.  所以它的大小是
20
data 是一個struct,  每個變數分開佔用空間.  依次為int4 + 
DATE20 + double8 = 32.
所以結果是20 + 32 = 52.
當然... 在某些16位編輯器下, int 可能是2位元組,那麼結果
是int2 + DATE10 + double8 = 20
6、請問以下程式碼有什麼問題:
int main()
{
char a;
char *str=&a;
strcpy(str,"hello");
printf(str);
return 0;
}
【標準答案】沒有為str分配記憶體空間,將會發生異常
問題出在將一個字串複製進一個字元變數指標所指
地址。雖然可以正確輸出結果,但因為越界進行內在
讀寫而導致程式崩潰。
7、請問以下程式碼有什麼問題:
char* s="AAA";
printf("%s",s);
s[0]='B';
printf("%s",s);
有什麼錯?
【標準答案】"AAA" 是字串常量。s是指標,指向這個
字串常量,所以宣告s的時候就有問題。
cosnt char* s="AAA";
然後又因為是常量,所以對是s[0] 的賦值操作是不合法
的。
8、int (*s[10])(int)  表示的是什麼啊
【標準答案】int (*s[10])(int)  函式指標陣列,每個指標
指向一個int func(intp aram) 的函式。
9、c和c++ 中的struct有什麼不同?
【標準答案】c和c++ 中struct的主要區別是c中的struct
不可以含有成員函式,而c++ 中的struct可以。c++ 中
struct和class的主要區別在於預設的存取許可權不同,
struct預設為public ,而class預設為private
10、void getmemory(char *p)
{
p=(char *) malloc(100);
strcpy(p,“hello world”);
}
int main( )
{
char *str=NULL;
getmemory(str);
printf(“%s/n”,str);
free(str);
return 0;
} 會出現什麼問題?
【標準答案】程式崩潰,getmemory中的malloc 不能返回
動態記憶體,free ()對str操作很危險。
11、char szstr[10];
strcpy(szstr,"0123456789");
產生什麼結果?為什麼?
【標準答案】長度不一樣,出現段錯誤。
100 條經典 C語言筆試題目
12、陣列和連結串列的區別?
【標準答案】陣列:資料順序儲存,固定大小;

連結串列:資料可以隨機儲存,大小可動態改變

13、void main()
{
char aa[10];
printf(“%d”,strlen(aa));
}                                          
會出現什麼問題?列印結果是是多少?
【標準答案】sizeof()和初不初始化,沒有關係,
strlen()和初始化有關,列印結果值未知。
14、給定結構struct A
{
char t:4;
char k:4;
unsigned short i:8;
unsigned long m;
}; 問sizeof(A) = ?
【標準答案】8
15、struct name1{
char str;
short x;
int num;
} ;求sizeof(name1)?
【標準答案】8
16、struct name2{
char str;
int num;
short x;
}; 求sizeof(name2)?
【標準答案】12
17、程式哪裡有錯誤
wap( int* p1,int* p2 )
{
int * p;
*p = *p1;
*p1 = *p2;
*p2 = *p;
}

【標準答案】p 為野指標(指向一個已刪除的物件或未申請訪問受限記憶體區域的指標

19、(void *)ptr 和(*(void**))ptr 的結果是否相同?其
中ptr為同一個指標。
【標準答案】(void *)ptr 和(*(void**))ptr 值是相同的
20、要對絕對地址0x100000賦值,我們可以用
(unsigned int*)0x100000 = 1234;
那麼要是想讓程式跳轉到絕對地址是0x100000去執行
,應該怎麼做?
【標準答案】*((void (*)( ))0x100000 ) ( );
首先要將0x100000強制轉換成函式指標,即:
(void (*)())0x100000
然後再呼叫它:
*((void (*)())0x100000)();
22、關於記憶體的思考題(1)你能看出有什麼問題?
23、關於記憶體的思考題(2)你能看出有什麼問題?
25、關於記憶體的思考題(3)你能看出有什麼問題?
26、關於記憶體的思考題(4)你能看出有什麼問題?
27、關鍵字volatile有什麼含意? 並給出三個不同的例
子。
【參考答案】一個定義為volatile的變數是說這變數可
能會被意想不到地改變,這樣,編譯器就不會去假設
這個變數的值了。精確地說就是,優化器在用到這個
變數時必須每次都小心地重新讀取這個變數的值,而
不是使用儲存在暫存器裡的備份。下面是volatile變數
的幾個例子:
1). 並行裝置的硬體暫存器(如:狀態暫存器)
2). 一箇中斷服務子程式中會訪問到的非自動變數
(Non-automatic variables)
3). 多執行緒應用中被幾個任務共享的變數
28、嵌入式系統經常具有要求程式設計師去訪問某特定的
記憶體位置的特點。在某工程中,要求設定一絕對地址
為0x67a9的整型變數的值為0xaa66。編譯器是一個純
粹的ANSI編譯器。寫程式碼去完成這一任務。
【參考答案】這一問題測試你是否知道為了訪問一絕對
地址把一個整型數強制轉換(typecast )為一指標是合
法的。這一問題的實現方式隨著個人風格不同而不同
。典型的類似程式碼如下:
int * ptr;
ptr=  (int *)0x67a9;
*ptr = 0xaa55;
29、標頭檔案中的ifndef/define/endif 幹什麼用?
【標準答案】防止該標頭檔案被重複引用。
30、#include  <filename.h>    和#include  
“filename.h” 有什麼區別?
【標準答案】對於#include  <filename.h>   ,編譯器從
標準庫路徑開始搜尋filename.h ;                                
對於#include  “filename.h” ,編譯器從使用者的工作路
徑開始搜尋filename.h 。
31、const   有什麼用途?(請至少說明兩種)
【標準答案】: (1)可以定義const   常量
(2)const  可以修飾函式的引數、返回值,甚至函式
的定義體。被const  修飾的東西都受到強制保護,可
以預防意外的變動,能提高程式的健壯性。
32、static有什麼用途?(請至少說明兩種)
【標準答案】
1. 限制變數的作用域(static全域性變數);
2. 設定變數的儲存域(static區域性變數)。
33、堆疊溢位一般是由什麼原因導致的?
【標準答案】沒有回收垃圾資源。
34、如何引用一個已經定義過的全域性變數?
【標準答案】可以用引用標頭檔案的方式,也可以用
extern 關鍵字,如果用引用標頭檔案方式來引用某個在
標頭檔案中宣告的全域性變理,假定你將那個變數寫錯了
,那麼在編譯期間會報錯,如果你用extern 方式引用
時,假定你犯了同樣的錯誤,那麼在編譯期間不會報
錯,而在連線期間報錯。
35、全域性變數可不可以定義在可被多個.C 檔案包含的
標頭檔案中?為什麼?
【標準答案】可以,在不同的C 檔案中以static形式來聲
明同名全域性變數。可以在不同的C檔案中宣告同名的全
局變數,前提是其中只能有一個C檔案中對此變數賦初
值,此時連線不會出錯。
36、佇列和棧有什麼區別?
【標準答案】佇列先進先出,棧後進先出。
37、Heap與stack的差別。
【標準答案】Heap是堆,stack是棧。

相關推薦

經典C語言筆試題目

來源:https://blog.csdn.net/qq_36032963/article/details/64479469題目來源:1、中興、華為、慧通、英華達、微軟亞洲技術中心等中外企業面試題目;2、C 語言面試寶典(林銳《高質量程式設計第三版》)。說明:1、部分C 語言面

100 條經典C語言筆試題目(轉)

本文轉自:https://blog.csdn.net/yanghonker/article/details/40118615100 條經典C語言筆試題目題目來源:1、中興、華為、慧通、英華達、微軟亞洲技術中心等中外企業面試題目;2、C 語言面試寶典(林銳《高質量程式設計第三版

C語言筆試經典-查找多位數反復數字以及次數

code 以及 出現 data style 鍵盤輸入 popu font dsm 從鍵盤輸入一個多位的整數 用程序推斷 這個數裏面有沒有 反復的數字 有反復的數字就打印 哪個數字反復了 反復了幾次 比如:輸入:1122431 打印結

C語言筆試經典-查詢多位數重複數字以及次數

從鍵盤輸入一個多位的整數 用程式判斷 這個數裡面有沒有 重複的數字  有重複的數字就列印  哪個數字重複了  重複了幾次     例如:輸入:1122431     列印結果:     1重複 出現3

C語言筆試:top K 問題

eof %d 要求 treenode creat 空間 time argc argv 經過幾次C語言筆試,發現經常會被問到求1萬個數中前100大的數,現在想了兩種方法來解決: 方法一:一維數值 代碼如下: #include <stdio.h>#include &

幾道c語言題目

一、一個數組中只有兩個數字是出現一次,其他所有數字都出現了兩次。找出這兩個數字,程式設計實現。 # include<stdio.h> # include<stdlib.h> void Find(int arr[], int size) { int i = 0; in

C語言程式設計題目~2

1、給定兩個整型變數的值,將兩個值的內容進行交換 #include <stdio.h> #include <stdlib.h> int main() { int a = 0; int b = 0; int tmp = 0; // C中規定:定義變數必須放到程

100個經典C語言程式(益智類)

100個經典C語言程式(益智類) 【1.繪製餘弦曲線】 在螢幕上用“*”顯示0~360度的餘弦函式cos(x)曲線 [問題分析與演算法設計] 利用cos(x)的左右對稱性,將螢幕的行方向定義為x,列方向定義為y,則0~180度的圖形與180~360度的圖形是左右對稱的,

c語言題目(數字整除)。。。2014.5.23

定理:把一個至少兩位的正整數的個位數字去掉,再從餘下的數中減去個位數的5倍。當且僅當差是17的倍數時,原數也是17的倍數 。 例如,34是17的倍數,因為3-20=-17是17的倍數;201不是17的倍數,因為20-5=15不是17的倍數。輸入一個正整數n,你的任務是判斷它是否是17的倍數。

[轉]100個經典C語言程式(益智類問題)

目錄: 1.繪製餘弦曲線 2.繪製餘弦曲線和直線 3.繪製圓 4.歌星大獎賽 5.求最大數 6.高次方數的尾數 8.借書方案知多少 9.楊輝三角形 10.數制轉換 11.打魚還是晒網 12.抓交通肇事犯 13.該存多少錢 14.怎樣存錢利最大

C語言筆試演算法題

整數分解 題目描述: 一個正整數有可能可以被表示為n(n>;=2)個連續正整數之和,如: 15=1+2+3+4+5 15=4+5+6 15=7+8 請編寫程式,根據輸入的任何一個正整數,找出符合這種要求的所有連續正整數序列。 輸入資料:一個正整數,以命令列引數的形式提

廣州傳智播客iOS基礎班C語言考試題目(自我感覺挺簡單的,很多老師講的都沒考到,錯了一道選擇題,加油,OC!)

廣州傳智播客iOS基礎班C語言考試題目 考試時間:180分鐘 滿分:100分 及格分數:80分 一、選擇題(共10題,每題5分)  1. 若有陣列 int arr[2][3];  則對a陣列元素的正確訪問是(C )     A. arr(1,2)       B. ar

經典C語言面試題4:位元組對齊的作用

   一、什麼是位元組對齊?     在現代計算機中,記憶體空間都是按照字節(byte)劃分的。從理論上講對任何型別的變數的訪問可以從任何地址開始,但實際情況是,訪問特定型別的變數的時候經常在特定的記憶體地址訪問,這就需要各種型別的資料按照一定規則在空間上排列,而不是順序地一

經典C語言程式設計注意點

1.引言   本文的寫作目的並不在於提供C/C++程式設計師求職面試指導,而旨在從技術上分析面試題的內涵。文中的大多數面試題來自各大論壇,部分試題解答也參考了網友的意見。  許多面試題看似簡單,卻需要深厚的基本功才能給出完美的解答。企業要求面試者寫一個最簡單的strcpy

經典C語言面試題3:位域。

1、為什麼要用位域?     在計算機中,有些資訊儲存時並不需要佔用一個完整的位元組,而只需佔用一個或幾個二進位制位。比如在存放一個只有0和1兩種狀態的開關量時,用一位二進位制位即可表示。因此,為了節省儲存空間,C語言提供了一種稱為“位域”的資料結構來充分利用儲存空間。   

經典C語言面試題2:static關鍵字的用法?

C語言中static關鍵字的用法主要有以下三種:1、在函式體內,static變數的作用範圍為該函式體,該變數的記憶體只能被分配一次,下次呼叫時維持上次的值(即具有記憶功能)。2、在模組內的static全域性變數可以被模組內的所有函式訪問,但是不能被模組外的函式訪問(注:即使在

C語言經典演算法題目——列印水仙花數

 “水仙花”數指的是一個3位數,它的每個位數字的三次冪之和等於它本身 舉一個例子: 153=1x1x1+5x5x5+3x3x3 我們先來看看執行的結果 下面是程式實現的程式碼 #include<stdio.h> int main() {

經典C++筆試題目--100(程式設計練習(比C要難)(91-100))

#include <iostream.h> //定義在標頭檔案"RecurveList.h"中 class List; class ListNode { //連結串列結點類 friend class List; private: int data; //結點資料 List

嵌入式軟體工程師C語言經典筆試

一. 前處理器(Preprocessor)   1.1. 用預處理指令#define 宣告一個常數,用以表明1年中有多少秒(忽略閏年問題)   #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL     1.1.1. 我在這想看到幾件事情:

C語言經典題目:百錢買百雞

百錢買百雞問題 公元錢五世紀,我國古代數學家張丘建在《算經》一書中提出了“百雞問題”:雞翁一值錢五,雞母一值錢三,雞雛三值錢一。百錢買百雞,問雞翁、雞母、雞雛各幾何? 分析:假設公雞有x只,母雞y只,