2017計(jì)算機(jī)二級(jí)《C語(yǔ)言》考試題及答案
一、選擇題(每小題1分。共40分)
(1)程序流程圖中帶有箭頭的線(xiàn)段表示的是( )。
A.圖元關(guān)系
B.數(shù)據(jù)流
C.控制流
D.調(diào)用關(guān)系
(2)結(jié)構(gòu)化程序設(shè)計(jì)的基本原則不包括( )。
A.多態(tài)性
B.自頂向下
C.模塊化
D.逐步求精
(3)軟件設(shè)計(jì)中模塊劃分應(yīng)遵循的準(zhǔn)則是( )。
A.低內(nèi)聚低耦合
B.高內(nèi)聚低耦合
C.低內(nèi)聚高耦合
D.高內(nèi)聚高耦合
(4)在軟件開(kāi)發(fā)中,需求分析階段產(chǎn)生的主要文檔是( )。
A.可行性分析報(bào)告
B.軟件需求規(guī)格說(shuō)明書(shū)
C.概要設(shè)計(jì)說(shuō)明書(shū)
D.集成測(cè)試計(jì)劃
(5)算法的有窮性是指( )。
A.算法程序的運(yùn)行時(shí)問(wèn)是有限的。
B.算法程序所處理的數(shù)據(jù)量是有限的
C.算法程序的長(zhǎng)度是有限的
D.算法只能被有限的用戶(hù)使用
(6)對(duì)長(zhǎng)度為n的線(xiàn)性表排序,在最壞情況下,比較次數(shù)不是n(n一1)/2的排序方法是( )。A.快速排序
B.冒泡排序
C.直接插入排序
D.堆排序
(7)下列關(guān)于棧的敘述正確的是( )。
A.棧按“先進(jìn)先出”組織數(shù)據(jù),
B.棧按“先進(jìn)后出”組織數(shù)據(jù)
C.只能在棧底插入數(shù)據(jù)
D.不能刪除數(shù)據(jù)
(8)在數(shù)據(jù)庫(kù)設(shè)計(jì)中,將E—R圖轉(zhuǎn)換成關(guān)系數(shù)據(jù)模型的過(guò)程屬于( )。
A.需求分析階段
B.概念設(shè)計(jì)階段
C.邏輯設(shè)計(jì)階段
D.物理設(shè)計(jì)階段
(9)有三個(gè)關(guān)系R、s和T如下:
由關(guān)系R和s通過(guò)運(yùn)算得到關(guān)系T,則所使用的運(yùn)算為( )。
A.并
B.自然連接
C.笛卡爾積
D.交
(10)設(shè)有表示學(xué)生選課的三張表,學(xué)生s(學(xué)號(hào),姓名,性別,年齡,身份證號(hào)),課程c(課號(hào),課名),選課SC(學(xué)號(hào),課號(hào),成績(jī)),則表sc的關(guān)鍵字(鍵或碼)為( )。
A.課號(hào),成績(jī)
B.學(xué)號(hào),成績(jī)
C.學(xué)號(hào),課號(hào)
D.學(xué)號(hào),姓名,成績(jī)
(11)以下敘述中錯(cuò)誤的是( )。
A.c語(yǔ)言中的每條可執(zhí)行語(yǔ)句和非執(zhí)行語(yǔ)句最終都將被轉(zhuǎn)換成二進(jìn)制的機(jī)器指令
B.c程序經(jīng)過(guò)編譯、連接步驟之后才能形成一個(gè)真正可執(zhí)行的二進(jìn)制機(jī)器指令文件
C.用c語(yǔ)言編寫(xiě)的程序稱(chēng)為源程序,它以ASCIl代碼形式存放在一個(gè)文本文件中
D.c語(yǔ)言源程序經(jīng)編譯后生成后綴為.obj的目標(biāo)程序
(12)以下選項(xiàng)中,合法的一組c語(yǔ)言數(shù)值常量是( )。
A.12.0Xa23 4.5e0
B.028.5e…3 0xf
C.177 4el.5 0abe
D.0x8A 10,000 3.e5
(13)以下選項(xiàng)中不合法的標(biāo)識(shí)符是( )。
A.&a
B.FOR
C.pfint
D.00
(15)若有定義:double a=22;inti=0,k=18;,則不符合c語(yǔ)言規(guī)定的賦值語(yǔ)句是( )。
A.i=(a+k)<=(i+k);B.i=a%11;
C.a=a++,i++;D.i=!a;
(16)有以下程序:
在VC 6.0平臺(tái)上編譯運(yùn)行,程序運(yùn)行后的輸出結(jié)果是( )。
A.10,6
B.4,4
C.2,4
D.4。8
(17)有以下程序:
當(dāng)執(zhí)行程序時(shí),按下列方式輸入數(shù)據(jù)(從第l列開(kāi)始,代表回車(chē),注意:回車(chē)也是一個(gè)字符]1234則輸出結(jié)果是( )。
A.12
B.12
C.1234
D.12343
(18)以下關(guān)于邏輯運(yùn)算符兩側(cè)運(yùn)算對(duì)象的敘述中正確的是( )。
A.可以是任意合法的表達(dá)式
B.只能是整數(shù)0或非0整數(shù)
C.可以是結(jié)構(gòu)體類(lèi)型的數(shù)據(jù)
D.只能是整數(shù)0或1
(19)有以下程序:
程序運(yùn)行后的輸出結(jié)果是( )。
A.1,1,2,0
B.0,0,0,3
C.編譯有錯(cuò)
D.0,1,2,0
(20)有以下程序:
程序運(yùn)行后的輸出結(jié)果是( )。
A.a=2,b=2
B.a=2,b=1
C.a=1,b=l
D.a=1,b=0
程序段的輸出結(jié)果是( )。
(22)有以下程序段:
以下關(guān)于程序段執(zhí)行情況的敘述,正確的是( )。
A.for循環(huán)語(yǔ)句固定執(zhí)行8次
B.當(dāng)產(chǎn)生的隨機(jī)數(shù)n為4時(shí)結(jié)束循環(huán)操作
C.當(dāng)產(chǎn)生的隨機(jī)數(shù)n為1和2時(shí)不做任何操作
D.當(dāng)產(chǎn)生的隨機(jī)數(shù)n為0時(shí)結(jié)束程序運(yùn)行
(23)有以下程序:
程序運(yùn)行后的輸出結(jié)果是( )。
A.8
B.2
C.4
D.1
(24)以下敘述中錯(cuò)誤的是( )。
A.可以給指針變量賦一個(gè)整數(shù)作為地址值
B.函數(shù)可以返回地址值
C.改變函數(shù)形參的值,不會(huì)改變對(duì)應(yīng)實(shí)參的值
D.當(dāng)在程序的開(kāi)頭包含頭文件stdi0.h時(shí),可以給指針變量賦NULL、、、
(25)設(shè)已有定義:float x;,則以下對(duì)指針變量P進(jìn)行定義且賦初值的語(yǔ)句中正確的是( )。
(26)以下數(shù)組定義中錯(cuò)誤的是( )。
(27)有以下程序:
程序運(yùn)行后的輸出結(jié)果是( )O
A.321678
B.876543
C.1098765
D.345678
(28)有以下程序:
程序運(yùn)行后的輸出結(jié)果是( )。
A.一3,一l,1,3,
B.B.一12,一3,0,0,
C.C.0,1,2,3,
D.D.一3,一3,一3,一3,
(29)設(shè)有定義:char s[81];int i=0;,以下不能將一行(不超過(guò)80個(gè)字符)帶有空格的字符串正確讀入的語(yǔ)句或語(yǔ)句組是( )。
(30)設(shè)有定義:char p E]={’1’,‘2’,’3’},*q=p;,以下不能計(jì)算出一個(gè)char型數(shù)據(jù)所占字節(jié)數(shù)的表達(dá)式是( )。
A.sizeof(p)
B.sizeof(char)
C.sizeof(*q)
D.sizeof(p[0])
(31)有以下程序:
程序運(yùn)行后的輸出結(jié)果是( )。
A.10,One*Dream!
B.9,One*Dream!
C.9,One*World
D.10,One*World
(32)有以下程序:
程序運(yùn)行后的輸出結(jié)果是( )。
A.0
B.3
C.7
D.8
(33)有以下程序:
程序執(zhí)行后的輸出結(jié)果是( )。
A.5,11
B.5,5
C.11,11
D.11,5
(34)在c語(yǔ)言中,只有在使用時(shí)才占用內(nèi)存單元的變量,其存儲(chǔ)類(lèi)型是( )。
A.aut0和static
B.extern和register
C.aut0和register
D.static和register
(35)下面結(jié)構(gòu)體的定義語(yǔ)句中,錯(cuò)誤的是( )。
A.struct ord{int x;int Y;int z;}struct ord a;
B.struct ord{int x;im Y;im z;};struct ord a;
C.struct ord{int x;int Y;int Z;}a;
D.struct{int x;int Y;int z;}a;
(36)有以下程序:
程序運(yùn)行后的輸出結(jié)果是( )。
A.2,4
B.1,2
C.1,4
D.2.3
(37)以下敘述中正確的是( )。
A.在C語(yǔ)言中,預(yù)處理命令行都以“#”開(kāi)頭
B.預(yù)處理命令行必須位于c源程序的起始位置
C.#include必須放在C程序的開(kāi)頭
D.C語(yǔ)言的預(yù)處理不能實(shí)現(xiàn)宏定義和條件編譯的功能
(38)有以下程序:
程序運(yùn)行后的輸出結(jié)果是( )。
A.O
B.10
C.20
D.出錯(cuò)
(39)有以下程序:
程序運(yùn)行后的輸出結(jié)果是( )。
A.16
B.1
C.32
D.O
(40)讀取二進(jìn)制文件的函數(shù)調(diào)用形式為:fread(buffer,size,count,fp);,其中buffer代表的是( )。
A.一個(gè)內(nèi)存塊的字節(jié)數(shù)
B.一個(gè)整型變量,代表待讀取的數(shù)據(jù)的字節(jié)數(shù)
C.一個(gè)文件指針,指向待讀取的文件
D.一個(gè)內(nèi)存塊的首地址,代表讀人數(shù)據(jù)存放的地址
二、程序填空題(共18分)
下列給定程序中,函數(shù)fun的功能是:將形參n中個(gè)位上為偶數(shù)的數(shù)取出,并按原來(lái)從高位到低位相反的順序組成一個(gè)新數(shù),作為函數(shù)值返回。
例如,輸入一個(gè)整數(shù)27638496,函數(shù)返回值為64862。
請(qǐng)?jiān)诔绦虻南聞澗(xiàn)處填入正確的內(nèi)容并將下劃線(xiàn)刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANKl.C中。
不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include
unsigned long fun(unsigned long n){unsigned long x=0;int t;
三、程序修改題(共18分)
下列給定程序中函數(shù)fun的功能是:將長(zhǎng)整型數(shù)中各位上為奇數(shù)的數(shù)依次取出,構(gòu)成一個(gè)新數(shù)放在t中。高位仍在高位,低位仍在低位。
例如,當(dāng)s中的數(shù)為87653142時(shí),t中的數(shù)為7531。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODll.C中,不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
四、程序設(shè)計(jì)題(共24分)
編寫(xiě)函數(shù)fun,其功能是:實(shí)現(xiàn)兩個(gè)字符串的連接(不要使用庫(kù)函數(shù)strcat),即把p2所指的字符串連接到pl所指的字符串的后面。
例如,分別輸人下面兩個(gè)字符串:FirstString--SecondString
程序運(yùn)行后的輸出結(jié)果是:FirstString————SecondString
注意:部分源程序在文件PROGl.C中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。
【參考答案】
一、選擇題
(1)C【解析】在數(shù)據(jù)流圖中,用標(biāo)有名字的箭頭表示數(shù)據(jù)流。在程序流程圖中,用標(biāo)有名字的箭頭表示控制流。所以選擇C。
(2)A【解析】結(jié)構(gòu)化程序設(shè)計(jì)的思想包括:自頂向下、逐步求精、模塊化、限制使用got0語(yǔ)句,所以選擇A。
(3)B【解析】軟件設(shè)計(jì)中模塊劃分應(yīng)遵循的準(zhǔn)則是高內(nèi)聚低偶合、模塊大小規(guī)模適當(dāng)、模塊的依賴(lài)關(guān)系適當(dāng)?shù)。模塊的劃分應(yīng)遵循一定的要求,以保證模塊劃分合理,并進(jìn)一步保證以此為依據(jù)開(kāi)發(fā)出的軟件系統(tǒng)可靠性強(qiáng),易于理解和維護(hù)。模塊之間的耦合應(yīng)盡可能的低,模塊的內(nèi)聚度應(yīng)盡可能。
(4)B【解析】A錯(cuò)誤,可行性分析階段產(chǎn)生可行性分析報(bào)告。c錯(cuò)誤,概要設(shè)計(jì)說(shuō)明書(shū)是總體設(shè)計(jì)階段產(chǎn)生的文檔。D錯(cuò)誤,集成測(cè)試計(jì)劃是在概要設(shè)計(jì)階段編寫(xiě)的文檔。B正確,需求規(guī)格說(shuō)明書(shū)是后續(xù)工作如設(shè)計(jì)、編碼等需要的重要參考文檔。
(5)A【解析】算法原則上能夠精確地運(yùn)行,而且人們用筆和紙做有限次運(yùn)算后即可完成。有窮性是指算法程序的運(yùn)行時(shí)間是有限的。
(6)D【解析】除了堆排序算法的比較次數(shù)是O(nl092n),其他的都是n(n一1)/2。
(7)B【解析】棧是按“先進(jìn)后出”的原則組織數(shù)據(jù)的,數(shù)據(jù)的插入和刪除都在棧頂進(jìn)行操作。
(8)C【解析】E—R圖轉(zhuǎn)換成關(guān)系模型數(shù)據(jù)則是把圖形分析出來(lái)的聯(lián)系反映到數(shù)據(jù)庫(kù)中,即設(shè)計(jì)出表,所以屬于邏輯設(shè)計(jì)階段。
(9)D【解析】自然連接是一種特殊的等值連接,它要求兩個(gè)關(guān)系中進(jìn)行比較的分量必須是相同的屬性組,并且在結(jié)果中把重復(fù)的屬性列去掉,所以8錯(cuò)誤。笛卡爾積是用R集合中元素為第一元素,s集合中元素為第二元素構(gòu)成的有序?qū),所以c錯(cuò)誤。根據(jù)關(guān)系T可以很明顯地看出是從關(guān)系R與關(guān)系s中取得相同的關(guān)系組所以取得是交運(yùn)算,選擇D。(10)C【解析】學(xué)號(hào)是學(xué)生表s的主鍵,課號(hào)是課程表c的主鍵,所以選課表SC的關(guān)鍵字就應(yīng)該是與前兩個(gè)表能夠直接聯(lián)系且能唯一定義的學(xué)號(hào)和課號(hào),所以選擇C。
(11)A【解析】C語(yǔ)言中的非執(zhí)行語(yǔ)句不會(huì)被編譯,不會(huì)生成二進(jìn)制的機(jī)器指令,所以A錯(cuò)誤。由C語(yǔ)言構(gòu)成的指令序列稱(chēng)c源程序,C源程序經(jīng)過(guò)C語(yǔ)言編譯程序編譯之后生成一個(gè)后綴為.OBJ的二進(jìn)制文件(稱(chēng)為目標(biāo)文件);最后要由“連接程序”把此.OBJ文件與C語(yǔ)言提供的各種庫(kù)函數(shù)連接起來(lái)生成一個(gè)后綴為.EXE的可執(zhí)行文件。
(12)A【解析】C語(yǔ)言中八進(jìn)制整型常量的開(kāi)頭是數(shù)字0,十六進(jìn)制整型常量的數(shù)字開(kāi)頭是Ox。C語(yǔ)言中的實(shí)型常量
有兩種表示形式:小數(shù)形式,小數(shù)形式表示的實(shí)型常量必須要有小數(shù)點(diǎn);指數(shù)形式,以“e”或“E',后跟一個(gè)整數(shù)來(lái)表示以l0為底數(shù)的冪數(shù),且規(guī)定字母e或E之前必須要有數(shù)字,且e或E后面的指數(shù)必須為整數(shù)。B選項(xiàng)中028錯(cuò)誤,八透割中沒(méi)有數(shù)字8。c選項(xiàng)中4el.5中e后面的指數(shù)不是整數(shù):D選項(xiàng)中3.e5小數(shù)點(diǎn)后面缺少數(shù)字。
(13)A【解析】C語(yǔ)言中標(biāo)識(shí)符由字母、下劃線(xiàn)、數(shù)字組成,且開(kāi)頭必須是字母或下劃線(xiàn)。另外,關(guān)鍵字不能作為標(biāo)識(shí)符。因?yàn)镃語(yǔ)言中區(qū)分大小寫(xiě),所以B選項(xiàng)中的。FOR?梢宰鳛闃(biāo)識(shí)符來(lái)用。A選項(xiàng)中含有非法字符&,所以選擇A。
(14)A【解析】B選項(xiàng)中函數(shù)pow(x,C)錯(cuò)誤應(yīng)該直接使用exp(x)函數(shù)。c選項(xiàng)中函數(shù)ah(n^x+e“x)錯(cuò)誤,應(yīng)該使用fabs()返回浮點(diǎn)數(shù)的絕對(duì)值。D選項(xiàng)中pow(x,n)參數(shù)順序錯(cuò)誤。
(15)B【解析】取模運(yùn)算符“%”,二元運(yùn)算符,具有左結(jié)合性,參與運(yùn)算的量均為整型。選項(xiàng)8中的a變量是doable實(shí)型,所以8不符合規(guī)定。
(16)D【解析】C語(yǔ)言中利用sizeof()函數(shù)判斷數(shù)據(jù)類(lèi)型長(zhǎng)度,在VC 6.0平臺(tái)中,整型int占有4個(gè)字節(jié),doable型數(shù)據(jù)占有8個(gè)字節(jié)。
(17)D【解析】按照從鍵盤(pán)輸入的數(shù)據(jù)可以_判斷字符l給了變量a,字符2給了變量b,字符即回車(chē)給了變量c,字符3給了變量d。所以打印輸出的結(jié)果為D選項(xiàng)。
(18)A【解析】C語(yǔ)言的邏輯運(yùn)算符比較特別,它的操作數(shù)沒(méi)有明確的數(shù)據(jù)類(lèi)型,可以是任意合法的表達(dá)式,所以選擇A。
(19)C【解析】本題中ff(a=1)b=1;與else d=3;之間多了語(yǔ)句c=2;所以會(huì)出現(xiàn)else語(yǔ)句的位置錯(cuò)誤的編譯失敗提示。
(20)B【解析】C88e常量表達(dá)式只是起語(yǔ)句標(biāo)號(hào)作用,并不是該處進(jìn)行條件判斷。在執(zhí)行switch語(yǔ)句時(shí),根據(jù)switch的表達(dá)式,找到與之匹配的Case語(yǔ)句,就從此case子句執(zhí)行下去,不在進(jìn)行判斷,直到碰到break或函數(shù)結(jié)束為止。所以執(zhí)行內(nèi)層switch(y)時(shí)只執(zhí)行了a++,此時(shí)a的值為1。然后執(zhí)行外層case 2語(yǔ)句的a十+;b++;a為2,b為1。所以結(jié)果為B。
(21)C【解析】由于內(nèi)層循環(huán)for(k=1;k<3;k++)后面直接跟了空語(yǔ)句“;”所以在循環(huán)內(nèi)部什么操作也不做,跳出外層循環(huán)后執(zhí)行打印語(yǔ)句,所以打印了一個(gè)“t”,選擇c。(22)D【解析】Case常量表達(dá)式只是起語(yǔ)句標(biāo)號(hào)作用,并不是該處進(jìn)行條件判斷。在執(zhí)行switch語(yǔ)句時(shí),根據(jù)switch的表達(dá)式,找到與之匹配的ease語(yǔ)句,就從此cafle子旬執(zhí)行下去,不再進(jìn)行判斷,直到碰到break或函數(shù)結(jié)束為止。簡(jiǎn)單的說(shuō)break是結(jié)束整個(gè)循環(huán)體,而continue是結(jié)束單次循環(huán)。B選項(xiàng)中當(dāng)產(chǎn)生的隨機(jī)數(shù)n為4時(shí)要執(zhí)行打印操作。c選項(xiàng)中當(dāng)產(chǎn)生的隨機(jī)數(shù)為l和2時(shí)分別執(zhí)行cage3與case4后面語(yǔ)句的內(nèi)容。由于存在break語(yǔ)句所以for循環(huán)不是固定執(zhí)行8次,執(zhí)行次數(shù)與產(chǎn)生的隨機(jī)數(shù)n有關(guān)系。
(23)A【解析】第一次調(diào)用Ill=f(f(f(1))),第二次為m
=f(f(2)),第三次為m=f(4),即返回值為8。
(24)A【勰析l不能將一個(gè)整數(shù)直接賦給指針變量作為地址,所以A是錯(cuò)誤的。函數(shù)的返回值可以是地址,即指針。函數(shù)調(diào)用中形參值的變化不會(huì)傳遞給實(shí)參。
(25)B【解析】指針是用來(lái)存放地址的變量,用(類(lèi)型名+指針變量名)的形式定義。賦值時(shí)應(yīng)將某個(gè)變量地址即8Ⅸ賦給指針變量,所以選擇8。
(26)D【解析】D選項(xiàng)中x[2][3]定義的是一個(gè)兩行三列的二維數(shù)組,而在給數(shù)組元素賦值時(shí)卻賦成了三行,所以錯(cuò)誤。
(27)A【解析】本題中的函數(shù)fun()的功能是將數(shù)組k中前5個(gè)元素倒序,所以返回后數(shù)組k中的元素排列是5,4,3,2,1,6,7,8,9,10。所以打印輸出k[2]到k[7]元素的值,即321678,所以選擇A。
(28)A【解析】本題中由fun函數(shù)可知,b[O]=a[o][0]一a[0][3]=1—4=一3,b[1]=a[1][1]一[1][2]=6—7=一1,b[2]=a[Z][2]一[2][1]=11一10=1,b[3]=8[3][3]一[3][1]=16—13=3。所以主函數(shù)中打印Y數(shù)組元素的值為A選項(xiàng)。
(29)C【解析】字符串的輸入不能使用scanf(”%s”,s);而應(yīng)該使用9ets(s)。
(30)A【解析】根據(jù)題目中的定義可以知道sizeof(p),計(jì)算的是數(shù)組P中所有元素所占用的字節(jié)數(shù),而不是ch”型數(shù)據(jù)所占字節(jié)數(shù)。
(31)A【解析】P是指向二維字符數(shù)組第二行One+Dream!的數(shù)組指針,所以長(zhǎng)度是l0,打印輸出的也是該字符串。
(32)B【解析】本題中遇到“\”字符循環(huán)結(jié)束,所以只統(tǒng)計(jì)“\”之前的數(shù)字字符,所以為3。
(33)A【解析1聲明靜態(tài)局部變量:函數(shù)調(diào)用結(jié)束后,其占用的`存儲(chǔ)單元不釋放,在下次該函數(shù)調(diào)用時(shí),該變量保留上一次函數(shù)調(diào)用結(jié)束時(shí)的值。本題子函數(shù)tim中的變量i和m均為靜態(tài)局部變量。所以第一次調(diào)用fun函數(shù),返回m的值為5,第二次再調(diào)用fun函數(shù)時(shí),i的值為3,nl的值已經(jīng)是5了,所以執(zhí)行i+=m+1,i的值變?yōu)?,nl=i+x+Y=9+1+l=11。
(34)C【解析】aut0:函數(shù)中的局部變量,動(dòng)態(tài)地分配存儲(chǔ)空間,數(shù)據(jù)存儲(chǔ)在動(dòng)態(tài)存儲(chǔ)區(qū)中,在調(diào)用該函數(shù)時(shí)系統(tǒng)會(huì)給它們分配存儲(chǔ)空間,在函數(shù)調(diào)用結(jié)束時(shí)就自動(dòng)釋放這些存儲(chǔ)空問(wèn)。register:為了提高效率,C語(yǔ)言允許將局部變量的值放在cPU中的寄存器中,這種變量叫“寄存器變量”,只有局部自動(dòng)變量和形式參數(shù)可以作為寄存器變量。extem:#1’部變量(即全局變量)是在函數(shù)的外部定義的,它的作用域?yàn)閺淖兞慷x處開(kāi)始,到本程序文件的末尾。如果外部變量不在文件的開(kāi)頭定義,其有效的作用范圍只限于定義處到文件終了。static:靜態(tài)局部變量屬于靜態(tài)存儲(chǔ)類(lèi)別,在靜態(tài)存儲(chǔ)區(qū)內(nèi)分配存儲(chǔ)單元。在程序整個(gè)運(yùn)行期間都不釋放。
(35)A【解析】A選項(xiàng)stnlet onl{int x;int y;int 2;struet ora a;錯(cuò)誤,不能在定義結(jié)構(gòu)體的同時(shí),又用結(jié)構(gòu)體類(lèi)型名定義變量。應(yīng)該寫(xiě)成B選項(xiàng)或者D選項(xiàng)的格式。
(36)B【解析l結(jié)構(gòu)體變量可以作為函數(shù)的參數(shù)和返回值。作為函數(shù)的實(shí)參時(shí),可以實(shí)現(xiàn)函數(shù)的傳值調(diào)用。當(dāng)使用結(jié)構(gòu)體變量作為函數(shù)的形參時(shí),實(shí)參也應(yīng)該是結(jié)構(gòu)體變量名以實(shí)現(xiàn)傳值調(diào)用,實(shí)參將拷貝副本給形參,在被調(diào)用函數(shù)中改變形參值對(duì)于調(diào)用函數(shù)中的實(shí)參沒(méi)有影響。所以選擇B。
(37)A【解析】預(yù)處理命令是以“#”號(hào)開(kāi)頭的命令,它們不是C語(yǔ)言的可執(zhí)行命令,這些命令應(yīng)該在函數(shù)之外書(shū)寫(xiě),一般在源文件的最前面書(shū)寫(xiě),但不是必須在起始位置書(shū)寫(xiě),所以B、c錯(cuò)誤。C語(yǔ)言的預(yù)處理能夠?qū)崿F(xiàn)宏定義和條件編譯等功能,所以D錯(cuò)誤。
(38)C【解析】nlaIloc(sizeof(int))的作用是開(kāi)辟一個(gè)長(zhǎng)度為sizeof(int)存儲(chǔ)空間,并通過(guò)強(qiáng)制類(lèi)型轉(zhuǎn)換(int。)將此存儲(chǔ)空間的地址賦給了一個(gè)整型的指針變量P。然后執(zhí)行語(yǔ)句·P=n,使得·p的值為10,并通過(guò)return返回此值,即a的值為l0。然后在主函數(shù)中輸出a+ftm(10)=10+10=20。
(39)B【解析】無(wú)符號(hào)整型變量a的值為8,二進(jìn)制表示為00001000,右移3位后為00000001,即十進(jìn)制的l,所以輸出1。
(40)D【解析】fread(void}buffer,size—t size,size—tcount,F(xiàn)ILE}stream);功能是從一個(gè)文件流中讀數(shù)據(jù),讀取count個(gè)元素。每個(gè)元素size字節(jié),如果調(diào)用成功返回count。buffer:用于接收數(shù)據(jù)的內(nèi)存地址,大小至少是size * count字節(jié);size:?jiǎn)蝹(gè)元素的大小,單位是字節(jié);count:元素的個(gè)數(shù),每個(gè)元素是size字節(jié);Stream:輸人流。
二、程序填空題
(1)0
(2)10*x
(3)n/10
【考點(diǎn)分析】
本題考查:已知某數(shù),如何求該數(shù)各個(gè)位數(shù)值,已知各個(gè)位數(shù)值,如何表示該數(shù);除法運(yùn)算。
【解題思路】
填空l(shuí):定義變量t用來(lái)存放某數(shù)的各個(gè)位數(shù)值,此處判斷t是否為偶數(shù),即對(duì)2求余結(jié)果是否為0。
填空2:將t作為x的個(gè)位數(shù),原來(lái)x的各個(gè)位上升l位,即x=10{x+1。
填空3:每循環(huán)一次,通過(guò)除法運(yùn)算,去掉數(shù)值最后一位。
【解題寶典】
如果知道某數(shù)n的各個(gè)位的數(shù)值,可以得到該數(shù)值n,如n的個(gè)位為a、十位為b、百位為c,那么n=c}100+b*10+a。如果知道數(shù)值n,可以采用求余和除法操作來(lái)表示其各個(gè)位,如n%10(取個(gè)位)、n/J0(取十位),讀者可以自己考慮一下,如果是三位數(shù),如何提取各個(gè)位?四位數(shù)呢?
三、程序修改題
【參考答案】
(1)}t=0;(2)if(d%2 1=O)或if(d%2==1)
【考點(diǎn)分析】
本題考查:指針型變量作為函數(shù)參數(shù);if語(yǔ)句條件表達(dá)式,結(jié)合奇偶數(shù)的表示方法來(lái)確定該表達(dá)式內(nèi)容。
【解題思路】
(1)由函數(shù)定義可知,變量t是指針變量,所以對(duì)t進(jìn)行賦初值0是不對(duì)的。因?yàn)閠指向的是存放新數(shù)的變量,所以此處應(yīng)給新數(shù)賦初值0,即。t=0。
(2)變量d表示數(shù)S各個(gè)位上的數(shù),此處的if條件應(yīng)為判斷d是否為奇數(shù)。
四、程序設(shè)計(jì)題
【參考答案】
voidfun(char pl[],char p2[])
in“,j;
for(i=0;pl[i]f=。、0’;i++);
for(j=0;p2[j]!=。、0’;j++)p1[i++]=p2[j];
p1[i],_。、0’;}
【考點(diǎn)分析】“
本題考查:不使用字符串函數(shù)實(shí)現(xiàn)字符串連接操作。通過(guò)for循環(huán)語(yǔ)句來(lái)完成,不要忘了最后需要加上字符串結(jié)束標(biāo)識(shí)‘、0’。
【解題思路】
本題用兩個(gè)循環(huán)完成操作,第1個(gè)循環(huán)的作用是求出第l個(gè)字符串的長(zhǎng)度,即將i指到第1個(gè)字符串的末尾。第2個(gè)循環(huán)的作用是將第2個(gè)字符串的字符連到第l個(gè)字符申的末尾。最后在第l個(gè)字符串的結(jié)尾加上字符串結(jié)束標(biāo)識(shí)‘、0’。
【計(jì)算機(jī)二級(jí)《C語(yǔ)言》考試題及答案】相關(guān)文章:
計(jì)算機(jī)二級(jí)《C語(yǔ)言》備考試題及答案06-18
2016計(jì)算機(jī)二級(jí)《C語(yǔ)言》無(wú)紙化考試題及答案09-19
2017全國(guó)計(jì)算機(jī)二級(jí)《C語(yǔ)言》考試題及答案10-22
計(jì)算機(jī)二級(jí)C語(yǔ)言考試上機(jī)考試題及答案10-29
全國(guó)計(jì)算機(jī)二級(jí)《C語(yǔ)言》機(jī)考試題及答案09-22
計(jì)算機(jī)二級(jí)C語(yǔ)言試題及答案05-19
全國(guó)計(jì)算機(jī)二級(jí)考試C語(yǔ)言備考試題及答案09-18