C語言筆試題目
C語言是現(xiàn)今社會重要的編程語言之一。C語言筆試問題有哪些呢?我們來看看吧。
C語言筆試題目:
1.Ethternet鏈接到Internet用到以下那個協(xié)議? D
A.HDLC;B.ARP;C.UDP;D.TCP;E.ID
2.屬于網(wǎng)絡層協(xié)議的是:( B C)
A.TCP;B.IP;C.ICMP;D.X.25
3.Windows消息調(diào)度機制是:(C)
A.指令隊列;B.指令堆棧;C.消息隊列;D.消息堆棧;
4.Windows下的內(nèi)存是如何管理的?
分頁管理
5.談談IA32下的分頁機制
小頁(4K)兩級分頁模式,大頁(4M)一級
6.給兩個變量,如何找出一個帶環(huán)單鏈表中是什么地方出現(xiàn)環(huán)的?
一個遞增一,一個遞增二,他們指向同一個接點時就是環(huán)出現(xiàn)的地方
7.請問以下代碼有什么問題:
1).
int main()
{
char a;
char *str=&a;
strcpy(str,"hello");
printf(str);
return 0;
}
答;沒有為str分配內(nèi)存空間,將會發(fā)生異常
問題出在將一個字符串復制進一個字符變量指針所指地址。雖然可以正確輸出結果,但因為越界進行內(nèi)在讀寫而導致程序崩潰。
Strcpy的在庫函數(shù)string.h中.程序的主要錯誤在于越界進行內(nèi)存讀寫導致程序崩潰//
2).
char* s="AAA";
printf("%s",s);
s[0]='B';
printf("%s",s);
有什么錯?
答: "AAA"是字符串常量。s是指針,指向這個字符串常量,所以聲明s的時候就有問題。
cosnt char* s="AAA";
然后又因為是常量,所以對是s[0]的賦值操作是不合法的。
8. 什么是預編譯,何時需要預編譯:
答: 就是指程序執(zhí)行前的一些預處理工作,主要指#表示的.
何時需要預編譯?
1)、總是使用不經(jīng)常改動的大型代碼體。
2)、程序由多個模塊組成,所有模塊都使用一組標準的包含文件和相同的編譯選項。在這種情況下,可以將所有包含文件預編譯為一個預編譯頭。
9. 下述三個有什么區(qū)別?
char * const p;
char const * p
const char *p
解答:
char * const p; //常量指針,p的值不可以修改
char const * p;//指向常量的指針,指向的常量值不可以改
const char *p; //和char const *p
10、請找出下面代碼中的所有錯誤 (題目不錯,值得一看)
說明:以下代碼是把一個字符串倒序,如“abcd”倒序后變?yōu)?ldquo;dcba”
#include"string.h"
main()
{
char*src="hello,world";
char* dest=NULL;
int len=strlen(src);
dest=(char*)malloc(len);
char* d=dest;
char* s=src[len];
while(len--!=0)
d++=s--;
printf("%s",dest);
return 0;
}
答:
方法1:一共有4個錯誤;
int main()
{
char* src = "hello,world";
int len = strlen(src);
char* dest = (char*)malloc(len+1);//要為分配一個空間 char* d = dest;
char* s = &src[len-1]; //指向最后一個字符
while( len-- != 0 )
*d++=*s--;
*d = 0; //尾部要加’\0’
printf("%sn",dest);
free(dest); // 使用完,應當釋放空間,以免造成內(nèi)存匯泄露
dest = NULL; //防止產(chǎn)生野指針
return 0;
}
方法2: (方法一需要額外的存儲空間,效率不高.) 不錯的想法
#include
#include
main()
{
char str[]="hello,world";
int len=strlen(str);
char t;
for(int i=0; i
{
t=str[i];
str[i]=str[len-i-1]; //小心一點
str[len-i-1]=t;
}
printf("%s",str);
return 0;
}
11.對于一個頻繁使用的短小函數(shù),在C語言中應用什么實現(xiàn),在C++中應用什么實現(xiàn)?
c用宏定義,c++用inline
12.直接鏈接兩個信令點的一組鏈路稱作什么?
PPP點到點連接
13.接入網(wǎng)用的是什么接口?
V5接口
14.voip都用了那些協(xié)議?
H.323協(xié)議簇、SIP協(xié)議、Skype協(xié)議、H.248和MGCP協(xié)議
15.軟件測試都有那些種類?
黑盒:針對系統(tǒng)功能的測試
白盒:測試函數(shù)功能,各函數(shù)接口
16.確定模塊的功能和模塊的接口是在軟件設計的那個隊段完成的?
概要設計階段
17.
unsigned char *p1;
unsigned long *p2;
p1=(unsigned char *)0x801000;
p2=(unsigned long *)0x810000;
請問p1+5= ;
p2+5= ;
答案:0x801005(相當于加上5位) 0x810014(相當于加上20位);
18、關鍵字const有什么含意?
答 :1)表示常量不可以修改的`變量。
2)可以修飾參數(shù),作為輸入?yún)?shù).
3)修飾函數(shù),防止以外的改動.
4)修飾類的成員函數(shù),不改變類中的數(shù)據(jù)成員.
19、關鍵字volatile有什么含意?并舉出三個不同的例子?
答: 提示編譯器對象的值可能在編譯器未監(jiān)測到的情況下改變。
例子: 硬件時鐘;多線程中被多個任務共享的變量等
20. int (*s[10])(int) 表示的是什么啊
int (*s[10])(int) 函數(shù)指針數(shù)組,每個指針指向一個int func(int param)的函數(shù)。
21.有以下表達式:
int a=248; b=4;int const c=21;const int *d=&a;
int *const e=&b;int const *f const =&a;
請問下列表達式哪些會被編譯器禁止?為什么?
答:*c=32;d=&b;*d=43;e=34;e=&a;f=0x321f;
*c 這是個什么東東,禁止
*d 說了是const, 禁止
e = &a 說了是const 禁止
const *f const =&a; 禁止
22.交換兩個變量的值,不使用第三個變量。即a=3,b=5,交換之后a=5,b=3;
答:有兩種解法, 一種用算術算法, 一種用^(異或)
a = a + b;
b = a - b;
a = a - b;
or
a = a^b;// 只能對int,char..
b = a^b;
a = a^b;
or
a ^= b ^= a;
23.c和c++中的struct有什么不同?
答: c和c++中struct的主要區(qū)別是c中的struct不可以含有成員函數(shù),而c++中的struct可以。c++中struct和class的主要區(qū)別在于默認的存取權限不同,struct默認為public,而class默認為private.
24.#include
#include
void getmemory(char *p)
{
p=(char *) malloc(100);
}
int main( )
{
char *str=NULL;
getmemory(str);
strcpy(p,"hello world");
printf("%s/n",str);
free(str);
return 0;
}
答: 程序崩潰,getmemory中的malloc 不能返回動態(tài)內(nèi)存, free()對str操作很危險
25.char szstr[10];
strcpy(szstr,"0123456789");
產(chǎn)生什么結果?為什么?
答;正常輸出,長度不一樣,會造成非法的OS,覆蓋別的內(nèi)容.
26.列舉幾種進程的同步機制,并比較其優(yōu)缺點。
答:原子操作
信號量機制
自旋鎖
管程,會合,分布式系統(tǒng)
27.進程之間通信的途徑
答 共享存儲系統(tǒng)
消息傳遞系統(tǒng)
管道:以文件系統(tǒng)為基礎
【C語言筆試題目】相關文章:
C語言筆試題目及答案05-07
華為c語言筆試題07-23
有趣的C語言筆試題06-09
計算機二級C語言筆試題目05-15
關于C語言游戲開發(fā)筆試題06-19
中興通訊C++/C筆試題06-20
it筆試題目07-07
會計筆試常見筆試題目06-20
聯(lián)想C++筆試題05-07