版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
國(guó)家二級(jí)C語(yǔ)言機(jī)試(選擇題)模擬試卷31(共9套)(共270題)國(guó)家二級(jí)C語(yǔ)言機(jī)試(選擇題)模擬試卷第1套一、選擇題(本題共40題,每題1.0分,共40分。)1、C語(yǔ)言源程序名的后綴是A、.exeB、.objC、.cD、.cp標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:南C語(yǔ)言構(gòu)成的指令序列稱(chēng)為C源程序,源程序文件的后綴為“.c”。源程序經(jīng)過(guò)c編譯程序編譯乍成后綴為“.obj,的二進(jìn)制文件(稱(chēng)為目標(biāo)文件),然后由稱(chēng)為“連接程序”(Link)的軟件把目標(biāo)文件.0bj語(yǔ)言提供的各種庫(kù)函數(shù)連接起來(lái),生成后綴為“.exe”的可執(zhí)行文件。2、下列敘述中正確的是()。A、二分查找法只適用于順序存儲(chǔ)的有序線(xiàn)性表B、二分查找法適用于任何存儲(chǔ)結(jié)構(gòu)的有序線(xiàn)性表C、二分查找法適用于有序循環(huán)鏈表D、二分查找法適用于有序雙向鏈表標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:二分查找法(又稱(chēng)對(duì)分查找法)只適用于順序存儲(chǔ)的有序表。在此所說(shuō)的有序表是指線(xiàn)性表的中元素按值非遞減排列(即從小到大,但允許相鄰元素值相等)。3、某二叉樹(shù)共有12個(gè)結(jié)點(diǎn),其中葉子結(jié)點(diǎn)只有1個(gè)。則該二叉樹(shù)的深度為(根結(jié)點(diǎn)在第1層)A、3B、6C、8D、12標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:根據(jù)二叉樹(shù)的性質(zhì),度為0的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為2的結(jié)點(diǎn)多一個(gè)。題目中的二叉樹(shù)的葉子結(jié)點(diǎn)為1,因此度為2的結(jié)點(diǎn)的數(shù)目為0,故該二叉樹(shù)為12層,每層只有一個(gè)結(jié)點(diǎn)。4、下列對(duì)于線(xiàn)性鏈表的描述中正確的是A、存儲(chǔ)空間不一定連續(xù),且各元素的存儲(chǔ)順序是任意的B、存儲(chǔ)空間不一定連續(xù),且前件元素一定存儲(chǔ)在后件元素的前面C、存儲(chǔ)空間必須連續(xù),且前件元素一定存儲(chǔ)在后件元素的前面D、存儲(chǔ)空間必須連續(xù),且各元素的存儲(chǔ)順序是任意的標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:一般來(lái)說(shuō),在線(xiàn)性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)中,各數(shù)據(jù)結(jié)點(diǎn)的存儲(chǔ)序號(hào)是不連續(xù)的,并且各結(jié)點(diǎn)在存儲(chǔ)空間中的位置關(guān)系與邏輯關(guān)系也不一致。在線(xiàn)性鏈表中,各數(shù)據(jù)元素之間的前后件關(guān)系是由各結(jié)點(diǎn)的指針域來(lái)指示的,指向線(xiàn)性表中第一個(gè)結(jié)點(diǎn)的指針head稱(chēng)為頭指針,當(dāng)head=NULL(或0)時(shí)稱(chēng)為空表。5、在長(zhǎng)度為64的有序線(xiàn)性表中進(jìn)行順序查找,最壞情況下需要比較的次數(shù)為()。A、63B、64C、6D、7標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:順序查找又稱(chēng)順序搜索。順序查找一般是指在線(xiàn)性表中查找指定的元素,其基本方法是:從線(xiàn)性表的第一個(gè)元素開(kāi)始,依次將線(xiàn)性表中的元素與被查找的元素進(jìn)行比較,若相等則表示找到(即查找成功)。若線(xiàn)性表中所有元素都與被查元素進(jìn)行了比較但都不相等,則表示線(xiàn)性表中沒(méi)有要找的元素(即查找失敗)。如果線(xiàn)性表中的第一個(gè)元素就是要查找的元素,則只需要做一次比較就查找成功,但如果要查找的元素是線(xiàn)性表中的最后一個(gè)元素或者要查找元素不在線(xiàn)性表中,則需要與線(xiàn)性表中所有元素進(jìn)行比較,這是順序查找的最壞情況,比較次數(shù)為線(xiàn)性表的長(zhǎng)度。6、設(shè)有語(yǔ)句:if(a==1)b=2;c=3;,以下語(yǔ)句中與之等價(jià)的是()。A、if(a==1){b=2;c=3;}B、if(a!=1){;}else{b=2;c=3;}C、if(a==1)c=3;b=2;D、(a==1)?b=2:a=a;c=3;標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在C語(yǔ)言中,用分號(hào)表示一條語(yǔ)句的結(jié)束,用{}把幾條語(yǔ)句放在一塊表示一個(gè)語(yǔ)句塊,其整體表示一個(gè)功能。因而在題目給出的四個(gè)選項(xiàng)中,選項(xiàng)A、B、C均與題中所給不同,而選項(xiàng)D相同。7、設(shè)有一個(gè)棧與一個(gè)隊(duì)列的初始狀態(tài)均為空?,F(xiàn)有一個(gè)序列A,B,C,D,E,F(xiàn),G,H。先分別將序列中的前4個(gè)元素依次入棧,后4個(gè)元素依次入隊(duì);然后分別將棧中的元素依次退棧,再將隊(duì)列中的元素依次退隊(duì)。最后得到的序列為A、D,C,B,A,E,F(xiàn),G,HB、D,C,B,A,H,G,F(xiàn),EC、A,B,C,D,E,F(xiàn),G,HD、A,B,C,D,H,G,F(xiàn),E標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:棧(stack)又名堆棧,它是一種運(yùn)算受限的線(xiàn)性表。其限制是僅允許在表的一端進(jìn)行插入和刪除運(yùn)算。因此棧的出棧順序是先入后出,所以順序是D,C,B,A。隊(duì)列是一種特殊的線(xiàn)性表,特殊之處在于它只允許在表的前端(front)進(jìn)行刪除操作,而在表的后端(rear)進(jìn)行插入操作,和棧一樣,隊(duì)列是一種操作受限制的線(xiàn)性表。進(jìn)行插入操作的端稱(chēng)為隊(duì)尾,進(jìn)行刪除操作的端稱(chēng)為隊(duì)頭。因此,隊(duì)的出隊(duì)順序是,先入先出,所以順序是E,F(xiàn),G,H。最后的順序是:D,C,B,A,E,F(xiàn),G,H。8、若有定義語(yǔ)句:intx=10;則表達(dá)式x-=x+x的值為A、-20B、0C、-10D、10標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:表達(dá)式x-=x+x等價(jià)于x=x-(x+x),整型變量x的初始值等于10,計(jì)算題目所求表達(dá)式的值時(shí),首先計(jì)算x與x的和等丁20,然后再用10減去20等于-10,得到該表達(dá)式的值。9、結(jié)構(gòu)化程序設(shè)計(jì)中,下面對(duì)GOTO語(yǔ)句使用描述正確的是()。A、禁止使用GOTO語(yǔ)句B、使用GOTO語(yǔ)句程序效率高C、應(yīng)避免濫用GOTO語(yǔ)句D、GOTO語(yǔ)句確實(shí)一無(wú)是處標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:濫用GOTO語(yǔ)句確實(shí)有害,應(yīng)盡量避免;完全避免使用GOTO語(yǔ)句并非是明智的方法,有些地方使用GOTO語(yǔ)句會(huì)使程序流程更清楚、效率更高;爭(zhēng)論的焦點(diǎn)不應(yīng)該放在是否取消GOTO語(yǔ)句,而應(yīng)該放在用在什么程序結(jié)構(gòu)上。10、某二叉樹(shù)的前序遍歷序列與中序遍歷序列相同,均為ABCDEF,則按層次輸出(同一層從左到右)的序列為A、ABCDEFB、BCDEFAC、FEDCBAD、DEFABC標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:前序遍歷次序:根左右;中序遍歷次序:左根右。由定義可以知道:①前序遍歷中第一個(gè)就是樹(shù)根結(jié)點(diǎn),即A結(jié)點(diǎn);②在中序遍歷中,根結(jié)點(diǎn)左邊的是左子樹(shù)集,右邊的是右子樹(shù)集,即BCDEF是根結(jié)點(diǎn)A的右子樹(shù)集合。問(wèn)題就會(huì)轉(zhuǎn)化為:求前序遍歷是BCDEF,中序遍歷是BCDEF的子樹(shù),方法同上。詳細(xì)推理過(guò)程:步驟1:由ABCDEF得出根結(jié)點(diǎn)為A,由中序遍歷可知:左子樹(shù)為空,A{BCDEF};步驟2:由BCDEF得出右子樹(shù)集合的根節(jié)點(diǎn)為B,由中序可知:左子樹(shù)為空,B{CDEF};步驟3:同理,二叉樹(shù)更新后如下。所以按層次輸出(同一層從左到右)的序列為ABCDEF,選項(xiàng)A正確。11、有以下程序:#includeintfun(intx,inty){if(x==y)return(x);elsereturn((x+y)/2);}main(){inta=1,b=2,c=3;printf("%d\n",fun(2*a,fun(b,c)));}程序運(yùn)行后的輸出結(jié)果是()。A、2B、3C、4D、5標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:fun(b,c)即fun(2,3),2!=3,所以返回(2+3)/2=2;fun(2*a,2)即fun(2,2),2==2,所以返回2。12、設(shè)有定義:intx=2;,以下表達(dá)式中,值不為6的是()。A、2*x,x+=2B、x++,2*xC、x*=(1+x)D、x*=x+1標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:A選項(xiàng)中逗號(hào)表達(dá)式先計(jì)算第一表達(dá)式2*x,然后計(jì)算表達(dá)式x+=2的值,即x=x+2即4,整個(gè)逗號(hào)表達(dá)式為第二個(gè)表達(dá)式的值4,所以選擇A選項(xiàng)。B選項(xiàng)中首先計(jì)算逗號(hào)表達(dá)式中第一表達(dá)式x++,此時(shí)x為3,再執(zhí)行第二個(gè)表達(dá)式2*x=2*3=6,所以逗號(hào)表達(dá)式為第二個(gè)表達(dá)式的值6。C選項(xiàng)的賦值表達(dá)式可以表示為x=x*(1+x)=2*(1+2)=6。D選項(xiàng)中的表達(dá)式可以表示為x=x*(x+1)=2*3=6。13、程序流程圖中帶有箭頭的線(xiàn)段表示的是A、圖元關(guān)系B、數(shù)據(jù)流C、控制流D、調(diào)用關(guān)系標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:程序流程圖是一種傳統(tǒng)的、應(yīng)用廣泛的軟件過(guò)程設(shè)計(jì)工具,通常也稱(chēng)為程序框圖。其中,用帶箭頭的線(xiàn)段表示控制流,用柜形表示加工步驟,用菱形表示邏輯條件。14、下列結(jié)構(gòu)中屬于非線(xiàn)性結(jié)構(gòu)的是A、二叉鏈表B、二維數(shù)組C、循環(huán)隊(duì)列D、雙向鏈表標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:線(xiàn)性結(jié)構(gòu)是一個(gè)有序數(shù)據(jù)元素的集合。常用的線(xiàn)性結(jié)構(gòu)有:線(xiàn)性表,棧,隊(duì)列,雙隊(duì)列,數(shù)組,串;常見(jiàn)的非線(xiàn)性結(jié)構(gòu)有:二維數(shù)組,多維數(shù)組,廣義表,樹(shù)(二叉樹(shù)等),圖。循環(huán)隊(duì)列、雙向鏈表和二叉鏈表都是線(xiàn)性結(jié)構(gòu),而二維數(shù)組是非線(xiàn)性結(jié)構(gòu)。15、要求通過(guò)while循環(huán)不斷讀入字符,當(dāng)讀入字母N時(shí)結(jié)束循環(huán)。若變量已正確定義,以下正確的程序段是()。A、while(ch=getchar()=’N’)printf("%c",ch);B、while((ch=getchar())!=’N’)printf("%c",ch);C、while(ch=getchar()==’N’)printf("%c",ch);D、while((ch=getchar())==’N’)printf("%c",ch);標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在C語(yǔ)言中,等于號(hào)用“==”表示,一個(gè)“=”表示賦值,當(dāng)讀入字母N時(shí),選項(xiàng)A中,while后的條件值為“N”,是非零數(shù),條件成立,循環(huán)繼續(xù)執(zhí)行,所以A選項(xiàng)錯(cuò)誤。C、D選項(xiàng)的含義都是如果輸入的字符為“N”,則打印輸出,所以正好和題意相反。16、以下數(shù)組定義中錯(cuò)誤的是()。A、intx[2][3]={1,2,3,4,5,6};B、intx[][3]={0};C、intx[][3]={{1,2,3},{4,5,6}};D、intx[2][3]={{1,2},{3,4},{5,6}};標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:二維數(shù)組的第一維數(shù)據(jù)表示行數(shù),第二維數(shù)據(jù)表示列數(shù),所以x[2][3]中的數(shù)據(jù)應(yīng)為兩行三列,和定義內(nèi)容不符,選項(xiàng)D錯(cuò)誤,答案選D。17、if語(yǔ)句的基本形式是:if(表達(dá)式)語(yǔ)句,以下關(guān)于“表達(dá)式”值的敘述中正確的是()。A、必須是邏輯值B、必須是整數(shù)值C、必須是正數(shù)D、可以是任意合法的數(shù)值標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:if語(yǔ)句中的表達(dá)式可以是任意合法的數(shù)值,如常量、變量表達(dá)式,所以D選項(xiàng)正確。18、數(shù)據(jù)庫(kù)系統(tǒng)的核心是A、數(shù)據(jù)模型B、數(shù)據(jù)庫(kù)管理系統(tǒng)C、數(shù)據(jù)庫(kù)D、數(shù)據(jù)庫(kù)管理員標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)是數(shù)據(jù)庫(kù)的機(jī)構(gòu),它是一種系統(tǒng)軟件,負(fù)責(zé)數(shù)據(jù)庫(kù)中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護(hù)、控制及保護(hù)和數(shù)據(jù)服務(wù)等。所以,數(shù)據(jù)庫(kù)管理系統(tǒng)是數(shù)據(jù)系統(tǒng)的核心。19、以下程序的輸出結(jié)果是()。#include<stdio.h>main(){inta=4,b=3,c=2,d=1;printf(’’%d’’,a<b?a:d<c?d:b);}A、1B、3C、2D、4標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:條件表達(dá)式的格式為:’’a?b:c’’,它的功能是:當(dāng)a為真時(shí),表達(dá)式的值等于b的值;當(dāng)a為假時(shí),表達(dá)式的值等于c的值。因?yàn)闂l件運(yùn)算符的結(jié)合方向?yàn)椤白杂蚁蜃蟆?。因此,?dāng)表達(dá)式中嵌套使用條件表達(dá)式時(shí),應(yīng)先計(jì)算右邊的條件表達(dá)式,再計(jì)算左邊的條件表達(dá)式。題中應(yīng)先計(jì)算“d<c?d:b”的“d<c”關(guān)系表達(dá)式的值,因?yàn)椤癲=1<c=2”為真,所以取第一個(gè)表達(dá)式的值,即d的值作為整個(gè)表達(dá)式的值。接著計(jì)算“a<b?a:d”,“a=4<b=3”為假,取第二個(gè)表達(dá)式的值,即d的值作為整個(gè)表達(dá)式的值。20、設(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ī)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:關(guān)鍵字是指屬性或?qū)傩缘慕M合,其值能夠唯一地標(biāo)識(shí)一個(gè)元組,而在SC中學(xué)號(hào)和課號(hào)的組合可以對(duì)元組進(jìn)行唯一的標(biāo)識(shí)。21、在下列關(guān)系運(yùn)算中,不改變關(guān)系表中的屬性個(gè)數(shù)但能減少元組個(gè)數(shù)的是A、并B、交C、投影D、笛卡兒乘積標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:關(guān)系R與S經(jīng)交運(yùn)算后所得到的關(guān)系是由那些既在R內(nèi)又在S內(nèi)的有序組所組成,記為R∩S。形式定義如下:R∩S≡{t∈R∧t∈S}=R-(R-S)。所以不改變關(guān)系表中的屬性個(gè)數(shù),但能減少元組個(gè)數(shù)的是關(guān)系表之間的交操作。22、若有以下程序intf(inta[],intn){if(n>1){intt;t=f(a,n-1);returnt>a[n-1]?t:a[n-1];}elsereturna[0];}main(){inta[]={8,2,9,1,3,6,4,7,5};printf("%dEn",f(a,9));}則程序的輸出結(jié)果是A、9B、1C、8D、5標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:主函數(shù)中調(diào)用f(a,9),遞歸函數(shù)的調(diào)用過(guò)程如下:f(a,9)→f[a,8)→f(a,7)→f(a,6)→f(a,5)→f(a,4)→f(a,3)→f(a,2)→f(a,1),f(a,1)得到返回值為a[0],值為8,遞歸過(guò)程開(kāi)始回歸,回歸過(guò)程描述如下:8>a[1],返回8→8>a[2]不成立,返回a[2]的值為9……因此函數(shù)f的主要功能為汁算數(shù)組中的最大值。主函數(shù)中輸出最大值為9。23、有以下程序:#include<stdio.h>intfun(intx[],intn){staticintsum=0,i;for(i=0;i<n;i++)sum+=x[i];returnsum}main(){inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0;s=fun(a,5)+fun(b,4);printf("%d\n",s);}程序的運(yùn)行結(jié)果是()。A、55B、50C、45D、60標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:內(nèi)部靜態(tài)變量是始終存在的,當(dāng)函數(shù)被調(diào)用退出后,內(nèi)部靜態(tài)變量會(huì)保存數(shù)據(jù),再次調(diào)用該函數(shù)時(shí),以前調(diào)用時(shí)的數(shù)值仍然保留著。fun(a,5)的值是15,再次調(diào)用后sum=15,所以fun(b,4)=45,s=45+15=60,因此D選項(xiàng)正確。24、以下敘述中正確的是A、語(yǔ)句inta[]={0};是不合法的,遺漏了數(shù)組的大小B、語(yǔ)句chara[2]={"A","B"};是合法的,定義了一個(gè)包含兩個(gè)字符的數(shù)組C、語(yǔ)句inta[8]={0};是合法的D、語(yǔ)句chara[3];a="AB":是合法的,因?yàn)閿?shù)組有三個(gè)字符空間的容量,可以保存兩個(gè)字符標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:當(dāng)系統(tǒng)為所定義的數(shù)組在內(nèi)存中開(kāi)辟一串連續(xù)的存儲(chǔ)單元時(shí).這些存儲(chǔ)單元中并沒(méi)有確定的值,可以在定義語(yǔ)句中為所定義數(shù)組的各個(gè)元素賦初值。數(shù)組初始化賦值是指在數(shù)組定義時(shí)給數(shù)組元素賦予初值。初始化賦值的一般形式為:類(lèi)型說(shuō)明符數(shù)組名[常量表達(dá)式]={值,值,…,};。需要注意的是當(dāng)所賦初值多于所定義數(shù)組的元素個(gè)數(shù)時(shí),在編譯時(shí)將給出出錯(cuò)信息,在指定初值時(shí),第一個(gè)初值必定賦給下標(biāo)為0的元素,然后按這些數(shù)值的排列順序賦初值,只能給元素逐個(gè)賦值,不能給數(shù)組整體賦值。如果給全部元素賦值,則在數(shù)組說(shuō)明中,可以不給出數(shù)組元素的個(gè)數(shù)。25、在16位編譯系統(tǒng)上,若有定義“inta[]={10,20,30},*p=a;”,當(dāng)執(zhí)行“p++;”后,下列說(shuō)法錯(cuò)誤的是A、p向高地址移了一個(gè)字節(jié)B、p向高地址移了一個(gè)存儲(chǔ)單元C、p向高地址移了兩個(gè)字節(jié)D、p與a+1等價(jià)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查數(shù)組和數(shù)組指針。a是一個(gè)整型數(shù)組,p指針指向a數(shù)組,即p指向a數(shù)組的首元素的地址,因此p++之后,p往高地址移動(dòng),指向首元素后面一個(gè)元素的地址。26、有以下程序#includeintfun(intn){inta;if(n==1)return1;a=n+fun(n-1);return(a);}main(){printf("%d\n",fun(5));}程序的輸出結(jié)果是A、14B、10C、15D、9標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:函數(shù)fun為遞歸定義的函數(shù),當(dāng)調(diào)用fun(5)→5+fun(4)→5+4+fun(3)→5+4+3+fun(2)→5+4+3+2+fun(1),因此最后的結(jié)果為15。27、有以下程序main(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;}printf("%d,%d\n",a,b);}程序運(yùn)行后的輸出結(jié)果是A、8,11B、10,14C、7,11D、9,18標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在這段程序中變量a的初值等于1,變量b的初值等于2。第1次執(zhí)行for循環(huán)語(yǔ)句后,變量a的值等于3,變量b的值等于3。第2次執(zhí)行for循環(huán)后,變量a等于6,變量b的值等于7。第3次執(zhí)行for循環(huán)后,變量a等于9,變量b的值等于14。第4次執(zhí)行for循環(huán)后,變量a等于10,這時(shí)退出for循環(huán),此時(shí)變量b的值等于14。因而程序輸出變量a,b的值分別為10,14。28、下結(jié)構(gòu)體說(shuō)明和變量定義中,正確的是A、typedefstructabc{intn;doublem;}abc;abcx,y;B、structabc{intn;doublem);structabcx,y;C、structabc{intn;doublem;}structabcx,y;D、structabc{intn;doublem;};abcx,y;標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:選項(xiàng)B中結(jié)構(gòu)體定義中每個(gè)成員后面的分號(hào)都不能省略,doublem后沒(méi)分號(hào),因此錯(cuò)誤。選項(xiàng)C結(jié)構(gòu)體類(lèi)型定義完畢后,}外沒(méi)加分號(hào)。選項(xiàng)D中定義變量要加上關(guān)鍵字struct。29、以下選項(xiàng)中合法的標(biāo)識(shí)符是A、1__B、1-1C、1_1D、_11標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:C語(yǔ)言中的標(biāo)識(shí)符由下劃線(xiàn)、字母和數(shù)字組成,且必須以下劃線(xiàn)或字母開(kāi)始,所以只有D選項(xiàng)正確。30、有以下程序intfun(intn)main(){if(n==1)return1;{intx;Elsescanf("%d",&x);x=fun(x);return(n+fun(n—1));printf("%d\n",x);}}執(zhí)行程序時(shí),給變量x輸入10,程序的輸出結(jié)果是A、54B、65C、45D、55標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在C語(yǔ)言中函數(shù)可以遞歸調(diào)用,即直接或間接地自己調(diào)用自己。本題在函數(shù)intfun(intn)的定義中又出現(xiàn)了對(duì)函數(shù)fun的調(diào)用,所以函數(shù)fun是遞歸函數(shù)。因而在主函數(shù)中調(diào)用x=fun(x)時(shí),當(dāng)輸入10賦給變量x時(shí),遞歸調(diào)用的過(guò)程為:fun(10)=10+fun(9)=10+9+fun(8)=10+9++8+fun(7)=10+9++8+7+fun(6)=10+9++8+7+6+fun(6)=10+9++8+7+6+5+fun(4)=10+9++8+7+6+5+4+fun(3)=10+9++8+7+6+5+4+3+fun(2)=10+9++8+7+6+5+4+3+2+fun(1)=10+9++8+7+6+5+4+3+2+1=5531、設(shè)有以下語(yǔ)句typedefstructTT{charc;inta[4];}CIN;則下面敘述中正確的是A、TT是struct類(lèi)型的變量B、可以用TT定義結(jié)構(gòu)體變量C、CIN是structTT類(lèi)型的變量D、可以用CIN定義結(jié)構(gòu)體變量標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:C語(yǔ)言允許用typedef說(shuō)明一種新的類(lèi)型名,說(shuō)明新類(lèi)型名的語(yǔ)句為一般形式為:typedef類(lèi)型名標(biāo)識(shí)符在此,“類(lèi)型名”必須是此語(yǔ)句之前已有定義的類(lèi)型標(biāo)識(shí)符?!皹?biāo)識(shí)符”是一個(gè)用戶(hù)定義標(biāo)識(shí)符,用作新的類(lèi)型名。typedef語(yǔ)句的作用僅僅是用“標(biāo)識(shí)符”來(lái)代表已存在的“類(lèi)型名”,并未產(chǎn)生新的數(shù)據(jù)類(lèi)型,原有類(lèi)型名依然有效。在本題中用typedef定義CIN為T(mén)T的一種新的類(lèi)型名,因而可以用它定義一個(gè)結(jié)構(gòu)體變量。32、有以下程序#includevoidmain(){inta[]={2,3,5,4},i;for(i=0;i<4;i++)switch(i%2){case0:switch(a[i]%2){case0:a[i]++;break;case1:a[i]--;}break;case1:a[i]=0;}for(i=0;i<4;i++)printf("%d",a[i]);printf("\n");}程序運(yùn)行后的輸出結(jié)果是A、2050B、3344C、3040D、0304.標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在主函數(shù)的for循環(huán)語(yǔ)句中,當(dāng)循環(huán)變量i的值等于0,2時(shí),執(zhí)行switch中的case0語(yǔ)句,分別對(duì)數(shù)組元素a[0]和a[2]加1和減1,所以a[0]的值等于3,a[2]等于4。當(dāng)循環(huán)變量i的值等于1,3時(shí),執(zhí)行switch中的case1語(yǔ)句,把數(shù)組元素a[1]和a[3]的值賦為0。所以輸出數(shù)組a的元素,其結(jié)果為3040。33、有以下程序voidswap(char*x,char*y){chart;t=*x;*x=*y;*y=t;}main(){char*s1="abc",*s2="123";swap(s1,s2);printf("%s,%s\n",s1,s2);}程序執(zhí)行后的輸出結(jié)果是A、abe,123B、123,abcC、321,cbaD、1bc,a23標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:函數(shù)voidswap(char*x,char*y)的功能是交換兩個(gè)字符*x和*y中的內(nèi)容。在主函數(shù)中字符指針s1指向字符串’abe’,s2指向字符串’123’。所以函數(shù)swap(s1,s2)的執(zhí)行結(jié)果就是字符’a’和’1’相互交換。34、以下敘述中正確的是A、字符串?dāng)?shù)組,是指數(shù)組中的每個(gè)元素都是一個(gè)存放字符串的一維數(shù)組B、charca[3][5]={"A","BB","CCC"};是不合語(yǔ)法的C、charca[][5]={"A","BB","CCC"};是不合語(yǔ)法的D、char*ca[3]={"A","BB","CCC"};是不合語(yǔ)法的標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查字符串?dāng)?shù)組的相關(guān)知識(shí),選項(xiàng)B、C、D都是合語(yǔ)法的。35、有以下程序,程序的輸出結(jié)果是#include<stdio.h>#defineSQR(X)X*Xmain(){inta=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("%d\n",a);}A、0B、1C、9D、10標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:SQR(k+m)宏展開(kāi)以后為k+m*k+m,值為5,表達(dá)式a/=SQR(k+m)/SQR(k+m)為a=a/(5+5),表達(dá)式值為1。36、在一個(gè)C源程序文件中所定義的全局變量,其作用域?yàn)锳、由具體定義位置和extern說(shuō)明來(lái)決定范圍B、所在程序的全部范圍C、所在函數(shù)的全部范圍D、所在文件的全部范圍標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:全局變量是在函數(shù)外部任意位置上定義的變量,它的作用域是從變量定義的位置開(kāi)始,到整個(gè)源文件結(jié)束止。在同一編譯單位內(nèi)用extern說(shuō)明符擴(kuò)展全局變量的作用域(當(dāng)全局變量定義在后,引用它的函數(shù)在前時(shí),應(yīng)該在引用它的函數(shù)中用extern對(duì)此全局變量進(jìn)行說(shuō)明,以便通知編譯程序:該變量是一個(gè)已在外部定義了的全局變量,已經(jīng)分配了存儲(chǔ)單元,不需要再為它分配存儲(chǔ)單元。這時(shí)全局變量的作用域從extern說(shuō)明處起,延伸到該函數(shù)末尾)。當(dāng)一個(gè)程序由多個(gè)編譯單位構(gòu)成,并且在每個(gè)文件中均需要引用同一個(gè)全局變量,這時(shí)只在其中一個(gè)文件中定義所有的全局變量,而在其他用到這些全局變量的文件中用extern對(duì)這些變量進(jìn)行說(shuō)明。37、若有定義typedefint*T;Ta[10];則a的定義與下面哪個(gè)語(yǔ)句等價(jià)A、int*a[10];B、int(*a)[10];C、int*a;D、inta[10];標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:typedef的主要功能是為存在的類(lèi)型命名,后面的代碼中可以利用該新定義的類(lèi)型名定義變量,題目中定義了整型指針類(lèi)型T,而后利用T定義了整型指針數(shù)組a,含有10個(gè)元素,選項(xiàng)A中定義了整型指針數(shù)組a,選項(xiàng)B定義了一個(gè)指向一維數(shù)組的指針a,選項(xiàng)C定義指針變量,,而選項(xiàng)D為定義整型數(shù)組最常用的形式,數(shù)組a中可以存放10個(gè)數(shù)據(jù)元素。38、若有以下程序typedefstructstu{char*name,gender;intscore;}STU;voidf(char*p){p=(char*)malloc(10);strcpy(p,"Qian");}main(){STUa={NULL,’m’,290},b;a.name=(char*)malloc(10);strcpy(a.name,"Zhao");b=a;f(b.name);b.gender=’f’;b.score=350;printf("%s,%c,%d,",a.name,a.gender,a.score);printf("%s,%c,%d\n",b.name,b.gender,b.score);}則程序的輸出結(jié)果是A、Zhao,m,290,Qian,f,350B、Qian,f,350,Qian,f,350C、Qian,m,290,Qian,f,350D、Zhao,m,290,Zhao,f,350標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:函數(shù)f(char*p)的主要功能申請(qǐng)字符串的存儲(chǔ)空間,然后存入字符串"Qian",但當(dāng)程序調(diào)用結(jié)束以后,形參指針變量p撤銷(xiāo),存儲(chǔ)的字符串地址丟失,而不能更改實(shí)參指針的值。主函數(shù)中結(jié)卡勾體變量定義同時(shí)賦初值,初始情況其name指針成員存儲(chǔ)空,而后語(yǔ)句為其分配存儲(chǔ)空間,存入字符串“Zhao”。執(zhí)行“b=a;”語(yǔ)句后,b的數(shù)據(jù)和a的數(shù)據(jù)相同,調(diào)用函數(shù)f以后,b的name成員的值沒(méi)變。39、有以下程序#includemain(){chars[10]="verygood",*ps=s;ps+=4;ps="nice";puts(s);}程序的運(yùn)行結(jié)果是()。A、verygoodB、veryniceC、nicegoodD、nice標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:數(shù)組名s為一個(gè)指針常量,始終指向該數(shù)組的首地址,語(yǔ)句"ps="nice";"將字符指針ps指向了另一個(gè)字符串的首地址,并不能對(duì)字符數(shù)組s中的數(shù)據(jù)造成影響,所以輸出結(jié)果為"verygood",答案選A。40、有以下程序#includemain(){FILE*fp;charstr[10];fp=fopen("myfile.dat","w");fputs("abc",fp);fclose(fp);fp=fopen("myfile.dat","a+");fprintf(fp,"%d",28);rewind(fp);fscanf(fp,"%s",str);puts(str);fclose(fp);}程序運(yùn)行后的輸出結(jié)果是A、abcB、28cC、abc28D、因類(lèi)型不一致而出錯(cuò)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查文件操作函數(shù)fprintf()函數(shù),fprintf()函數(shù)向文件輸出,將輸出的內(nèi)容輸出到硬盤(pán)上的文件或是相當(dāng)于文件的設(shè)備上執(zhí)行兩次fprintf后文件中有abc28,所以C選項(xiàng)正確。國(guó)家二級(jí)C語(yǔ)言機(jī)試(選擇題)模擬試卷第2套一、選擇題(本題共25題,每題1.0分,共25分。)1、計(jì)算機(jī)軟件的構(gòu)成是()。A、源代碼B、程序和數(shù)據(jù)C、程序和文檔D、程序、數(shù)據(jù)及相關(guān)文檔標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:計(jì)算機(jī)軟件是計(jì)算機(jī)系統(tǒng)中與硬件相互依存的另一部分,是包括程序、數(shù)據(jù)及相關(guān)文檔的完整集合。答案選D。2、下列敘述中正確的是A、線(xiàn)性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)與順序存儲(chǔ)結(jié)構(gòu)所需要的存儲(chǔ)空間是相同的B、線(xiàn)性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)所需要的存儲(chǔ)空間一般要多于順序存儲(chǔ)結(jié)構(gòu)C、線(xiàn)性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)所需要的存儲(chǔ)空間一般要少于順序存儲(chǔ)結(jié)構(gòu)D、以上都不正確標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:線(xiàn)性表的存儲(chǔ)分為順序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)。在順序存儲(chǔ)中,所有元素所占的存儲(chǔ)空間是連續(xù)的。而在鏈?zhǔn)酱鎯?chǔ)的方式中,將存儲(chǔ)空間的每一個(gè)存儲(chǔ)結(jié)點(diǎn)分為兩部分,一部分用于存儲(chǔ)數(shù)據(jù)元素的值,稱(chēng)為數(shù)據(jù)域;另一部分用于存儲(chǔ)下一個(gè)元素的存儲(chǔ)序號(hào),稱(chēng)為指針域。所以線(xiàn)性表的鏈?zhǔn)酱鎯?chǔ)方式比順序存儲(chǔ)方式的存儲(chǔ)空間要大一些。3、以下選項(xiàng)中,合法的一組C語(yǔ)言數(shù)值常量是A、12.0Xa234.5e0B、028.5e.3-0xfC、.1774e1.50abcD、0x8A10.0003.e5標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:八進(jìn)制數(shù)其開(kāi)頭必須是數(shù)字“0”,其數(shù)字包括0~7,而在選項(xiàng)B)中,028是錯(cuò)誤的。浮點(diǎn)數(shù)據(jù)的指數(shù)形式表示常量中,C語(yǔ)言規(guī)定字母e或E之前必須要有數(shù)字,且e或E之后的指數(shù)必須為整數(shù),而選項(xiàng)C)中4e1.5是錯(cuò)誤的。在選項(xiàng)D)中,整型數(shù)據(jù)10,000的表示形式是錯(cuò)誤的。4、有以下程序main(){charc1=’A’,c2=’Y’;printf(’’%d,%d\n’’,C1,c2);}程序的輸出結(jié)果是A、輸出格式不合法,輸出出錯(cuò)信息B、65.90C、65,89D、A.Y標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:C語(yǔ)言允許對(duì)整型變量賦以字符值,也允許對(duì)字符變量賦以整型值。在輸出時(shí),允許把字符變量按整型量輸出,也允許把整型量按字符量輸出。5、某二叉樹(shù)的后序遍歷序列與中序遍歷序列相同,均為ABCDEF,則按層次輸出(同一層從左到右)的序列為A、FEDCBAB、CBAFEDC、DEFCBAD、ABCDEF標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:后序遍歷次序:左右根;中序遍歷次序:左根右。由定義可知:①后序遍歷中最后一個(gè)是樹(shù)的根結(jié)點(diǎn),即F結(jié)點(diǎn);②在中序遍歷中,根結(jié)點(diǎn)左邊的是左子樹(shù)集,右邊的是右子樹(shù)集,即ABCDE是根結(jié)點(diǎn)F的左子樹(shù)集合。問(wèn)題就會(huì)轉(zhuǎn)化為:求后序遍歷是ABCDE,中序遍歷是ABCDE的子樹(shù)。方法同上,因?yàn)橹行虮闅v中,E結(jié)點(diǎn)右邊沒(méi)有結(jié)點(diǎn)了,所以E結(jié)點(diǎn)不包含右子樹(shù),否則就會(huì)被分為2個(gè)子問(wèn)題。以下是這道題的詳細(xì)推理過(guò)程:步驟1:由ABCDEF得出根結(jié)點(diǎn)為F,由中序遍歷可知:{ABCDE}F,右子樹(shù)為空;步驟2:由ABCDE得出左子樹(shù)集合的根節(jié)點(diǎn)為E,由中序可知:{ABCD}E,右子樹(shù)為空;步驟3:同理,二叉樹(shù)更新后如下。所以按層次輸出(同一層從左到右)的序列為FEDCBA。6、有以下程序:#include<stdio.h>main(){inty=10;while(Y一);printf(’’y=%d\n’’,y);}程序執(zhí)行后的輸出結(jié)果是()。A、y=0B、y=-1C、y=1D、while構(gòu)成無(wú)限循環(huán)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:執(zhí)行y-直到值為0,由于y-是先用再減,所以退出循環(huán)時(shí),y的值為-1。7、若有代數(shù)式(其中e僅代表自然對(duì)數(shù)的底數(shù),不是變量),則以下能夠正確表示該代數(shù)式的C語(yǔ)言表達(dá)式是()。A、sqrt(1abs(pow(n,x)+exp(x)))B、sqrt(1abs(pow(N,x)+pow(x,e)))C、sgrt(abs(n^x+e^x))D、sqrt(1abs(pow(x,n)+exp(X)))標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:B選項(xiàng)中函數(shù)pow(x,e)錯(cuò)誤,應(yīng)該直接使用exp(x)函數(shù)。C選項(xiàng)中函數(shù)abs(n^x+e^x)錯(cuò)誤,應(yīng)該使用fabs()返回浮點(diǎn)數(shù)的絕對(duì)值。D選項(xiàng)中pow(x,n)參數(shù)順序錯(cuò)誤。8、有以下程序:#includeintfun(char*s){char*P=S:while(*P++!=’\0’);return(P—s);}main(){char*r=“01234”;printf(“%d\n”,fun(r));}程序的運(yùn)行結(jié)果是()。A、6B、5C、4D、3標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:程序執(zhí)行過(guò)程為:定義字符串指針r,并為其初始化為“01234”,調(diào)用函數(shù)fun(r),將指針傳入函數(shù)while循環(huán)找到字符串的結(jié)束符地址,然后使這個(gè)指針指向結(jié)束符下一個(gè)單元,結(jié)束循環(huán)。返回字符串首地址與結(jié)束符下一個(gè)地址之差,也即是字符串長(zhǎng)度加1。輸出地址差為6。9、己知函數(shù)的調(diào)用形式“fread(buffer,size,count,fp);”其中buffer代表的是()。A、一個(gè)整型變量,代表要讀入的數(shù)據(jù)項(xiàng)總數(shù)B、一個(gè)文件指針,指向要讀的文件C、一個(gè)指針,是指向的輸入數(shù)據(jù)放在內(nèi)存中的起始位置D、一個(gè)存儲(chǔ)區(qū),存放要讀的數(shù)據(jù)項(xiàng)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:數(shù)據(jù)塊輸入/輸出函數(shù)的調(diào)用形式為:fread(buffer,size,count,fp)。fread函數(shù)參數(shù)說(shuō)明:“buffer”是一個(gè)指針,對(duì)fread來(lái)說(shuō),它是讀入數(shù)據(jù)的存放地址;“size”是要讀寫(xiě)的字節(jié)數(shù);“count”是要進(jìn)行讀寫(xiě)多少個(gè)size字節(jié)的數(shù)據(jù)項(xiàng);“fp”是指文件型指針。10、若有定義語(yǔ)句:intm[]={5,4,3,2,1},i=4;,則下面對(duì)m數(shù)組元素的引用中錯(cuò)誤的是A、m[--i]B、m[2*2]C、m[m[0]]D、m[m[i]]標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查數(shù)組的使用。m是一個(gè)一維數(shù)組,長(zhǎng)度為5,因此下標(biāo)范圍是0-4。選項(xiàng)A中一是先自減,然后使用i,因此訪(fǎng)問(wèn)的是元素m[3]:選項(xiàng)B訪(fǎng)問(wèn)的是元素m[4]:選項(xiàng)C中內(nèi)部的m[0]值是5,因此實(shí)際訪(fǎng)問(wèn)是的m[5],下標(biāo)超出范圍:選項(xiàng)D中m[i]的值是1,訪(fǎng)問(wèn)元素m[1]。11、軟件測(cè)試的目的是A、發(fā)現(xiàn)程序中的錯(cuò)誤B、修改程序中的錯(cuò)誤C、避免程序中的錯(cuò)誤D、發(fā)現(xiàn)和修改程序中的錯(cuò)誤標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:軟件測(cè)試的目的是:發(fā)現(xiàn)一些可以通過(guò)測(cè)試避免的開(kāi)發(fā)風(fēng)險(xiǎn);實(shí)施測(cè)試來(lái)降低所發(fā)現(xiàn)的風(fēng)險(xiǎn);確定測(cè)試何時(shí)可以結(jié)束;在開(kāi)發(fā)項(xiàng)目的過(guò)程中將測(cè)試看作是一個(gè)標(biāo)準(zhǔn)項(xiàng)目。12、有以下程序#includemain(){ints[12]={1,2,3,4,4,3,2,1,1,1,2,3),c[5]={0},i;for(i=0;i<12;i++)c[s[i]]++;for(i=1;i<5;i++)printf("%d",c[i]);printf("\n");)A、4332B、2344C、1234D、1123標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查for語(yǔ)句的循環(huán)控制,首先定義了兩個(gè)數(shù)組并賦予了初始值,第一個(gè)for循環(huán)語(yǔ)句循環(huán)12次遍歷s數(shù)組的各個(gè)元素,將s[]中的原素值作為c[]數(shù)組中的下標(biāo),使相應(yīng)的值自加。例如當(dāng)i=0,c[s[0]]++為c[1]++,其值變?yōu)?,當(dāng)執(zhí)行i=1,2,…11后,c[1]、c[2]、c[3]、c[4]分別為4、3、3、2,故選項(xiàng)A為正確的運(yùn)行結(jié)果。13、以下敘述中正確的是A、整型常量和實(shí)型常量都是數(shù)值型常量B、常量的類(lèi)型不能從字面形式上區(qū)分,需要根據(jù)類(lèi)型名來(lái)決定C、預(yù)定義的標(biāo)識(shí)符是C語(yǔ)言關(guān)鍵字的一種,不能另作它用D、只能在函數(shù)體內(nèi)定義變量,其他地方不允許定義變量標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:整型常量和實(shí)型常量都是數(shù)值型常量,選項(xiàng)A)正確;常量的類(lèi)型可以從字面上區(qū)分,比如整型常量不能有小數(shù)點(diǎn),組成字符為0~9等,選項(xiàng)B)錯(cuò)誤;預(yù)定義標(biāo)識(shí)符,即預(yù)先定義并具有特定含義的標(biāo)識(shí)符,可以另作他用,不過(guò)更改了原有的含義,選項(xiàng)C)錯(cuò)誤;變量可以定義在程序中任何的地方,屬于不同的變量,選項(xiàng)D)錯(cuò)誤。14、有以下程序#includevoidfun(char*c,intd){*c=*c+1;d=d+1;printf("%c,%c,",*c,d);}main(){charb=’a’,a=’A’;fun(&b,a);pfintf("%c,%c\n",b,a);}程序運(yùn)行后的輸出結(jié)果是A、b,B,b,AB、b,B,B,AC、a,B,B,aD、a,B,a,B標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題中fun函數(shù)的參數(shù)傳遞方式,形參c是傳地址,形參d是傳值,所以在主函數(shù)中,執(zhí)行fun時(shí),把變量b的地址傳給了c,把a(bǔ)的值傳遞給了d,經(jīng)過(guò)運(yùn)算,輸出的值為b,B。在主函數(shù)的輸出浯句中,輸出變量b的值為b,變量a的值為A。15、有以下程序structs{inta,b;)data[2]={10,100,20,200);main(){structsp=data[1];printf("%d\n",++(p.a(chǎn)));}程序運(yùn)行后的輸出結(jié)果是A、11B、20C、21D、10標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:存題目中定義了結(jié)構(gòu)體s類(lèi)型的數(shù)組變量data,并對(duì)其賦初值。在程序中定義了指向結(jié)構(gòu)體S類(lèi)型的變量p,并把數(shù)組data的第二個(gè)元素data[1]的值賦給它,所以此時(shí)成員變量p.a(chǎn)的值等于20,存輸出時(shí)分別加1,所以輸入結(jié)果為選項(xiàng)A)。16、有以下程序main(){inta=1,b=2,c=3,d=0;if(a==1&&b++==2)if(b!=2‖c--!=3)printf("%d,%d,%d\n",a,b,c);elseprintf("%d,%d,%d\n",a,b,c);elseprintf("%d,%d,%d\n",a,b,c);}程序運(yùn)行后的輸出結(jié)果是A、1,3,2B、1,2,3C、1,3,3D、3,2,1標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:a,b,c,d初始值分別為1,2,3,0。嵌套的if語(yǔ)句中,第一個(gè)if中,表達(dá)式a==1&&b++==2值為1,執(zhí)行嵌套的if分支,此時(shí)“b=3,b!=2”成立,由于運(yùn)算符是‖,不管后面一個(gè)表達(dá)式的值是不是1,其整個(gè)表達(dá)式的值總是1,“c--!=3”表達(dá)式不執(zhí)行,最后打印出a,b,c的值是1,3,3。17、有下列程序:inta=4:intf(intn)main(){intt=0;staticinta=5;{ints=a,i=0;if(n%2){inta=6;t+=a++;}for(;i<2;i++)s+=f(i);else{inta=7;t+=a++;}printf("%d\n",s);returnt+a++;}}程序運(yùn)行后的輸出結(jié)果是A、28B、24C、32D、36標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:程序中定義了全局整型變量a=4。在intf(intn)函數(shù)中定義了局部靜態(tài)整型變量并進(jìn)行了初始化即staticinta=5。在intf(intn)函數(shù)中對(duì)n是否是偶數(shù)進(jìn)行判斷,如果n是奇數(shù),則函數(shù)的返回值為11,局部靜態(tài)整型變量a=6;如果n是偶數(shù),則函數(shù)的返回值為12,局部靜態(tài)整型變量a=6。所以在main()函數(shù)中循環(huán)首先執(zhí)行s+=f(0)語(yǔ)句,而f(0)返回值12,所以第一次循環(huán)結(jié)束s的值等于4+12=16;第二次開(kāi)始執(zhí)行f(1)時(shí),在f(1)中執(zhí)行“if(n%2){inta=6;t+=a++;}”和“retumt+a++;”這兩條語(yǔ)句,這時(shí)t=6,a=6(靜態(tài)局部變量第一次循環(huán)后其值加1值不釋放,執(zhí)行第二次循環(huán)量,其值仍有效),所以f(1)的返回值等于12。再在主函數(shù)中執(zhí)行s+=f(1)語(yǔ)句,即16+12=28。18、有以下程序#includemain(){inta=5,b=1,t;t=(a<<2){b;printf("%d\n",t);}A、11B、6C、21D、1標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查位操作運(yùn)算符?!迹肌亲笠七\(yùn)算符,左移一位相當(dāng)于乘2,‘|’是按位或運(yùn)算符。5左移兩位相當(dāng)于乘4,得到20,20的二進(jìn)制數(shù)是00010100,和00000001進(jìn)行按位或操作得到00010101,即十進(jìn)制的21。19、有以下程序#includeinta=2;intf(){staticintn=0;intm=0;n++;a++;m++;returnn+m+a;}main(){intk;for(k=0;k<3;k++)printf("%d,",f());printf("\n");}程序的運(yùn)行結(jié)果是()。A、5,7,9,B、5,6,7,C、5,8,11,D、5,5,5,標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:靜態(tài)變量定義時(shí)的初始化只運(yùn)行一次,并且其值在程序運(yùn)行過(guò)程中一直存在,而局部變量則是用時(shí)分配,用完釋放。全局變量在當(dāng)前文件內(nèi)也是一直存在的。main()函數(shù)中調(diào)用三次f()函數(shù),f(0)=1+1+3=5,n=1,m=1,a=3;f(1)=2+1+4=7,n=2,m=1,a=4;f(2)=3+1+5=9,n=3,m=1,a=5。所以答案選A。20、有以下程序main(){inta=1,b=2,c=3,x;x=(a^b)&c;printf("%d\nT",x);}程序的運(yùn)行結(jié)果是A、1B、2C、3D、0標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:1、2、3的二進(jìn)制形式分別為00000001、00000010、00000011。首先計(jì)算1與2的或運(yùn)算,即1^2=(00000001)^(00000010)=00000011,再將其與3進(jìn)行“與”運(yùn)算。結(jié)果為(00000011)&(00000011)=4)0000011,即十進(jìn)制數(shù)3。21、有以下程序voidfun(int*p,int*q){intt;t=*p;*p=*q;*q=t;*q=*p;}main(){inta=0,b=9;fun(&a,&b);printf("%d%d\n",a,b);}程序的輸出結(jié)果是A、00B、99C、90D、09標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:函數(shù)fun的主要功能是交換p和q指向的地址空間的數(shù)據(jù),然后更改p的指向的地址空間數(shù)據(jù),使之和q指向的數(shù)據(jù)相同。主函數(shù)調(diào)用fun后,p指向a,q指向b,因此a和b的數(shù)據(jù)全部為9。22、若有以下程序typedefstructstu{charname[10],gender;intscore;}STU;voidf(STUa,STUb){b=a;printf("%s,%c,%d,",b.name,b.gender,b.score);}main(){STUa={"Zhao",’m’,290},b={"Qian",’f’,350};f(a,b);printf("%s,%c,%d\n",b.name,b.gender,b.score);}則程序的輸出結(jié)果是A、Zhao,m,290,Zhao,m,290B、Zhao,m,290,Qian,f,350C、Qian,f,350,Qian,f,350D、Zhao,m,290,Zhao,f,350標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:函數(shù)f(STUa,STUb)的主要功能是為把結(jié)構(gòu)體變量a的值存放到b中,然后輸出b中各個(gè)成員的值。主函數(shù)中調(diào)用函數(shù)f(a,b),輸出賦值以后b的數(shù)據(jù),實(shí)際為a{"Zhao",’m’,290}的數(shù)據(jù),函數(shù)調(diào)用結(jié)束,形參a和b撤銷(xiāo),流程到主函數(shù)輸出b{"Qian",’f’,350}的數(shù)據(jù)。23、有以下程序#include<stdio.h>typedefstruct{intb,p;}A;voidf(Ac)/*注意:c是結(jié)構(gòu)變量名*/{intj;c.b+=1;c.p+=2;}main(){i;Aa={1,2};f(a);printf("%d,%d\n",a.b,a.p);}程序運(yùn)行后的輸出結(jié)果是A、2,4B、1,2C、1,4D、2,3標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在C語(yǔ)言中,數(shù)據(jù)只能從實(shí)參單向傳遞給形參,稱(chēng)為“按值”傳遞。也就是說(shuō),當(dāng)簡(jiǎn)單變量作為實(shí)參時(shí),用戶(hù)不可能在函數(shù)中改變對(duì)應(yīng)實(shí)參的值。所以本題中在main()函數(shù)f(a)語(yǔ)句中結(jié)構(gòu)體實(shí)參a作為值,傳遞給函數(shù)f(Ac)中的形參c;這種值傳遞的方式不會(huì)對(duì)實(shí)參a產(chǎn)生任何影響,所以結(jié)構(gòu)體實(shí)參a的值不會(huì)發(fā)生變化。24、以下程序依次把從終端輸入的字符存放到f文件中,用#作為結(jié)束輸入的標(biāo)志,則在橫線(xiàn)處應(yīng)填入的選項(xiàng)是#include<stdio.h>main(){FILE*fp;charch;fp=fopen("fname","w");while((ch=getchar())!=’#’)fputc(__________);fclose(fp);}A、fp,chB、chC、ch,"fname"D、ch,fp標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:fputc()是以字符(字節(jié))為單位的讀寫(xiě)函數(shù)。每次可從文件讀出或向文件寫(xiě)入一個(gè)字符。使用格式為fputc(ch,fp);其中ch是待輸出的某個(gè)字符,它可以是一個(gè)字符常量,也可以是一個(gè)字符變量;fp是文件指針。fputc(ch,fp)的功能是將字符ch寫(xiě)到文件指針fp所指的文件中。如果輸出成功,fputc函數(shù)返回所輸出的字符;如果輸出失敗,則返回一個(gè)EOF值。EOF是在stdio.h庫(kù)函數(shù)文件中定義的符號(hào)常量,其值等于-1。25、以下敘述中錯(cuò)誤的是()。A、用typedef可以說(shuō)明一種新的類(lèi)型名B、typedef的作用是用一個(gè)新的標(biāo)識(shí)符來(lái)代表已存在的類(lèi)型名C、可以用typedef說(shuō)明的新類(lèi)型名來(lái)定義變量D、typedef說(shuō)明的新類(lèi)型名必須使用大寫(xiě)字母,否則會(huì)出編譯錯(cuò)誤標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查typedef的使用方法,typedef對(duì)已存在的類(lèi)型使用一個(gè)新的名字,新類(lèi)型可以使用小寫(xiě),所以D選項(xiàng)錯(cuò)誤。國(guó)家二級(jí)C語(yǔ)言機(jī)試(選擇題)模擬試卷第3套一、選擇題(本題共25題,每題1.0分,共25分。)1、設(shè)循環(huán)隊(duì)列的存儲(chǔ)空間為Q(1:35),初始狀態(tài)為front=rear=35?,F(xiàn)經(jīng)過(guò)一系列入隊(duì)與退隊(duì)運(yùn)算后,front=15,rear=15,則循環(huán)隊(duì)列中的元素個(gè)數(shù)為()。A、15B、16C、20D、0或35標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:循環(huán)隊(duì)列的隊(duì)頭指針和尾指針都等于15,此循環(huán)隊(duì)列中元素的個(gè)數(shù)有兩種情況,第一種情況是隊(duì)頭指針和尾指針都是第一次到達(dá)15,此時(shí)元素個(gè)數(shù)為0;第二種情況是隊(duì)頭指針第一次到達(dá)15,而尾指針第二次到達(dá)15,此時(shí)元素個(gè)數(shù)為35。2、下列敘述中正確的是()。A、對(duì)長(zhǎng)度為n的有序鏈表進(jìn)行查找,最壞情況下需要的比較次數(shù)為nB、對(duì)長(zhǎng)度為n的有序鏈表進(jìn)行對(duì)分查找,最壞情況下需要的比較次數(shù)為(n/2)C、對(duì)長(zhǎng)度為n的有序鏈表進(jìn)行對(duì)分查找,最壞情況下需要的比較次數(shù)為(log2n)D、對(duì)長(zhǎng)度為n的有序鏈表進(jìn)行對(duì)分查找,最壞情況下需要的比較次數(shù)為(nlog2n)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題主要考查的知識(shí)點(diǎn)為查找技術(shù)。順序查找的使用情況:①線(xiàn)性表為無(wú)序表;②表采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。二分法查找只適用于順序存儲(chǔ)的有序表,并不適用于線(xiàn)性鏈表。3、以下選項(xiàng)中非法的C語(yǔ)言字符常量是A、’\b’B、’\007’C、’aa’D、’\xaa’標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:一個(gè)字符常量代表ASCII字符集中的一個(gè)字符,在程序中用單引號(hào)把一個(gè)字符括起來(lái)作為字符常量。4、設(shè)二叉樹(shù)的前序序列為ABDEGHCFIJ,中序序列為DBGEHACIFJ。則按層次輸出(從上到下,同一層從左到右)的序列為A、ABCDEFGHIJB、DGHEBIJFCAC、JIHGFEDCBAD、GHIJDEFBCA標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:前序遍歷中,第一個(gè)字母是根結(jié)點(diǎn),也就是A是根結(jié)點(diǎn);在中序遍歷中,根結(jié)點(diǎn)前面的是左子樹(shù)、后面的是右子樹(shù)。前序中,B在A的后面,中序中在左子樹(shù)中,可知B為A的左結(jié)點(diǎn)。中序中D在B的前面,前序中在B的后面,可知D為B的左結(jié)點(diǎn),GEH為B的右子樹(shù)。前序中順序?yàn)镋GH,由此可知,E為B的右結(jié)點(diǎn),G為E的左結(jié)點(diǎn)、H為E的右結(jié)點(diǎn)。右子樹(shù)中,前序中C在最前,因?yàn)橛易訕?shù)根結(jié)點(diǎn),也就是A的右結(jié)點(diǎn),根據(jù)前序中的子樹(shù)FIJ和中序中的IFJ子樹(shù)可知F為C的右結(jié)點(diǎn),I為F的左結(jié)點(diǎn)、J為F的右結(jié)點(diǎn)。由此可畫(huà)出這個(gè)二叉樹(shù),然后根據(jù)二叉樹(shù),可知按層次輸出(從上到下,同一層從左到右)的序列為:ABCDEFGHIJ。5、定義學(xué)生、教師和課程的關(guān)系模式S(S#,Sn,Sd,Dc,Sa)(其屬性分別為學(xué)號(hào)、姓名、所在系、所在系的系主任、年齡);C(C#,Cn,P#)(其屬性分別為課程號(hào)、課程名、先修課);SC(S#,C#,G)(其屬性分別為學(xué)號(hào)、課程號(hào)和成績(jī))。包含對(duì)非主屬性部分依賴(lài)的關(guān)系是()。A、S(S#,Sn,Sd,Dc,Sa)B、C(C#,Cn,P#)C、SC(S#,C#,G)D、不存在標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:關(guān)系S的主鍵是S#(學(xué)號(hào)),S#是主屬性,但非主屬性Sd(所在系)也可決定Dc(所在系的系主任),所以包含對(duì)非主屬性部分依賴(lài)的關(guān)系是S。6、若有以下程序#includemain(){intb=10,a=-11;a%=b%=4;printf("%d%d\n",a,b);}則程序的輸出結(jié)果是A、12B、-1-2C、-12D、1-2標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:對(duì)于表達(dá)式a%=b%=4為復(fù)合的賦值運(yùn)算,結(jié)合性自右至左,相當(dāng)于先計(jì)算b=b%4,a=a%b;結(jié)果的符號(hào)和第一個(gè)操作數(shù)的符號(hào)相同,因此b為2,a的結(jié)果為-1.7、有如下程序段:intx=12:doubley=3.141593:printf(’’%d%8.6f’’,x,y);其輸出結(jié)果是()。A、123.141593B、123.141593C、12,3.141593D、123.1415930標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:printf函數(shù)中格式字符“%8.6”的含義是:變量y的輸出寬度為8(包括小數(shù)點(diǎn)),小數(shù)點(diǎn)后面保留6位小數(shù),且右對(duì)齊,當(dāng)數(shù)值的實(shí)際寬度大于設(shè)定寬度時(shí),按實(shí)際寬度輸出,所以選擇A選項(xiàng)。8、有以下程序:#include<stdio.h>inta=1,b=2;voidfun1(inta,intb){printf(″%d%d″,a,b);}voidfun2(){a=3;b=4;}main(){fun1(5,6);fun2();printf(″%d%d\n″,a,b);}程序運(yùn)行后的輸出結(jié)果是()。A、5634B、3456C、1256D、5612標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:在一個(gè)源文件中,如果外部變量和局部變量同名,則在該局部變量的作用域內(nèi),該外部變量會(huì)被“屏蔽”,所以函數(shù)fun1()輸出的是局部變量a、b的值:56;fun2()改變的是全局變量a、b的值,輸出結(jié)果為34,答案選A。9、軟件系統(tǒng)總體結(jié)構(gòu)圖的作用是A、描述軟件系統(tǒng)結(jié)構(gòu)的圖形工具B、描述軟件系統(tǒng)的控制流C、描述軟件系統(tǒng)的數(shù)據(jù)流D、描述軟件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:軟件系統(tǒng)總體結(jié)構(gòu)圖的作用是描述軟件系統(tǒng)結(jié)構(gòu)的圖形工具。10、有以下程序:#includeintfun(intx){intP;if(x==0‖x==1)return3;P=x—fun(x一2);return(P);}main(){printf(“%d\n”,fun(9));}程序運(yùn)行后的輸出結(jié)果是()。A、4B、5C、9D、7標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查函數(shù)的遞歸調(diào)用。執(zhí)行fun(9)后,fun(9)=9一(7一(5一(3一f(1))))=7,故D選項(xiàng)正確。11、sizeof(double)是A、一個(gè)雙精度型表達(dá)式B、一個(gè)整型表達(dá)式C、一個(gè)不合法的表達(dá)式D、一種函數(shù)調(diào)用標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:sizeof關(guān)鍵字為C語(yǔ)言的運(yùn)算符,用于測(cè)試()內(nèi)類(lèi)型其變量所占內(nèi)存,表達(dá)式結(jié)果返回十進(jìn)制整數(shù),因此為整型表達(dá)式,表明變量所占的內(nèi)存字節(jié)數(shù)。12、若有以下程序#includeint*f(int*s,int*t){int*k;if(*s<*t){k=s;s=t;t=k;}returns;}main(){inti=3,j=5,*p=&i,*q=&j,*r;r=f(p,q);printf("%d,%d,%d,%d,%d\n",i,j,*p,*q,*r);}則程序的輸出結(jié)果是A、3,5,5,3,5B、5,3,5,3,5C、5,3,3,5,5D、3,5,3,5,5標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查了返回值為指針的函數(shù),函數(shù)f的主要功能為第一個(gè)參數(shù)小于第二個(gè)參數(shù),那么交換指針的指向,這對(duì)于實(shí)參指向的數(shù)據(jù)時(shí)沒(méi)有影響的。最后返回比較大的元素的地址。主函數(shù)中p指向i,q指向i,調(diào)用r=f(p,q),返回q的地址,因此*p=3,*q=5,*r=5。13、以下敘述中正確的是A、循環(huán)發(fā)生嵌套時(shí),最多只能兩層B、三種循環(huán)for,while,do-while可以互相嵌套C、循環(huán)嵌套時(shí),如果不進(jìn)行縮進(jìn)形式書(shū)寫(xiě)代碼,則會(huì)有編譯錯(cuò)誤D、for語(yǔ)句的圓括號(hào)中的表達(dá)式不能都省略掉標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在一個(gè)循環(huán)體內(nèi)又完整包含了另一個(gè)循環(huán),稱(chēng)為循環(huán)嵌套。循環(huán)的嵌套可以多層,但每一層循環(huán)在邏輯上必須是完整的。for循環(huán)、while循環(huán)、do-while循環(huán)可以互相嵌套,但每層循環(huán)在邏輯上必須完整。而在for語(yǔ)句中,for語(yǔ)句中的表達(dá)式可以部分或全部省略,但兩個(gè)“:”不可省略。14、若有以下程序#includeintk=7,m=5;voidf(int**s){int*t=&k;s=&t;*s=&m;printf("%d,%d,%d,",k,*t,**s);}main(){inti=3,*p=&i,**r=&p;f(r);printf("%d,%d,%d\n",i,*p,**r);}則程序的輸出結(jié)果是A、7,5,7,3,3,3,B、7,5,7,3,5,7,C、7,5,5,3,3,3,D、7,7,5,3,3,3,標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查二級(jí)指針作為函數(shù)的參數(shù),可以通過(guò)函數(shù)調(diào)用來(lái)改變主函數(shù)中一級(jí)指針的指向。主函數(shù)中指針變量p指向i,r指向p,調(diào)用f函數(shù),形參指針s指向p,流程轉(zhuǎn)到f函數(shù)執(zhí)行,指針變量t指向k,s指向t,此時(shí)更改了s的指向,s指向了t,更改了s指向的地址空間內(nèi)容為m的地址,同時(shí)t也指向變量m,因此**s的值為m的值,*t為m的值,k為7。流程返回到主函數(shù),沒(méi)有對(duì)主函數(shù)空間的數(shù)據(jù)和指向作出更改,因此全部為3。15、以下敘述中正確的是A、循環(huán)發(fā)生嵌套時(shí),最多只能兩層B、三種循環(huán)for,while,do-while可以互相嵌套C、循環(huán)嵌套時(shí),如果不進(jìn)行縮進(jìn)形式書(shū)寫(xiě)代碼,則會(huì)有編譯錯(cuò)誤D、for語(yǔ)句的圓括號(hào)中的表達(dá)式不能都省略掉標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在一個(gè)循環(huán)體內(nèi)又完整包含了另一個(gè)循環(huán),稱(chēng)為循環(huán)嵌套。循環(huán)的嵌套可以多層,但每一層循環(huán)在邏輯上必須是完整的。for循環(huán)、while循環(huán)、do-while循環(huán)可以互相嵌套,但每層循環(huán)在邏輯上必須完整。而在for語(yǔ)句中,for語(yǔ)句中的表達(dá)式可以部分或全部省略,但兩個(gè)“;”不可省略。16、有以下定義語(yǔ)句,編譯時(shí)會(huì)出現(xiàn)編譯錯(cuò)誤的是A、chara=’\n’;B、chara="aa";C、chara=’a’;D、chara=’\x2d’;標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在選項(xiàng)B中,由兩個(gè)字符aa組成一個(gè)字符串賦給一個(gè)字符變量a時(shí)會(huì)出錯(cuò)。17、結(jié)構(gòu)化程序設(shè)計(jì)的基本原則不包括()。A、多態(tài)性B、自頂向下C、模塊化D、逐步求精標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:結(jié)構(gòu)化程序設(shè)計(jì)的思想包括:自頂向下、逐步求精、模塊化、限制使用goto語(yǔ)句,所以選擇A)。18、設(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ī)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:學(xué)號(hào)是學(xué)生表S的主鍵,課號(hào)是課程表C的主鍵,所以選課表SC的關(guān)鍵字就應(yīng)該是與前兩個(gè)表能夠直接聯(lián)系且能唯一定義的學(xué)號(hào)和課號(hào),所以選擇C)。19、有以下程序#include#defineSUB(X,Y)(X+1)*Ymain(){inta=3,b=4;printf("%d\n",SUB(a++,b++));}程序運(yùn)行后的輸出結(jié)果是A、25B、20C、12D、16標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查宏定義,宏定義只是做個(gè)簡(jiǎn)單的替換,執(zhí)行SUB(a++,b++)=(a+++1)*b++=16,選項(xiàng)D正確。20、以下敘述中正確的是A、用戶(hù)自己定義的函數(shù)只能調(diào)用庫(kù)函數(shù)B、實(shí)用的C語(yǔ)言源程序總是由一個(gè)或多個(gè)函數(shù)組成C、不同函數(shù)的形式參數(shù)不能使用相同名稱(chēng)的標(biāo)識(shí)符D、在C語(yǔ)言的函數(shù)內(nèi)部,可以定義局部嵌套函數(shù)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:A選項(xiàng)中,"用戶(hù)自己定義的函數(shù)只能調(diào)用庫(kù)函數(shù)"描述是不正確的,也可以調(diào)用自定義函數(shù);C選項(xiàng)中,對(duì)于不同函數(shù)的形式參數(shù)可以使用相同名稱(chēng)的標(biāo)識(shí)符;D選項(xiàng)中,關(guān)于函數(shù)的定義不可以嵌套,但函數(shù)的調(diào)用可以嵌套。因此B選項(xiàng)正確。21、以下選項(xiàng)中不屬于C語(yǔ)言標(biāo)識(shí)符的是A、常量B、用戶(hù)標(biāo)識(shí)符C、關(guān)鍵字D、預(yù)定義標(biāo)識(shí)符標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:常量是指在程序運(yùn)行過(guò)程中其值不能被改變的量,如5、1.0、字符’a’等。C語(yǔ)言的標(biāo)識(shí)符分為3類(lèi):關(guān)鍵字、預(yù)定義標(biāo)識(shí)符和用戶(hù)標(biāo)識(shí)符,常量不屬于標(biāo)識(shí)符,所以選擇A。22、若有定義typedefintT[10];Ta[20];則與上述定義完全等價(jià)的說(shuō)明語(yǔ)句是()。A、inta[20][10];B、inta[20];C、inta[10];D、inta[10][20];標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:typedef為類(lèi)型定義符,作用是用"新類(lèi)型名"代替"原類(lèi)型名",即為現(xiàn)有類(lèi)型定義容易記憶的類(lèi)型名。typedef能夠隱藏復(fù)合類(lèi)型,比如指針和數(shù)組,定義語(yǔ)句"typedefintT[10];"表明類(lèi)型T就代表了具有10個(gè)元素的整型數(shù)組,所以語(yǔ)句"Ta[20];"則表示定義了具有20個(gè)元素并且每個(gè)元素都為一個(gè)有10個(gè)元素的一維數(shù)組,所以答案選A。23、標(biāo)準(zhǔn)庫(kù)函數(shù)fgets(s,n,f)的功能是()。A、從文件f中讀取長(zhǎng)度不超過(guò)n-1的字符串存入指針s所指的內(nèi)存B、從文件f中讀取長(zhǎng)度為n的字符串存入指針s所指的內(nèi)存C、從文件f中讀取n個(gè)字符串存入指針s所指的內(nèi)存D、從文件f中讀取n-1個(gè)字符串存入指針s所指的內(nèi)存標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:函數(shù)fgets(s,n,f)的功能是從f指向的文件中讀取一個(gè)長(zhǎng)度為n-1的字符串,將其存入s指向的存儲(chǔ)區(qū)中,答案選A。24、有以下程序#includemain(){inti=0;i=~i;printf("%d\n",i);}程序運(yùn)行后的輸出結(jié)果是A、8B、0C、1D、-1標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查位運(yùn)算中按位取反,0按位取反就是-1,所以選項(xiàng)D正確。25、有以下程序#includemain(){inti,sum;for(i=1;i<6;i++)sum+=i;printf("%d\n",sum);}程序運(yùn)行后的輸出結(jié)果是A、隨機(jī)值B、0C、15D、16標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題重點(diǎn)考察for語(yǔ)句,變量沒(méi)有初始化的情況下,默認(rèn)值與編譯器有關(guān)系,不同的編譯器有不同的值。因此A選項(xiàng)正確。國(guó)家二級(jí)C語(yǔ)言機(jī)試(選擇題)模擬試卷第4套一、選擇題(本題共40題,每題1.0分,共40分。)1、設(shè)一棵滿(mǎn)二叉樹(shù)共有15個(gè)結(jié)點(diǎn),則在該滿(mǎn)二叉樹(shù)中的葉子結(jié)點(diǎn)數(shù)為()。A、7B、8C、9D、10標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在具有n個(gè)結(jié)點(diǎn)的滿(mǎn)二叉樹(shù),其非葉子結(jié)點(diǎn)數(shù)為int(n/2),而葉子結(jié)點(diǎn)數(shù)等于總結(jié)點(diǎn)數(shù)減去非葉子結(jié)點(diǎn)數(shù)。本題n=15,故非葉子結(jié)點(diǎn)數(shù)等于int(15/2)=7,葉子結(jié)點(diǎn)數(shù)等于15-7=8。2、C語(yǔ)言主要是借助以下哪種手段來(lái)實(shí)現(xiàn)程序模塊化A、定義常量和外部變量B、使用豐富的數(shù)據(jù)類(lèi)型C、使用三種基本結(jié)構(gòu)語(yǔ)句D、定義函數(shù)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:C語(yǔ)言用函數(shù)實(shí)現(xiàn)軟件的模塊化設(shè)計(jì)。3、一個(gè)棧的初始狀態(tài)為空?,F(xiàn)將元素1、2、3、4、5、A、B、C、D、E依次入棧,然后再依次出棧,則元素出棧的順序是A、12345ABCDEB、EDCBA54321C、ABCDE12345D、54321EDCBA標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:棧是按照“先進(jìn)后出”或“后進(jìn)先出”的原則組織數(shù)據(jù)的。所以出棧順序是EDCBA54321。4、下列各組排序法中,最壞情況下比較次數(shù)相同的是()。A、簡(jiǎn)單選擇排序與堆排序B、簡(jiǎn)單插入排序與希爾排序C、冒泡排序與快速排序D、希爾排序與堆排序標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:對(duì)于長(zhǎng)度為n的線(xiàn)性表,最壞情況下查找或排序的次數(shù)如下表:5、在深度為7的滿(mǎn)二叉樹(shù)中,葉子結(jié)點(diǎn)的個(gè)數(shù)為A、32B、31C、64D、63標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:所謂滿(mǎn)二叉樹(shù)是指這樣的一種二叉樹(shù):除最后一層外,每一層上的所有結(jié)點(diǎn)都有兩個(gè)子結(jié)點(diǎn)。也就是在滿(mǎn)二叉樹(shù)中,每一層上的結(jié)點(diǎn)數(shù)都是最大結(jié)點(diǎn)數(shù),即在滿(mǎn)二叉樹(shù)的第k層上有2k-1個(gè)結(jié)點(diǎn),且深度為m的滿(mǎn)二叉樹(shù)有2m-1個(gè)結(jié)點(diǎn)。對(duì)于深度為7的滿(mǎn)二叉樹(shù),葉子結(jié)點(diǎn)所在的是第7層,一共有27-1=64個(gè)葉子結(jié)點(diǎn)。全部結(jié)點(diǎn)共27-1=127個(gè)。6、對(duì)長(zhǎng)度為n的線(xiàn)性表進(jìn)行順序查找,在最壞情況下所需要的比較次數(shù)為A、log2nB、n/2C、nD、n+1標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在進(jìn)行順序查找過(guò)程中,如果被查的元素是線(xiàn)性表中的最后一個(gè)元素,或者被查元素根本不在線(xiàn)性表中,則為了查找這個(gè)元素需要與線(xiàn)性表中的所有元素進(jìn)行比較,這是順序查找的最壞情況,需要比較的次數(shù)為n次。7、設(shè)變量x為longint型,并已正確賦值,以下表達(dá)式中能將x的百位上的數(shù)字提取出的是()。A、x/10%100B、x%10/100C、x%100/10D、x/100%10標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:x/100的個(gè)位數(shù)是x的百位數(shù)上的數(shù)字,所以再進(jìn)行%10運(yùn)算即可得到該數(shù)字。8、有以下程序main(){chara=’H’;a:(a>=’A’&&a<=’Z’)?(a+32);a;printf(’’%c\n’’,a);)程序運(yùn)行后的輸出結(jié)果是A、HB、AC、hD、a標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:表達(dá)式a=(a>=’A’&&a<=’z’)?(a+32):a,為條件表達(dá)式,如果a是大寫(xiě)字符,則轉(zhuǎn)換為小寫(xiě)字符存放到a中,否則不變。9、數(shù)據(jù)庫(kù)管理系統(tǒng)是()。A、操作系統(tǒng)的一部分B、在操作系統(tǒng)支持下的系統(tǒng)軟件C、一種編譯系統(tǒng)D、一種操作系統(tǒng)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:數(shù)據(jù)庫(kù)管理系統(tǒng)是數(shù)據(jù)庫(kù)的機(jī)構(gòu),它是一種系統(tǒng)軟件,負(fù)責(zé)數(shù)據(jù)庫(kù)中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護(hù)、控制、保護(hù)和數(shù)據(jù)服務(wù)等。10、循環(huán)隊(duì)列的存儲(chǔ)空間為Q(1:40),初始狀態(tài)為front=rear=40。經(jīng)過(guò)一系列正常的入隊(duì)與退隊(duì)操作后,front=rear=15,此后又退出一個(gè)元素,則循環(huán)隊(duì)列中的元素個(gè)數(shù)為A、39,或0且產(chǎn)生下溢錯(cuò)誤B、14C、40D、15標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:循環(huán)隊(duì)列初始狀態(tài)front=rear=40,經(jīng)過(guò)一系列入隊(duì)和出隊(duì)操作后,結(jié)束狀態(tài)還是front=rear=15,這說(shuō)明入隊(duì)元素個(gè)數(shù)和出隊(duì)元素個(gè)數(shù)一樣多。這樣一來(lái)最后的元素個(gè)數(shù)就和原來(lái)的元素個(gè)數(shù)一樣多,明顯不是0就是40,即要么隊(duì)列為空(0個(gè)元素),要么隊(duì)列為滿(mǎn)隊(duì)列(40個(gè)元素)。這時(shí)進(jìn)行出隊(duì)操作,如果是隊(duì)列滿(mǎn)(40個(gè)元素)的情況,此時(shí)隊(duì)列中的元素個(gè)數(shù)為39,如果是隊(duì)列空(0個(gè)元素)的情況,此時(shí)就會(huì)產(chǎn)生下溢錯(cuò)誤。因此選項(xiàng)A正確。11、有以下程序main(){inta=2,c=5;printf("a=%%d,b=%%d\n",a,c);)程序的輸出結(jié)果是A、a=%2,b=%5B、a;%d,b=%dC、a=2,b=5D、a=%%d,b=%%d標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:輸出“%”,可以在格式控制中用“%%”表示,將輸出一個(gè)“%”,而沒(méi)有%表示格式符的開(kāi)始,%%d不能表示格式符,因此僅輸出:a=%d,b=%d。12、有以下程序段:#includeintj;floaty;charname[50];seanf(”%2d%f%s”,&j,&y,name);當(dāng)執(zhí)行上述程序段時(shí),從鍵盤(pán)上輸入555667777abc后,Y的值為()。A、566.0B、55566.0C、7777.0D、566777.0標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:它是格式輸入函數(shù),即按用戶(hù)指定的格式從鍵盤(pán)上把數(shù)據(jù)輸入到指定的變量之中。其中的格式命令可以說(shuō)明最大域?qū)?。在百分?hào)(%)與格式碼之間的整數(shù)用于限制從對(duì)應(yīng)域讀人的最大字符數(shù)。所以j的值為55,y的值為566.0,字符數(shù)組name為7777abc。13、關(guān)于C語(yǔ)言程序的敘述中錯(cuò)誤的是()。A、一個(gè)C函數(shù)可以單獨(dú)作為一個(gè)C程序文件存在B、一個(gè)C語(yǔ)言程序只能實(shí)現(xiàn)一種算法C、C語(yǔ)言程序可以由一個(gè)或多個(gè)函數(shù)組成D、C語(yǔ)言程序可以由多個(gè)程序文件組成標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在一段C語(yǔ)言程序中可以包含多個(gè)算法.用來(lái)實(shí)現(xiàn)不同的任務(wù),因?yàn)樗惴ㄊ侵笧榻鉀Q某個(gè)特定問(wèn)題而采取的確定且有限的步驟,它是通過(guò)函數(shù)來(lái)實(shí)現(xiàn)的。一個(gè)C語(yǔ)言源程序由許多函數(shù)組成,這些函數(shù)都是根據(jù)實(shí)際任務(wù)確定具體的算法,由用戶(hù)自己編寫(xiě)。C語(yǔ)言源程序可以放在不同的文件中,同一個(gè)源程序中的函數(shù)也可放在不同的文件中,所以一個(gè)C語(yǔ)言程序可以實(shí)現(xiàn)多種算法。14、以下不構(gòu)成無(wú)限循環(huán)的浯句或語(yǔ)句組是()。A、n=0;do{++11;}while(n<=0);B、n=0;while(1){n++;}C、n=10;while(n);;n一一;}D、for(n=0,i=1;i++)n+=i;標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:A選項(xiàng)中do后面的語(yǔ)句只執(zhí)行了一次便結(jié)束了循環(huán);B選項(xiàng)中條件while(1)永遠(yuǎn)成立,所以是死循環(huán);C選項(xiàng)中n的值為10,而循環(huán)體為空語(yǔ)句,所以while(n)永遠(yuǎn)為真,進(jìn)入死循環(huán);D選項(xiàng)中for語(yǔ)句第二個(gè)表達(dá)式為空,所以沒(méi)有判斷條件,進(jìn)入死循環(huán)。15、設(shè)有如下三個(gè)關(guān)系表下列操作中正確的是A
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 河南開(kāi)封科技傳媒學(xué)院《商務(wù)俄語(yǔ)實(shí)務(wù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025至2031年中國(guó)立式吸塵器行業(yè)投資前景及策略咨詢(xún)研究報(bào)告
- 2025至2031年中國(guó)液晶中文樓層顯示器行業(yè)投資前景及策略咨詢(xún)研究報(bào)告
- 2024年可控逆變弧焊機(jī)項(xiàng)目可行性研究報(bào)告
- 2025至2031年中國(guó)凸輪箱鑄件行業(yè)投資前景及策略咨詢(xún)研究報(bào)告
- 2025至2031年中國(guó)五金交電行業(yè)投資前景及策略咨詢(xún)研究報(bào)告
- 2024至2030年中國(guó)禧酒數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2024至2030年中國(guó)戶(hù)內(nèi)高壓開(kāi)關(guān)柜數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年山東黃金集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
- 2025年中國(guó)人壽北京市分公司招聘筆試參考題庫(kù)含答案解析
- GA 1517-2018金銀珠寶營(yíng)業(yè)場(chǎng)所安全防范要求
- 氣體狀態(tài)方程課件
- 分期還款協(xié)議書(shū)
- 小區(qū)住戶(hù)手冊(cè)范本
- 浦發(fā)銀行個(gè)人信用報(bào)告異議申請(qǐng)表
- ??低?視頻監(jiān)控原理培訓(xùn)教材課件
- 江蘇省質(zhì)量通病防治手冊(cè)
- 7.激素及其作用機(jī)制
- 土壤肥料全套課件
- 畢業(yè)生延期畢業(yè)申請(qǐng)表
- 學(xué)校6S管理制度
評(píng)論
0/150
提交評(píng)論