第 1 頁:選擇題 |
第 3 頁:程序填空題 |
第 4 頁:程序修改題 |
第 5 頁:程序設計題 |
11[單選題] 下列數據結構中,屬于非線性結構的是( )。
A.循環隊列
B.帶鏈隊列
C.二叉樹
D.帶鏈棧
參考答案:C
參考解析:樹是簡單的非線性結構,所以二叉樹作為樹的一種也是一種非線性結構。
12[單選題] 若有以下程序段:
程序運行后的輸出結果是( )。
A.16
B.8
C.4
D.2
參考答案:C
參考解析:本題考查位運算,屬于基礎知識,題目中將整型變量8,二進制表達為00001000,右移一位為00000100,即4,選項C正確。
13[單選題] 對于循環隊列,下列敘述中正確的是( )。
A.隊頭指針是固定不變的
B.隊頭指針一定大于隊尾指針
C.隊頭指針一定小于隊尾指針
D.隊頭指針可以大于隊尾指針,也可以小于隊尾指針
參考答案:D
參考解析:循環隊列的隊頭指針與隊尾指針都不是固定的,隨著入隊與出隊操作要進行變化。因為是循環利用的隊列結構,所以隊頭指針有時可能大于隊尾指針,有時也可能小于隊尾指針。
14[單選題] 設有定義:
char*c;
以下選項中能夠使c正確指向一個字符串的是( )。
ABCD參考答案:A
參考解析:A選項為正確用法,先將字符串存于字符數組中,然后將數組名賦給字符指針(數組名代表數組首地址,定義數組時為其分配確定地址)。C選項錯誤,getchar()函數只能輸入一個字符給字符型變量,而不是字符指針。B選項和D選項有類似的錯誤,兩個選項并無語法錯誤,但運行時可能會出現問題。因為在B選項和D選項中,字符指針沒有被賦值,是個不確定的值,指向一個不確定的內存區域。這個區域可能存放有用的指令或致據。在這個不確定的區域重新存放字符串,可能會發生無法預知的錯誤。因此A選項正確。
15[單選題] 若變量已正確定義,在if(W)printf(”%d\n”,k);中,以下不可替代w的是( )。
A.a<>b+c
B.ch=getchar()
C.a==b+c
D.a++
參考答案:A
參考解析:選項A是非法的表達式,C語言中沒有<>運算符。
16[單選題] 下列排序方法中,最壞情況下比較次數最少的是( )。
A.冒泡排序
B.簡單選擇排序
C.直接插入排序
D.堆排序
參考答案:D
參考解析:冒泡排序與筒單插入排序與簡單選擇排序法在最壞情況下均需要比較n(n-1)/2次,而堆排序在最壞情況下需要比較的次數是nlog2n。
17[單選題] 有以下程序:
程序運行后的輸出結果是( )。
A.500
B.401
C.503
D.1404
參考答案:C
參考解析:本題重點考察函數的定義和調用,第一次循環,a=0,i=0,返回值a=0*0+1+0=1;第二次循環,a=1,i=10,返回值a=10*10+1+1=102;第三次循環,a=102,i=20,返回值a=20*20+1+102=503;第四次循環,a=503,i=30;不符合i<30,跳出循環,最后結果輸出a=503。
18[單選題] 數據庫管理系統是( )。
A.操作系統的一部分
B.在操作系統支持下的系統軟件
C.一種編譯系統
D.一種操作系統
參考答案:B
參考解析:數據庫管理系統是數據庫的機構,它是一種系統軟件,負責數據庫中數據組織、數據操縱、數據維護、控制及保護和數據服務等。是一種在操作系統之上的系統軟件。
19[單選題] 有以下函數:
該函數的功能是( )。
A.計算s所指字符串的長度
B.比較兩個字符串的大小
C.計算s所指字符串占用內存字節的個數
D.將s所指字符串復制到字符串t中
參考答案:A
考解析:首先char*s接受一個字符型數組的首地址并將這個首地址賦給另一個字符型指針char*t,while(*t++)不斷循環直到*t為'\0',再將t-1,這時字符指針t指向字符串的最后一個字符,又因為s指向字符數組的首地址即字符串的首地址所以return(t-s)便是返回字符數組中字符串的長度。
20[單選題] 以下選項中,能用作用戶標識符的是( )。
A._0_
B.8_8
C.void
D.unsigned
參考答案:A
參考解析:C語言中標識符由字母、下劃線、數字組成,且開頭必須是字母或下劃線。另外,關鍵字不能作為標識符。B中以數字8開頭,所以錯誤。C與D中用的是關鍵字void與unsigned,所以錯誤。
21[單選題] 以下敘述中錯誤的是( )。
A.使用三種基本結構構成的程序只能解決簡單問題
B.結構化程序由順序、分支、循環三種基本結構組成
C.C語言是一種結構化程序設計語言
D.結構化程序設計提倡模塊化的設計方法
參考答案:A
參考解析:使用順序,選擇(分支),循環三種基本結構構成的程序可以解決所有問題,而不只是解決簡單問題,所以A錯誤。
22[單選題] 下列敘述中正確的是( )。
A.棧是“先進先出”的線性表
B.隊列是“先進后出”的線性表
C.循環隊列是非線性結構
D.有序線性表既可以采用順序存儲結構,也可以采用鏈式存儲結構
參考答案:D
參考解析:棧是先進后出的線性表,所以A錯誤;隊列是先進先出的線性表,所以B錯誤;循環隊列是線性結構的線性表,所以C錯誤。
23[單選題] 有以下程序:
程序運行后的輸出結果是( )。
A.2,1,1,2
B.1,2,1,2
C.2,1,2,1
D.1,2,2,1
參考答案:D
參考解析:int m=1,n=2,*P=&m,*q=&n,*r;即指針變量p指向m,指針變量q指向n,r=p;p=q;q=r;即通過指針變量r,將指針p和指針q的指向交換。因此最后輸出1,2,2,1。
24[單選題] 有以下程序:
若想通過鍵盤輸入,使得a1的值為12,a2的值為34,cl的值為字符a,c2的值為字符b,程序運行后的輸出結果是:l2,a,34,b。則正確的輸入格式是(以下︺代表空格,代表回車)( )。
ABCD參考答案:D
參考解析:在輸入多個數據時,若格式控制串中無非格式字符,則認為所有輸人的字符均為有效字符。所以應按選項D的順序輸入數據。
25[單選題] 以下不構成無限循環的語句或語句組是( )。
A.n=0:
do{++n;}while(n<=0);
B.n=0;
while(1){n++;}
C.n=10;
while(n);{n--;}
D.for(n=0,i=1;;i++)n+=i;
參考答案:A
參考解析:選項A中do后面的語句只執行了一次便結束了循環;B選項中條件while(1)永遠成立,所以是死循環;C選項中n的值為10,而循環體為空語句,所以wilile(n)永遠為真,進入死循環;D選項中for語句第二個表達式為空,所以沒有判別條件,進入死循環。
26[單選題] 若a是數值類型,則邏輯表達式(a==1)||(a!=1)的值是( )。
A.1
B.0
C.2
D.不知道a的值,不能確定
參考答案:A
參考解析:邏輯或”||”要求只要兩邊的運算對象有一個非零,結果就為真。雖然不知道a的值,但是若a為l,則左邊運算對象為1;若a的值不是1,則右邊運算對象的值為1,所以總能保證一邊非零,所以結果為真,即1。
27[單選題] 有以下程序:
程序運行后的輸出結果是( )。
A.9
B.8
C.7
D.10
參考答案:A
參考解析:題目中靜態局部變量a,在靜態存儲區內分配存儲單元,在程序整個運行期間都不釋放。所以第一次調用函數執行n+=a++;時a先與n相加在再進行自增。n的值為4,a的值為2,且a變量執行完后空間沒有釋放。再執行s=s+f
28[單選題] 程序中已構成如下圖所示的不帶頭結點的單向鏈表結構,指針變量s、p、q均已正確定義,并用于指向鏈表結點,指針變量s總是作為指針指向鏈表的第一個結點。
若有以下程序段:
該程序段實現的功能是( )。
A.刪除尾結點
B.尾結點成為首結點
C.刪除首結點
D.首結點成為尾結點
參考答案:D
參考解析:本題考查鏈表的操作,本題中首先是s指向了它的下個結點,題目中說明了s總是指向鏈表的第一個結點,然后while循環找到鏈表的最后一個元素,然后最后一個元素指向了之前鏈表的頭結點,之前頭結點指向了空結點,所以本題實現的功能是使首結點成為尾結點。選項D正確。
29[單選題] 有以下程序(說明:字母A的ASCIl碼值是65):
程序運行后的輸出結果是( )。
A.BT
B.YE
C.YT
D.BY
參考答案:B
參考解析:本題中執行fun(a)時,會取字符串a的第一個字母B,因為字母B的ASCII碼值為66,所以不會輸出字母8,函數只會輸出ASCII碼值為奇數的字母,字母Y的ASCIl碼值為89,字母T的ASCII碼值為84,字母E的ASCII碼值為69。因此B選項正確。
30[單選題] 下列選項中不屬于結構化程序設計原則的是( )。
A.可封裝
B.自頂向下
C.模塊化
D.逐步求精
參考答案:A
參考解析:結構化程序設計的思想包括:自頂向下、逐步求精、模塊化、限制使用goto語句,所以選擇A。
31[單選題] 某二叉樹有5個度為2的結點,則該二叉樹中的葉子結點數是( )。
A.10
B.8
C.6
D.4
參考答案:C
參考解析:根據二叉樹的基本性質3:在任意一棵二叉樹中,度為0的葉子結點總是比度為2的結點多一個,所以本題中是5+1=6個。
32[單選題] 有以下程序:
程序運行后的輸出結果是( )。
A.1*1=11*2=21*3=3
2*2:42*3=6
3*3=9
B.1*1=11*2=21*3=3
2*1=22*2=4
3*1=3
C.1*1=1 .
1*2=22*2=4
1*3=32*3=63*3=9
D.1*1=1
2*1=22*2=4
3*1=33*2=63*3=9
參考答案:A
參考解析:外循環第一次i的值為1,內循環第一次j的初值為1,打印1*1=1;內循環第二次j的值為2,打印1+2=2;內循環第三次j的值為3,打印l*3=3,打印回車換行,退出內循環。外循環第二次i的值為2,內循環第一次j的初值為2,打印2*2=4;內循環第二次j的值為3,打印2*3=6,打印回車換行.退出內循環。外循環第三次i的值為3,內循環第一次j的初值為3.打印3*3=9,打印回車換行,退出內循環。
33[單選題] 以下關于宏的敘述中正確的是( )。
A.宏替換沒有數據類型限制
B.宏定義必須位于源程序中所有語句之前
C.宏名必須用大寫字母表示
D.宏調用比函數調用耗費時間
參考答案:A
參考解析:宏定義寫在函數的花括號外邊,作用域為其后的程序,通常在文件的最開頭,所以B選項中宏定義必須位于源程序中所有語句之前是錯誤的:宏名一般用大寫.但不是必須用大寫,所以C選項錯誤。宏展開不占運行時間,只占編譯時間,函數調用占運行時間(分配內存、保留現場、值傳遞、返回值),所以D選項錯誤。
34[單選題] 有以下程序:
程序運行后的輸出結果是( )。
A.11
B.9
C.6
D.7
參考答案:C
參考解析:strepy:字符串拷貝函數;strlen:求字符串長度函數(注意:不包含字符串結束標識符‘\0’);strcat:字符串連接函數。執行完語句strcat(p,r);后,p數組中存儲的元素為a,b,c,d,a,b,c,d,e;執行語句strcpy(p+strlen(q),q);得到的結果是將q所指向的字符串拷貝至p+strlen(q)開始的存儲位置,因為strlen的值為3,即從p+3開始存儲q中的元素。所以執行完strepy(p+strhn(q),q)語句后,字符數組p[20]的存儲元素為a b,e,a,b,c;所以strlen(p)的結果為6。因此C選項正確。
35[單選題] 支持子程序調用的數據結構是( )。
A.棧
B.樹
C.隊列
D.二叉樹
參考答案:A
參考解析:棧支持子程序調用。棧是一種只能在一端進行插入或刪除的線性表,在主程序調用子函數時要首先保存主程序當前的狀態,然后轉去執行子程序,最終把子程序的執行結果返回到主程序中調用子程序的位置,繼續向下執行,這種調用符合棧的特點,因此本題的答案為A。
36[單選題] 有以下程序:
程序運行后的輸出結果是( )。
A.*2*6
B.*3*5
C.*5
D.*7
參考答案:D
參考解析:d0...while語句是先執行后判斷,所以第一次先執行循環體,判斷i%3==1的條件,由于i為5,所以余數為2.條件不成立,執行i++,i的值為6,判斷while條件為真;第二次執行循環體,同第一次循環的執行過程一樣,i的值變為7,判斷while條件為真;第三次執行循環體,此時i%3==1,條件成立,再判斷i%5==2也成立,打印t與i的值,即*7,然后執行break語句,跳出循環。所以選擇D選項。
37[單選題] 有以下程序:
以上程序執行后abc.dat文件的內容是( )。
A.China
B.Chinang
C.ChinaBeijing
D.BeijingChina
參考答案:B
參考解析:本題考查文件操作函數,fwrite和rewind函數,題目中先是將a2字符串寫入adc.dat中,然后將寫指針回到文件開頭,然后寫入sl字符串,那么s1字符串就將前5個字符覆蓋,所以最終結果為Chinang,選項B正確。
38[單選題] 軟件詳細設計生產的圖如右圖:
該圖是( )。
A.N-S圖
B.PAD圖
C.程序流程圖
D.E-R圖
參考答案:C
參考解析:N-S圖提出了用方框圖來代替傳統的程序流程圖,所以A不對。PAD圖是問題分析圖,它是繼承程序流程圖和方框圖之后提出的又一種主要用于描述軟件詳細設計的圖形表示工具,所以B不對。E-R圖是數據庫中的用于表示E-R模型的圖示工具,所以D不對。根據圖中所示表示方法是進行軟件詳細設計時使用的程序流程圖。
39[單選題] 將E-R圖轉換為關系模式時,實體和聯系都可以表示為( )。
A.屬性
B.鍵
C.關系
D.域
參考答案:C
參考解析:從E-R圖到關系模式的轉換是比較直接的,實體與聯系都可以表示成關系,E—R圖中屬性也可以轉換成關系的屬性。記
40[單選題] 設有定義:
struct complex
{ int real,unreal;}data1={1,8},data2;
則以下賦值語句中錯誤的是( )。
A.data2=(2,6);
B.data2=data1;
C.data2.real=data1.real;
D.data2.real=data1.unreal;
參考答案:A
參考解析:A選項中可以在聲明變量的同事為data2賦值,但是data2=(2,6);應寫作data2={2,6}。所以選擇A。
相關推薦:
【考試吧整理】計算機等級考試各科目歷年真題