第 1 頁:選擇題 |
第 3 頁:程序填空題 |
第 4 頁:程序修改題 |
第 5 頁:程序設(shè)計題 |
一、選擇題(每小題1分,共40分)
1[單選題] 有以下程序:
執(zhí)行后的輸出結(jié)果是( )。
A.3,5,3,5,5
B.5,3,5,3,5
C.3,5,3,5,3
D.3,5,3,3,5
參考答案:A
參考解析:main()函數(shù)中初始化i的值為3,j的值為5,并初始化指針p指向i,指針q指向j。另外,還定義了一個二維指針r,指向q,所以*p的值是i的值3,*q的值是j的值5,**r等于*q,是j的值5,所以輸出的結(jié)果是:3、5、3、5、5,答案選A。
2[單選題] 以下敘述中錯誤的是( )。
A.C程序必須由一個或一個以上的函數(shù)組成
B.函數(shù)調(diào)用可以作為一個獨(dú)立的語句存在
C.若函數(shù)有返回值,必須通過return語句返回
D.函數(shù)形參的值也可以傳回給對應(yīng)的實參
參考答案:D
參考解析:形參是函數(shù)定義時由用戶定義的形式上1的變量,實參是函數(shù)調(diào)用時,主調(diào)函數(shù)為被調(diào)函數(shù)提供的原始1數(shù)據(jù)。在C語言中,實參向形參傳送數(shù)據(jù)的方式是“值傳遞”。f因此D選項正確。
3[單選題] 下列關(guān)于二叉樹的敘述中,正確的是( )。
A.葉子結(jié)點總是比度為2的結(jié)點少一個
B.葉子結(jié)點總是比度為2的結(jié)點多一個
C.葉子結(jié)點數(shù)是度為2的結(jié)點數(shù)的兩倍
D.度為2的結(jié)點數(shù)是度為1的結(jié)點數(shù)的兩倍
參考答案:B
參考解析:根據(jù)二叉樹的基本性質(zhì)3:在任意一棵二叉樹中,度為0的葉子結(jié)點總是比度為2的結(jié)點多一個。所以選擇B。
4[單選題] 有以下程序:
執(zhí)行后的輸出結(jié)果是( )。
A.abcd abc ab
B.a a a
C.abcd bcd cd
D.a b c
參考答案:A
參考解析:程序初始化一個二維數(shù)組,其中每個元素都是一個字符數(shù)組,for循環(huán)中使用字符串輸出函數(shù)puts()打印二維數(shù)組中的每個元素,puts()接受字符數(shù)組名當(dāng)做參形數(shù),將該字符數(shù)組存儲的字符串打印出來,程序中s[0]存儲的字符串是 “abcd”,s[1]存儲的字符串是“abc”,s[2]存儲的字符串是“ab”,所以程序輸出為:abcd、abc、ab,答案選A。
5[單選題] 有以下函數(shù):
以下關(guān)于aaa函數(shù)功能敘述正確的是( )。
A.將串s復(fù)制到串t
B.比較兩個串的大小
C.求字符串s的長度
D.求字符串s所占字節(jié)數(shù)
參考答案:C
參考解析:本題重點考察的知識點while循環(huán)語句的應(yīng)用。aaa()函數(shù)中,首先定義了一個字符指針t指向形參s,然后通過一個while循環(huán)讓指針t不斷遞增,直到t指向字符串結(jié)束標(biāo)識處。當(dāng)t指向結(jié)束標(biāo)識處時,由于后綴++運(yùn)算符的原因,它還會被再遞增1,所以接下來的t--;語句讓它回到結(jié)束標(biāo)識處。最后返回t-s,s還是指向字符串第1個字符處,而t指向了字符串結(jié)尾,故返回值為字符串的長度值。因此C選項正確。
6[單選題] 有以下程序:
程序運(yùn)行后的輸出結(jié)果是( )。
A.b,B,b,A
B.b,B,B,A
C.a,B,B,a
D.a,B,a,B
參考答案:A
參考解析:本題重點考察函數(shù)的調(diào)用,首先要了解字母對應(yīng)的ASCII碼。例如A為65,a為97。即字母+1則可得到下一個字母。其次是函數(shù)形參和實參的問題,運(yùn)行過程如下:在fun(&b,a)中,*c=‘a(chǎn)’,d=65。*c+1='b',d+1=66,printf(“%c,%c,”,*c,d);輸出b,B,因為指針c指向地址的值為b,此時b=*c=‘b’函數(shù)返回執(zhí)行printf("%c,%c、n",b,a);輸出b,A,因此A選項正確。
7[單選題] 有以下程序:
程序運(yùn)行后的輸出結(jié)果是( )。
A.0
B.-12
C.-20
D.10
參考答案:C
參考解析:本題考查宏定義,宏定義只是做簡單的替換,所以本題中SUB(a+b)*c=(a+b)-(a+b)*c=-20,所以答案為C選項。
8[單選題] 有以下程序:
程序運(yùn)行后的輸出結(jié)果是( )。
A.10
B.11
C.20
D.21
參考答案:D
參考解析:數(shù)組data包含兩個元素,元素類型為結(jié)構(gòu)體s,分別為data[0],data[1],初始化時,使用4個整數(shù)10,100,20,200,分別給data[0].a,data[0].b.data[1].a,data[1].b賦值,又p.a=data[1].a,等于20,在輸出之前執(zhí)行自身加1操作,所以結(jié)果為21,答案選D。
9[單選題] 有以下程序:
程序執(zhí)行后的輸出結(jié)果是( )。
A.y=-1
B.y=0
C.y=1
D.while構(gòu)成無限循環(huán)
參考答案:A
參考解析:y--表示y使用后再自減1。所以最后一次y的值為0,條件不成立但仍要執(zhí)行自減操作,y的值為-1,跳出循環(huán)。打印y的值-1。
10[單選題] 下列函數(shù)的功能是( )。
A.將a所指字符串賦給b所指空間
B.使指針b指向a所指字符串
C.將a所指字符串和b所指字符串進(jìn)行比較
D.檢查a和b所指字符串中是否有‘\0’
參考答案:A
參考解析:While循環(huán)條件為:(*b=*a)!='\0',執(zhí)行時先把指針a所指向的字符賦給指針b所在內(nèi)存單元,如果該字符不是結(jié)束標(biāo)識‘\0’,執(zhí)行循環(huán)體a++;b++;,指針a、b分別指向下一個字符單元。再判斷循環(huán)條件,如果成立,繼續(xù)把指針a所指向的字符賦給指針b所在內(nèi)存單元,直到遇到結(jié)束標(biāo)識為止。因此A選項正確。
11[單選題] 有以下程序:
程序運(yùn)行時輸入:-11-220<回車>,則輸出結(jié)果是( )。
A.1,1
B.1,0
C.3,-3
D.3,0
參考答案:C
參考解析:分析程序結(jié)構(gòu),在do …while循環(huán)中,嵌套一個switch語句,switch語句中兩個case語句分別執(zhí)行break和continue,其中break語句是跳出switch語句,接著執(zhí)行do…while循環(huán)體剩下的部分;而continue語句是直接進(jìn)入do…while的下一個循環(huán),由此可知每次循環(huán),當(dāng)t=0時,執(zhí)行break語句,接著將z值累加x;當(dāng)t=1時,執(zhí)行continue語句,將y值累加x,所以當(dāng)x輸入-1、-2、0時,t=0,z值累加為-3;當(dāng)x輸入1、2時.t=1,y值累加為3,輸出y、z的值分別為3、-3,故答案選C。
12[單選題] 以下選項中敘述錯誤的是( )。
A.C程序函數(shù)中定義的自動變量,系統(tǒng)不自動賦確定的初值
B.在C程序的同一函數(shù)中,各復(fù)合語句內(nèi)可以定義變量,其作用域僅限本復(fù)合語句內(nèi)
C.C程序函數(shù)中定義的賦有初值的靜態(tài)變量,每調(diào)用一次函數(shù),賦一次初值
D.C程序函數(shù)的形參不可以說明為static型變量
參考答案:C
參考解析:A選項描述正確,自動變量未賦初值,為隨機(jī)值;B選項描述正確,變量定義除在函數(shù)開始位置外,在復(fù)合語句開始也可以;C選項描述是錯誤的,函數(shù)內(nèi)的靜態(tài)變量,只在第一次調(diào)用時候賦值,以后調(diào)用保留上次值;D選項描述也正確,形參屬于局部變量,占用動態(tài)存儲區(qū),而static型變量占用靜態(tài)存儲區(qū)。因此C選項正確。
13[單選題] 程序中若有以下的說明定義和語句:
則不能給變量t的s成員賦整數(shù)99,給num成員賦空串的語句組是( )。
參考答案:A
參考解析:結(jié)構(gòu)體變量使用 “.”運(yùn)算符引用結(jié)構(gòu)體成員變量,結(jié)構(gòu)體指針使用“->”運(yùn)算符引用結(jié)構(gòu)體成員變量,main函數(shù)中聲明結(jié)構(gòu)體STR變量t,和結(jié)構(gòu)體STR指針*p,并將t的地址賦給p,所以使用P訪問成員變量時,使用“->”運(yùn)算符;使用* P訪問成員變量時,使用“.”運(yùn)算符。另外,由于成員變量num是字符數(shù)組,所以不能直接進(jìn)行賦值,若要對num賦空字符串值,可以把num中第一個元素賦值為0或‘\0’,或者使用strcpy復(fù)制函數(shù)將空字符串“”復(fù)制到num中,故選項B、C、D正確,選項A錯誤,因此答案為A。
14[單選題] 以下關(guān)于循環(huán)語句的敘述中正確的是( )。
A.do…while語句的循環(huán)體至少執(zhí)行一次
B.while語句的循環(huán)體至少執(zhí)行一次
C.for語句的循環(huán)體至少執(zhí)行一次
D.上述A、B、c說法均正確
參考答案:A
參考解析:while(表達(dá)式)當(dāng)表達(dá)式為false時,循環(huán)體一次都不執(zhí)行,故選項B、D錯誤;for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語句,當(dāng)表達(dá)式2為false時,循環(huán)體一次都不執(zhí)行,故選項C錯誤;do-while語句循環(huán)體至少執(zhí)行一次,故答案選A。
15[單選題] 以下敘述中錯誤的是( )。
A.用戶定義的函數(shù)中可以沒有return語句
B.用戶定義的函數(shù)中可以有多個return語句,以便可以調(diào)用一次返回多個函數(shù)值
C.用戶定義的函數(shù)中若沒有return語句,則應(yīng)當(dāng)定義函數(shù)為void類型
D.函數(shù)的return語句中可以沒有表達(dá)式
參考答案:B
參考解析:本題重點考察函數(shù)返回值的相關(guān)知識,函數(shù)的值只能通過return語句返回主調(diào)函數(shù),在函數(shù)中允許有多個return語句,但每次調(diào)用只能有一個return語句被執(zhí)行,因此只能返回一個函數(shù)值。不返回函數(shù)值的函數(shù),可以明確定義為“空類型”,類型說明符為“void”。因此B選項正確。
16[單選題] 以下敘述中正確的是( )。
A.C語句必須在一行內(nèi)寫完
B.C程序中的每一行只能寫一條語句
C.C語言程序中的注釋必須與語句寫在同一行
D.簡單C語句必須以分號結(jié)束
參考答案:D
參考解析:C語句可以跨行來寫,但是必須以分號結(jié)束,所以A選項錯誤。C程序中的一行可以有多條語句,所以B選項錯誤。C語言中的注釋語句可以與原語句放在一行也可以不放在一行,所以C選項錯誤。
17[單選題] 以下不合法的數(shù)值常量是( )。
A.8.0E0.5
B.1e1
C.011
D.0xabed
參考答案:A
參考解析:A選項中E后面的指數(shù)必須為整型數(shù)據(jù),所以A錯誤。C選項中011表示的是八進(jìn)制常量.Oxabcd表示的是十六進(jìn)制常量。
18[單選題] 有以下程序:
程序計算的是( )。 .
A.s=1!+2!+3!+4!+5!
B.s=1+2+3+4+5
C.s=1$2*3*4*5
D.s=1!*2!*3!*4!*5!
參考答案:A
參考解析:函數(shù)fun()中的變量f是靜態(tài)變量,所以只初始化一次,之后每次調(diào)用fun(),f的初值就是上一次fun()結(jié)束時的值,對于fun()函數(shù),當(dāng)傳人n=1時,f=1,返回值為1;當(dāng)傳入n=2時,f=1×2=2,返回值為2;當(dāng)傳人13=3時,f=2×3=6,返回值為6;當(dāng)傳人n=4時,f=6×4=24,返回值為24,所以每次調(diào)用fun函數(shù)時,f變量在上一次fun函數(shù)運(yùn)行結(jié)束時保留值的基礎(chǔ)上,再與n乘積,并重新賦值給f,所以可以將f理解為記錄當(dāng)前的累乘值,即當(dāng)main函數(shù)中i:1時,f=11=1;當(dāng)main()函數(shù)i=2時,f=2!=2,當(dāng)main函數(shù)中i=3時,f=3!=6……另外main函數(shù)中的S記錄調(diào)用fun函數(shù)的返回值之和,所以s=1!+2!+…+i!,由于i最大值為5,所以s=1!+2!+3!+4!+5!,答案為A。
19[單選題] 下列詵項中.能正確定義數(shù)組的語句是( )。
參考答案:D
參考解析:C語言不允許定義動態(tài)數(shù)組,定義數(shù)組的大小必須為常量表達(dá)式。A選項錯誤,C語言中數(shù)組沒有此類型的定義方法;B選項錯誤,定義數(shù)組應(yīng)指明數(shù)組大小,如果不指明數(shù)組大小,需要給定初值的個數(shù);C選項錯誤,N為變量,不能用來定義數(shù)組大小。因此D選項正確。
20[單選題] 有以下程序:
程序的運(yùn)行結(jié)果是( )。
A.123
B.12300
C.1
D.321
參考答案:A
參考解析:首先使用fopen函數(shù)以可寫方式打開文件d1.dat,返回文件指針fp,然后在for循環(huán)通過fprintf函數(shù)調(diào)用fp指針,將數(shù)組a的3個元素寫入文件d1.dat中,最后再寫入換行符\n,關(guān)閉文件,此時文件中的內(nèi)容:“123\n”,然后調(diào)用fopen函數(shù)以只讀方式打開d1.dat,返回文件指針fp指向文件的開頭,再調(diào)用fscanf函數(shù)從文件中讀入一個整數(shù):123,(遇到第一個非數(shù)值字符結(jié)束),關(guān)閉文件后輸出讀人的整數(shù)n,結(jié)果為:123,答案為A。
相關(guān)推薦:
2017年12月計算機(jī)等考成績查詢?nèi)肟?/FONT>|免費(fèi)查分提醒
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |