2015年9月計算機二級《C語言》突破模擬卷(2)
23有以下程序:
程序運行后的輸出結(jié)果是( )。
A.運行后報錯B.6 6C.611 D.510
參考答案:A
參考解析:本題中首先定義了一個一維數(shù)組。并初始化,由于定義該數(shù)組的時候省了長度,因此該數(shù)組的長度為初始化時候賦初值的個數(shù)即為12。數(shù)組名a代表數(shù)組的首地址,所以*p=a+5語句使得P指向數(shù)組的第6個元素,而在程序中定義了一個指針q并讓它指向空,實際上程序并沒有在內(nèi)存中為指針q開辟存儲空間,這樣給q賦值不允許的,故該程序運行后報錯。
24下列程序的運行結(jié)果是( )。
A.gaeB.angC.program D.有語法錯
參考答案:A
參考解析:本題考查指針用法,if語句的功能是判斷兩個數(shù)組中的字符是否相同,如果相同則輸出。
25C語言中的簡單數(shù)據(jù)類型有( )。
A.整型、實型、邏輯型
B.整型、實型、字符型
C.整型、字符型、邏輯型
D.整型、實型、邏輯型、字符型
參考答案:B
參考解析:整(數(shù))型(長、短)、實(數(shù))型(長、短)、字符型這3種是最常用,也是最簡單的數(shù)據(jù)類型。
26下列敘述中正確的是( )。
A.只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句
B.cotinue語句的作用是結(jié)束整個循環(huán)的執(zhí)行
C.在循環(huán)體內(nèi)使用break語句或continue語句的作用相同
D.從多層循環(huán)嵌套中退出時,只能使用goto語句
參考答案:A
參考解析:本題考查循環(huán)跳出的知識點:①break語句可以出現(xiàn)在switch循環(huán)體內(nèi)及語句體內(nèi),它的作用是跳出循環(huán)體,不能用于其他的語句;②continue語句的作用是結(jié)束本次循環(huán),即跳過循環(huán)體中下面尚未執(zhí)行的語句,而接著判定循環(huán)條件是否成立,確定下一次循環(huán)是否繼續(xù)執(zhí)行,執(zhí)行contiune語句不會使整個循環(huán)終止;③循環(huán)體內(nèi)使用break語句會使循環(huán)提前終止;④從多層循環(huán)嵌套中退出時,可以使用goto語句或者break語句。
27有以下程序:
當程序運行時輸入a<回車>后,下列敘述中正確的是( )。
A.變量c1被賦予字符a,c2被賦予回車符
B.程序?qū)⒌却脩糨斎氲?個字符
C.變量c1被賦予字符a,c2中仍是原有字符2
D.變量c1被賦予字符a,c2無確定值
參考答案:A
參考解析:本題考查getchar()函數(shù),從終端讀入一個字符作為函數(shù)值。在輸入時,空格、回車符都將作為字符讀入,而且只有在用戶敲入回車鍵時,讀入才開始執(zhí)行。所以當輸入a<回車>后,變量c1被賦予字符a,而變量c2被賦予回車符。
28以三級模式為框架形成的3種數(shù)據(jù)庫中,真實存在于計算機外存的數(shù)據(jù)庫是( )。
A.概念數(shù)據(jù)庫B.用戶數(shù)據(jù)庫C.物理數(shù)據(jù)庫D.邏輯數(shù)據(jù)庫
參考答案:B
參考解析:以內(nèi)模式為框架所組成的數(shù)據(jù)庫叫物理數(shù)據(jù)庫;以概念模式為框架所組成的數(shù)據(jù)庫-1概念數(shù)據(jù)庫;以外模式為框架所組成的數(shù)據(jù)庫叫用戶數(shù)據(jù)庫,它是真實存在于計算機外存中的數(shù)據(jù)庫。
29設int x=7,則~x的值是( )。
A.-8B.7C.-1D.1
參考答案:A
參考解析:本題主要考查按位求反運算和C語言正負數(shù)的表示。“0”代表正數(shù),“1”代表負數(shù);x=7的二進制為00111,第一個0代表正數(shù),~x為ll000,第一個1代表負數(shù),值為8。
30下面的函數(shù)調(diào)用語句中fune函數(shù)的實參個數(shù)是( )。
func((f2vl,v2),(v3,v4,v5),(v6,max(v7,v8)))
A.3B.4C.5D.8
參考答案:A
參考解析:實參是在調(diào)用時傳遞該函數(shù)的參數(shù),故選A。
31有以下程序片段:
其能正確表示的數(shù)學函數(shù)關(guān)系是( )。
A.
B.
C.
D.
參考答案:C
參考解析:y的初始值為~1,當x不等于0時,給y賦值為1,也就是這時x>0和x>0都為1,然后如果x>0時y的值又賦值為1,注意后面的else語句是跟if(x>0)y=1相匹配,就是說除了x>0 y=1之外,其他的情況y都為0。
32下述程序的輸出結(jié)果是( )。
A.6357B.6135C.37D.691357
參考答案:C
參考解析:本題先將指針p指向二維數(shù)組ch[2][5],相當于p[0]=″1234″,p[1]=″5678″;通過雙重for循環(huán),將P中的字符隔一個輸出一個,通過“s=p[i][j]- ˊ0ˊ;”語句將所要輸出的字符轉(zhuǎn)換成相應的十進制數(shù)。
33以下程序的輸出結(jié)果是( )。
A.1,2,3,4,5B.2,3,4,5,6C.3,4,5,6,7 D.2,3,4,5,1
參考答案:B
參考解析:函數(shù)調(diào)用時,prt函數(shù)的作用是為使m數(shù)組中的數(shù)自增1,因此數(shù)組下標從0開始,每個元素都自加1。
34有以下程序:
程序的輸出結(jié)果是( )。
A.62B.63C.33D.32
參考答案:D
參考解析:本題考查while循環(huán)。當i<20時,進入while循環(huán)體,循環(huán)體內(nèi)的for循環(huán)實現(xiàn)的功能是i%l0==0,也就是說當i值為0或者10的倍數(shù)的時候,跳出循環(huán),執(zhí)行i+=11;a+=i;,若i值不是l0的倍數(shù),則一直執(zhí)行for循環(huán)i--。①判斷i=0時,執(zhí)行i+=11;a+=i;,i=11,a=11;②判斷i=10時,跳出for循環(huán),執(zhí)行i+=11;a+=i;,i=21,a=32;③判斷i=21>20,不符合題意,結(jié)束循環(huán)。
35已知二叉樹后序遍歷序列是dabec,中序遍歷序列是debac,那么它的前序遍歷序列是( )。
A.AcbedB.decabC.deabc D.cedba
參考答案:D
參考解析:二叉樹的遍歷有3種:前序、中序和后序。①前序遍歷訪問根結(jié)點,然后按左右順序遍歷子結(jié)點;②中序首先遍歷左子樹,然后訪問根結(jié)點,最后遍歷右子樹;③后序遍歷首先遍歷左子樹,然后遍歷右子樹,最后訪問根結(jié)點。本題根據(jù)后序和中序遍歷的結(jié)果可以得出二叉樹的結(jié)構(gòu),然后再對其進行前序遍歷,正確答案選項為D。
36現(xiàn)有以下結(jié)構(gòu)體說明和變量定義,如圖所示,指針p、q、r分別指定一個鏈表中連續(xù)的3個結(jié)點。
現(xiàn)要將q和r所指結(jié)點交換前后位置,同時要保持鏈表的結(jié)構(gòu),下列不能完成此操作的語句是( )。
A.q->next=r->next;p->next=r;r-->next=q;
B.Q->next=r;q->next=r->next;r-->next=q;
C.Q->next=r->next;r->next=q;p-->next=r;
D.qnext=q;p->next=r;q->next=r->next;
參考答案:D
參考解析:由題目中線性鏈表的定義可知,要將q和r所指的結(jié)點交換前后位置,只要使q指向r的后一個結(jié)點,P指向r結(jié)點,r指向q結(jié)點即可。而在選項D中,r->next=q,這時r指向的節(jié)點為q;p->next=r,這時P指向的節(jié)點為r;q->next=r->next,因為r結(jié)點已經(jīng)指向q,所以執(zhí)行這個語句后q又指向q,所以選項D不正確。
37下列程序的輸出結(jié)果是( )。
A.3,6,18B.3,6,2C.6,3,18 D.6,3,2
參考答案:B
參考解析:本題考查if…else語句。如果if條件成立,則執(zhí)行if下面的語句,不成立則執(zhí)行else,判斷條件,發(fā)現(xiàn)a
38有以下程序:
程序運行后的輸出結(jié)果是( )。
A.AbB.B.aaC.Aa D.Bb
參考答案:A
參考解析:函數(shù)fun的作用是將指針a指向指針b的內(nèi)容,然后將該內(nèi)容加1。執(zhí)行語句“fun(p1,p2);”后,pl和p2指向的地址并未改變,只是將p2指向的存儲單元的值增加1。所以,答案是A。
39假定所有變量均已正確說明,下列程序段運行后x的值是( )。
A.11B.4C.12D.3
參考答案:B
參考解析:本題考查if…else語句。if條件為真則執(zhí)行后面的表達武,如果if為假則執(zhí)行else語句。
40面向?qū)ο蟮脑O計方法與傳統(tǒng)的面向過程的方法有本質(zhì)不同,它的基本原理是( )。
A.模擬現(xiàn)實世界中不同事物之間的聯(lián)系
B.強調(diào)模擬現(xiàn)實世界中的算法而不強調(diào)概念
C.使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題
D.不強調(diào)模擬現(xiàn)實世界中的算法而強調(diào)概念
參考答案:C
參考解析:面向?qū)ο蟮脑O計方法的基本原理是使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題。它雖強調(diào)模擬現(xiàn)實世界中的概念但不強調(diào)算法,但是它鼓勵開發(fā)者在軟件開發(fā)的過程中從應用領(lǐng)域的概念角度去思考。
二、程序填空題
41函數(shù)fun()的功能是:逆置數(shù)組元素中的值。形參n給出數(shù)組中數(shù)據(jù)的個數(shù)。
例如:若a所指數(shù)組中的數(shù)據(jù)依次為:1、2、3、4、5、6、7、8、9,則逆置后依次為:9、8、7、6、5、4、3、2、1。
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在fun()函數(shù)的橫線上填入所編寫的若干表達式或語句。
試題程序:
參考解析:
【1】n/2【2】i【3】a[n-i-1]
【解析】fun()函數(shù)實現(xiàn)的功能是實現(xiàn)數(shù)組的逆置。具體步驟通過參數(shù)傳遞,得到數(shù)組指針(即數(shù)組名)和數(shù)組記錄大小的變量n,通過這兩個參數(shù)配置for循環(huán),遍歷數(shù)組的中間的元素位置,每次循環(huán)都將i位置和對應位置結(jié)點(i距離0位置等于其距離尾位置的結(jié)點)的元素交換,由此實現(xiàn)數(shù)組的逆置。
三、程序改錯題
42下列給定程序中,函數(shù)proc()的功能是求出數(shù)組中最小數(shù)和次最小數(shù),并把最小數(shù)和arr[O]中的數(shù)對調(diào),次最小數(shù)和arr[1]中的數(shù)對調(diào)。
請修改程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
參考解析:
四、程序設計題
43請編寫函數(shù)proc(),它的功能是求Fibonacci數(shù)列中小于n的最大的一個數(shù),結(jié)果由函數(shù)返回。
Fibonacci數(shù)列F(n)的定義為
F(0)=O,F(xiàn)(1)=1
F(n)=F(n-1)+F(n-2)
例如,n=500時,函數(shù)值為377。
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填寫所編寫的若干語句。
試題程序:
參考解析:
【解析】由題目中所給的公式可知,F(xiàn)ibonacci數(shù)列的第n項為第n-1項和第n-2項的和。要求Fibonacci數(shù)列中小于n的最大的一個數(shù)。首先根據(jù)公式求出Fibonacci數(shù)列的第n項的值,當?shù)趇項大于n,則返回第i-1項的值。