- 相關(guān)推薦
c語(yǔ)言筆試題目及答案
C語(yǔ)言是一門(mén)通用計算機編程語(yǔ)言,應用廣泛。C語(yǔ)言的設計目標是提供一種能以簡(jiǎn)易的方式編譯、處理低級存儲器、產(chǎn)生少量的機器碼以及不需要任何運行環(huán)境支持便能運行的編程語(yǔ)言。下面是c語(yǔ)言筆試題目及答案,請參考。
c語(yǔ)言筆試題目及答案
一、選擇題((1)~(10)每小題2分,(11)~(50)每小題1分,共60分)
下列各題A)、B)、C)、D)四個(gè)選項中,只有一個(gè)選項是正確的,請將正確的選
項涂寫(xiě)在答題卡相應位置上,答在試卷上不得分。
(1)數據的存儲結構是指________。
A)存儲在外存中的數據 B)數據所占的存儲空間量
C)數據在計算機中的順序存儲方式 D)數據的邏輯結構在計算機中的表示
答案:D
評析:數據的邏輯結構在計算機存儲空間中的存放形式形式稱(chēng)為數據的存儲結構(也稱(chēng)數據的物理結構)。
(2)下列關(guān)于棧的描述中錯誤的是________。
A)棧是先進(jìn)后出的線(xiàn)性表
B)棧只能順序存儲
C)棧具有記憶作用
D)對棧的插入與刪除操作中,不需要改變棧底指針
答案:B
評析:棧是一種特殊的線(xiàn)性表,又稱(chēng)先進(jìn)后出表(FILO—First In Last Out)。
(3)對于長(cháng)度為n的線(xiàn)性表,在最壞情況下,下列各排序法所對應的比較次數中正確的是
________。
A)冒泡排序為n2 B)冒泡排序為n
C)快速排序為n D)快速排序為n(n一1)/2
答案:D
評析:假設線(xiàn)性表的長(cháng)度為n,則在最壞情況下,冒泡排序需要經(jīng)過(guò)n/2遍的從前往后掃描和n/2遍的從后往前掃描,需要比較次數為n(n-1)/2?焖倥判蚍ǖ淖顗那闆r比較次數也是n(n-1)/2。
(4)對長(cháng)度為n的線(xiàn)性表進(jìn)行順序查找,在最壞情況下所需要的比較次數為_(kāi)_______。
A)log2n B)n/2 C)n D)n+l
答案:C
評析:順序查找過(guò)程中,如果被查找的元素是線(xiàn)性表中的最后一個(gè)元素,或者元素不在線(xiàn)性表中,則需要與線(xiàn)性表中所有的元素進(jìn)行比較。對長(cháng)度為n的線(xiàn)性表進(jìn)行順序查找,在最壞情況下需要比較n次。
(5)下列對于線(xiàn)性鏈表的描述中正確的是________。
A)存儲空間不一定是連續,且各元素的存儲順序是任意的
B)存儲空間不一定是連續,且前件元素一定存儲在后件元素的前面
C)存儲空間必須連續,且前件元素一定存儲在后件元素的前面
D)存儲空間必須連續,且各元素的存儲順序是任意的
答案:A
評析:在鏈式存儲結構中,存儲數據結構的存儲空間可以不連續,各數據結點(diǎn)的存儲順序與數據元素之間的邏輯關(guān)系可以不一致,而數據元素之間的邏輯關(guān)系是由指針域來(lái)確定的。
(6)下列對于軟件測試的描述中正確的是________。
A)軟件測試的目的是證明程序是否正確
B)軟件測試的目的是使程序運行結果正確
C)軟件測試的目的是盡可能多地發(fā)現程序中的錯誤
D)軟件測試的目的是使程序符合結構化原則
答案:C
評析:關(guān)于軟件測試的目的,Grenford J.Myers再《The Art of Software Testing》一書(shū)中給出了深刻的闡述,整體來(lái)說(shuō),軟件測試的目的就是盡可能多地發(fā)現程序中的錯誤。
(7)為了使模塊盡可能獨立,要求________。
A)模塊的內聚程度要盡量高,且各模塊間的耦合程度要盡量強
B)模塊的內聚程度要盡量高,且各模塊間的耦合程度要盡量弱
C)模塊的內聚程度要盡量低,且各模塊間的耦合程度要盡量弱
D)模塊的內聚程度要盡量低,且各模塊間的耦合程度要盡量強
答案:B
評析:模塊獨立性是指每個(gè)模塊只完成系統要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡(jiǎn)單。軟件設計,應盡量做到高內聚,低耦合,有利于提高模塊的獨立性。
(8)下列描述中正確的是________。
A)程序就是軟件
B)軟件開(kāi)發(fā)不受計算機系統的.限制
C)軟件既是邏輯實(shí)體,又是物理實(shí)體
D)軟件是程序、數據與相關(guān)文檔的集合
答案:D
評析:計算機軟件是計算機系統中與硬件相互依存的另一部分,是包括程序、數據及相關(guān)文檔的完整集合。
(9)數據獨立性是數據庫技術(shù)的重要特點(diǎn)之一,所謂數據獨立性是指________。
A)數據與程序獨立存放
B)不同的數據被存放在不同的文件中
C)不同的數據只能被對應的應用程序所使用
D)以上三種說(shuō)法都不對
答案:D
評析:數據獨立性是數據與程序間的互不依賴(lài)性,即數據庫中數據獨立于應用程序而不依賴(lài)于應用程序。也就是說(shuō),數據的邏輯結構、存儲結構與存取方式的改變不會(huì )影響應用程序。選項A、B、C三種說(shuō)法都是錯誤的。
(10)用樹(shù)形結構表示實(shí)體之間聯(lián)系的模型是________。
A)關(guān)系模型 B)網(wǎng)狀模型 C)層次模型 D)以上三個(gè)都是
答案:C
評析:層次模型是最早發(fā)展起來(lái)的數據庫模型,它的基本結構是樹(shù)形結構。
(11)算法具有五個(gè)特性,以下選項中不屬于算法特性的是________。
A)有窮性 B)簡(jiǎn)潔性 C)可行性 D)確定性
答案:B
評析:有窮性、確定性、有零個(gè)或多個(gè)輸入、有一個(gè)或多個(gè)輸出、有效性是算法的基本特性。
(12)以下選項中可作為C語(yǔ)言合法常量的是________。
A)-80. B)-080 C)-8e1.0 D)-80.0e
答案:A
評析:c語(yǔ)言的常量分為整型常量、實(shí)型常量和字符型常量。選項A屬于實(shí)型常量中的十進(jìn)制小數形式的表示法,是合法的。
(13)以下敘述中正確的是________。
A)用C程序實(shí)現的算法必須要有輸入和輸出操作
B)用C程序實(shí)現的算法可以沒(méi)有輸出但必須要輸入
C)用C程序實(shí)現的算法可以沒(méi)有輸入但必須要有輸出
D)用C程序實(shí)現的算法可以既沒(méi)有輸入也沒(méi)有輸出
答案:C
評析:算法的特性中包括“有零個(gè)或多個(gè)輸入”及“有一個(gè)或多個(gè)輸出”這兩個(gè)特性。一個(gè)算法得到的結果就是算法的輸出,沒(méi)有輸出的算法是沒(méi)有意義的,所以一個(gè)算法必須至少有一個(gè)輸出。
(14)以下不能定義為用戶(hù)標識符的是________。
A)Main B)_0 C)_int D)sizeof
答案:D
評析:C語(yǔ)言規定標識符只能由字母、數字和下劃線(xiàn)三種符號組成,而且第一個(gè)字符必須是字母或下劃線(xiàn)。注意:大寫(xiě)字母和小寫(xiě)字母被認為是兩個(gè)不同的字符。A中Main與主i函數名main不同。
(15)以下選項中不能作為合法常量的是________。
A)1.234e04 B)1.234e0.4 C)1.234e+4 D)1.234e0
答案:B
評析:指數形式的實(shí)型常量要求字每e(或E)之前必需有數字,且e后面的指數必須為整數,所以本題中選項B非法。
(16)數字字符0的ASCII值為48,若有以下程序
main()
{char a=”1″,b=”2″;
printf(“%c,”,b++);
printf(“%d ”,b-a);
)
程序運行后的輸出結果是________。
A) 3,2 B)50,2 C)2,2 D)2,50
答案:C
評析l執行語(yǔ)句“printf(“%c,ll,b++);”后,b的值變成字符3,執行“printf(“%d ”,b-a);”,即‘3’-‘1’。
(17)有以下程序
main( )
{
int m=12, n=34;
printf(“%d%d”,m++,++n);
printf(“%d%d ”,n++,++m);
}
程序運行后的輸出結果是________。
A)12353514 B)12353513 C)12343514 D)12343513
答案:A
評析:執行“printf(“%d%d”m++,++n);”后,輸出的是m和n+l的值1235,接著(zhù)執行
“printf(“%d%d\n”,n++,++m);”輸出n和m+l的值3514。
(18)有定義語(yǔ)句:int b;char c[10】;,則正確的輸入語(yǔ)句是________。
A) scanf("%d%s",&b,&C); B) scanf("%d%s",&b,C);
C) scanf("%d%s",b,C); D) scanf("%d%s",b,&C);
答案:B
評析:scanf函數中的“格式控制”后面應當是地址,而不是變量名。對于變量,通過(guò)地址運算符“&”求出內存中的地址;對于數組c[10],數組名c即為數組在內存中的地址。
(19)有以下程序
main()
{int m,n,p;
scanf(“m=%dn=%dp=%d”,&m,&n,&p);
printf(“%d%d%d\n”,m,n,p);
}
若想從鍵盤(pán)上輸入數據,使變量m中的值為123,n中的值為456,p中的值為789,
則正確的輸入是________。
A) m。123n=456p=789 B) m=123 n=456 p=789
C) m=123,n=456,p=789 D) 123 456 789
答案:A
評析:根據本題的數據輸入形式“scanf(“m=%dn=%dp=%d”&m,&n,&p);”說(shuō)明在輸入數據時(shí),必須輸入“m=”、“n=”、“p=”字符,且中間不能含有空格。
(20)有以下程序
main()
{ int a,b,d=25;
a=d/10%9;
b=a&&(-1);
printf(”%d,%d\n”,a,b);
}
程序運行后的輸出結果是________。
A)6,l B)2,l C)6,0 D)2,0
答案:B
評析:本題中“a=d/10%9;”的值為25/10%9=2; “b=a&&(-1);”為2&&(-1)=1(注意:-1表示真,只有O才表示假),所以a,b的值分別為2,1。
(21)有以下程序
main()
{
int i=1 j=2,k=3;
if(i++==1&&(++j==3||k++==3))
printf(“%d%d%d\n”,i,j,k);
}
程序運行后的輸出結果是________。
A)l 2 3 B)2 34 C) 2 2 3. D)2 3 3
答案:D
評析:執行“i++==1&&(++j==3‖k++==3)”時(shí),表達式“i++==1”嗨值為真,其值為1,表達式“++j=3”的值為真,根據短路原理,右邊的表達式“k++==3”不再進(jìn)行運算。括號中表達的值為l,作與運算后整個(gè)表達式的值也為l,輸出i.j,k時(shí),由于未執行過(guò)k,所以它們的值分別為2,3,3。
(22)若整型變量a、b、c、d中的值依次為:1、4、3、2。則條件表達式a<b?a:c<d?c:d的值是________。
A)l B)2 C)3 D)4
答案:A
評析:條件表達式的一般形式為:表達式17表達式2:表達式3
本題先求的是a<b的值,為真,所以整個(gè)表達式“a<b?a:c<d?c:d”的值為a的值1。
(23)有以下程序
main( )
{
int p[8]={11,12,13,14,15,16,17,18},i=O,j=0;
while(i++<7)if p[i]%2)j+-=p[i];
printf(“%d\n”,j);
}
程序運行后的輸出結果是________。
A)42 B)45 C)56 D)60
答案:B
評析:本程序的作用是求除p[O]外的其它奇數的和。
(24)有以下程序
main()
{
char a[7]= “a0\OaO\0”; int i,j;
i=sizeof(a);j=strlen(a);
printf(“%d%d\n”,i,j);
)
程序運行后的輸出結果是________。
A)2 2 B)76 C)7 2 D)6 2
答案:C
評析:c語(yǔ)言中以‘\0’作為字符串的結束符,且strlen()函數計算的是‘\0’字符前的所有字符的個(gè)數。數組定義以后系統就為其分配相應大小的內存空間,而不論其中有沒(méi)有內容。
(25)以下能正確定義一維數組的選項是________。
A)int a[5]={0,1,2,3,4,5; B)char a[]={0,1,2,3,4,5};
C)char a={’A’,’B’,’C’}; D)int a[5]=”0123″;
答案:B
評析:選項A中定義的是5個(gè)數組元素,但賦值的時(shí)候賦的是6個(gè)元素,所以出錯;選項c不符合數組定義形式,數組名后應加上“[]”;選項D的類(lèi)型說(shuō)明符錯誤,如果用char定義就對了;選項B中的0,1,2,3,4,5分別表示對應字符的ASCII碼,所以選項B是正確的。
(26)有以下程序
int fl(int x,int y){return x>y?x:y;}
int f2(int x,int y){return x>y?y:x;}
main()
{
int a=4,b=3,c=5,d=2,e,f,g;
e=f2(f1(a,b),f1(c,d));f=fl(f2(a,b),f2(c,d));
g=a+b+c+d-e-f;
printf(“%d,%d,%d\n”,e,f,g);
)
程序運行后的輸出結果是________。
A)4,3,7 B)3,4,7 C)5,2,7 D)2,5,7
答案:A
評析:函數n的功能是返回兩個(gè)數中比較大的值,f2的功能是返回兩個(gè)數中比較小的值。
(27)已有定義:char a[]=”xyz”,b[]={’x’,’y’,’z};,以下敘述中正確的是________。
A)數組a和b的長(cháng)度相同 B)a數組長(cháng)度小于b數組長(cháng)度
C)a數組長(cháng)度大于b數組長(cháng)度 D)上述說(shuō)法都不對
答案:C
評析:c語(yǔ)言規定‘\0’為字符串結束標志。所以“char a[]=“xyz””的數組長(cháng)度為4,而“b[]={‘x’,‘y’,‘z’};”的數組長(cháng)度為3,數組長(cháng)度與strlen函數所求的長(cháng)度不同,本題是指數組占內存空間的大小。
(28)有以下程序
Void f(int *x, int *y)
{
int t;
t= *x; *x=*y;’*y=t;
)
main( )
{
int a[8]={1,2,3,4,5,6,7,8},i,*p,*q;
p=a;q=&a[7];
while(p<q)
{f(p,q); p++; q–;} 。
for(i=0;i<3;i++) printf(“%d”,a[1][i]);
}
程序運行后的輸出結果是________。
A)8,2,3,4,5,6,7,1, B)5,6,7,8,1,2,3,4.
C)1,2,3,4,5,6,7,8, D)8,7,6,5,4,3,2,l,
答案:D
評析;本程序中函數f的作用是交換指針變量x和y所指向的存儲單元的值。
(29)有以下程序
main()
{
im a[3][3],*p,i;
p=&a[0][o];
for(i=0;j<9;i++) p[i]=I;
for(i=0;j<3;i++)printf(“%d”,a[1][i]);
)
程序運行后的輸出結果是________。
A)012 B)123 C)234 D)345
答案:D
評析:本題賦值后,a的數組元素的值分別為a[01[0]=0,a[0][1]=1,a[0][2]=2,a[1][0]=3,a[1][1]=4,a[1][2]=5,a[2][0]=6,a[2][1]=7,a[2][2]=8,故本題輸出的值為345。
(30)以下敘述中錯誤的是________。
A)對于double類(lèi)型數組,不可以直接用數組名對數組進(jìn)行整體輸入或輸出
B)數組名代表的是數組所占存儲區的首地址,其值不可改變
C)當程序執行中,數組元素的下標超出所定義的下標范圍時(shí),系統將給出“下標越
界”的出錯信息
D)可以通過(guò)賦初值的方式確定數組元素的個(gè)數
答案:C
評析:在c語(yǔ)言中,如果出現下標越界的情況,系統不管在編譯還是執行時(shí)都不會(huì )給出“下標越界”的錯誤提示。
(31)有以下程序
#define N20
fun(int a[],int n,int m)
{ int i,j;
for(i=m;i>=n;i–)a[i+1]=a[i];
}
main()
{
int i,a[N]={1,2,3,4,5,6,7,8,9,10};
fun(a,2,9);
for(i=O;i<5;i++) printf(“%d”,a[i]);
}
程序運行后的輸出結果是________。
A)10234 B)12344 C)12334 D)12234
答案:C
評析:本題函數fun的作用是將指定的數組元素(從下標n到下標m)向后移一位。由函數調用“fun(a,2,9);”可知,函數fun用于將a[2]到a[9]的各元素依次向后移一位,移完后,a數組中各元素的值分別為1,2,3,3,4,5,6,7,8,9,10,故輸出的前5個(gè)數組元素為12334。
(32)有以下程序
main()
{
int a[3][2]={0},(*ptr)[2],i,j;
for(i=0;i<2;i++) {ptr=a+i; scanf(“%d”,ptr); ptr++;}
for(i=0;i<3;i++)
{ for(i=0;j<2;j++) printf(“%2d”,a[i][j]);
printf(“\n”);
}
}
若運行時(shí)輸入:1 2 3<回車(chē)>,則輸出結果是________。
A)產(chǎn)生錯誤信息
B)l0 C)l 2 D)l 0
2 O 3 0 2 0
0 0 0 O 3 0
答案:B
評析:二維數組a,通過(guò)a[3][2]={0}將數組中的各個(gè)元素初始化為0,指針變量ptr,指向包含2個(gè)元素的一維數組。a[0][0]:l,a[1][0]=2,故本題的輸出選B。
(33)有以下程序
prt(int *m, int n)
{ int i;
for(i=O;i<n;i++) m[i]++;
)
main()
{
int a[]={ 1,2,3,4,5 },i;
prt(a,5);
for(i=O;i<5;i++)
printf(“%d,”,a[i]);
程序運行后的輸出結果是________。
A)l,2,3,4,5, B)2,3,4,5,6, C)3,4,5,6,7, D)2,3,4,5,1,
答案:B
評析:用數組名作函數實(shí)參時(shí),不是把數組的值傳遞給形參,而是把實(shí)參數組的起始地址傳遞給形參數組,這樣兩個(gè)數組就共同占用同一段內存單元。
(34)有以下程序
main()
{ int a[]={1,2,3,4,5,6,7,8,9,0},*p;
for(p=a;p<a+10;p++)printf(“%d,”,*p);
}
程序運行后的輸出結果是________。
A)l,2,3,4,5,6,7,8,9,0, B)2,3,4,5,6,7,8,9,10,1,
C)0,1,2,3,4,5,6,7,8,9, D)l,l,1,l,l,l,l,l,l,l,
答案:A
評析:c語(yǔ)言規定數組變量名代表數組的首地址,即第0號元素的地址。本題將a數組中的值全部輸出,即為l,2,3,4,5,6,7,8,9,0,。
(35)有以下程序
#define P 3
void F(int x){return(P*x*x);}
main()
{printf(“%d\n”,F(3+5));}
程序運行后的輸出結果是________。
A)192 B)29 C)25 D)編譯出錯
答案:D
評析:return語(yǔ)句用于從被調函數帶回一個(gè)函數值。void關(guān)鍵字表示“無(wú)類(lèi)型”,即不需要從被調函數中帶回函數值,所以不需要return語(yǔ)句,故編譯時(shí)出錯。
(36)有以下程序
main()
{int c=35;printf(“%d\n”,c&C);}
程序運行后的輸出結果是________。
A)0 B)70 C)35 D)1
答案:C
評析:按位“與”時(shí),1&1=1,其他都等O。因為本題中相與的兩個(gè)值相等,即對應位上的二進(jìn)制值相等,所以“與”的結果也即為其值本身。
(37)以下敘述中正確的是________。
A)預處理命令行必須位于源文件的開(kāi)頭
B)在源文件的一行上可以有多條預處理命令
C)宏名必須用大寫(xiě)字母表示
D)宏替換不占用程序的運行時(shí)間
答案:D
評析:通常,預處理命令位于源文件的開(kāi)頭,也可以寫(xiě)在函數與函數之間;不能在一行上寫(xiě)多條預處理命令:宏名一般習慣用大寫(xiě)字母表示,以便與變量名相區別,但這并非規定,也可用小寫(xiě)字母。
(38)若有以下說(shuō)明和定義
union dt
{int a;har b;ouble c;}data;
以下敘述中錯誤的是________。
A)data的每個(gè)成員起始地址都相同
B)變量data所占的內存字節數與成員c所占字節數相等
C)程序段:data.a(chǎn)=5;pintf(“%f ”,data.C);輸出結果為5.000000
D)data可以作為函數的實(shí)參
答案:C
評析:union是表示共用體的關(guān)鍵字,成員a,b,c共占用同一個(gè)內存空間,data的每個(gè)成員起始地址都相同;共用體變量所占的內存長(cháng)度等于最長(cháng)的成員的長(cháng)度,故變量’data所占的內存字節數與成員c所占字節數相等;執行“data.a(chǎn)=5;printf(“%f ”,data.C);”printf函數只是將內存中的數據以不同的類(lèi)型輸出,而不能將內存中的整型數據自動(dòng)轉換為等值的浮點(diǎn)數,故C是錯誤的。
(39)以下語(yǔ)句或語(yǔ)句組中,能正確進(jìn)行字符串賦值的是________。
A)char*sp;*sp=”right!”; B)char s[lO];s=”right! “;
C)char s[10];*s=”right! “; D)char*sp=”right! “;
答案:D
評析:選項A定義了字符型的指針變量sp,則*sp存儲的是第一個(gè)字符,而給它賦的是字符串,故錯;
選項B表示代表數組的首地址,而題中給它賦的是字符串,所以錯誤;
選項c定義了一個(gè)字符型的數組s[10],再通過(guò)+s給數組元素賦初值,這時(shí)是與選項A相同的錯誤。
(40)設有如下說(shuō)明
typedef struct ST
{long a; int b; char c[2];}NEW;
則下面敘述中正確的是________。
A)以上的說(shuō)明形式非法 B)ST是一個(gè)結構體類(lèi)型
C)NEW是一個(gè)結構體類(lèi)型 D)NEW是一個(gè)結構體變量
答案:C
評析:typedef關(guān)鍵字用于聲明一個(gè)新的類(lèi)型名代替已有的類(lèi)型名。
本題中如果沒(méi)有用typedef進(jìn)行定義的話(huà),則struct ST為結構體類(lèi)型,現在用typedef定義后,相當于用NEW代表了struct ST這一結構體類(lèi)型,故NEW為結構體類(lèi)型。
(41)有以下程序
main()
{ int a=1,b;
for(b=l;b<10;b++)
{ if(a>=8)break;
if(a%2==1){a+=5;continue;}
a-=3;
)
printf(“%d\n”,b);
}
程序運行后的輸出結果是________。
A) 3 B)4 C) 5 D) 6
答案:B
評析:break和continue的區別是:continue語(yǔ)句只結束本次循環(huán),而不是終止整個(gè)循環(huán)的執行;而break語(yǔ)句則是結束整個(gè)循環(huán)過(guò)程,.不再判斷執行的條件是否成立。
(42)有以下程序
main()
{ char s[]=”l 59″,*p;
p=s;
printf(“%c”,*p++);printf(“%c”,*p++);
}
程序運行后的輸出結果是________。
A)15 B)16 C)12 D)59
答案:A
評析:本題通過(guò)“p=s”將指針變量p指向字符數組s,在第一次輸出時(shí),由于++和*為同一優(yōu)先級,“*p++”相于“+(p++)”。p指向s[1],輸出為s[1]的值。
【c語(yǔ)言筆試題目及答案】相關(guān)文章:
華為C筆試題目07-11
最新華為C語(yǔ)言筆試題目分享07-11
軟件筆試題目及答案07-03
c語(yǔ)言華為筆試題(上)07-11
c語(yǔ)言試題及答案07-03
華為C/C++筆試題07-11
諾基亞 筆試的 題目07-12
2017匯豐銀行筆試題目以及答案06-25
華為C/C++筆試題系列二07-11