國(guó)家二級(jí)C語(yǔ)言機(jī)試(選擇題)模擬試卷49(共240題)_第1頁(yè)
國(guó)家二級(jí)C語(yǔ)言機(jī)試(選擇題)模擬試卷49(共240題)_第2頁(yè)
國(guó)家二級(jí)C語(yǔ)言機(jī)試(選擇題)模擬試卷49(共240題)_第3頁(yè)
國(guó)家二級(jí)C語(yǔ)言機(jī)試(選擇題)模擬試卷49(共240題)_第4頁(yè)
國(guó)家二級(jí)C語(yǔ)言機(jī)試(選擇題)模擬試卷49(共240題)_第5頁(yè)
已閱讀5頁(yè),還剩65頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

國(guó)家二級(jí)C語(yǔ)言機(jī)試(選擇題)模擬試卷49(共9套)(共240題)國(guó)家二級(jí)C語(yǔ)言機(jī)試(選擇題)模擬試卷第1套一、選擇題(本題共40題,每題1.0分,共40分。)1、下列敘述中正確的是()。A、所謂算法就是計(jì)算方法B、程序可以作為算法的一種描述方法C、算法設(shè)計(jì)只需考慮得到計(jì)算結(jié)果D、算法設(shè)計(jì)可以忽略算法的運(yùn)算時(shí)間標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:算法是指對(duì)解題方案的準(zhǔn)確而完整的描述,算法不等于數(shù)學(xué)上的計(jì)算方法,也不等于程序。算法設(shè)計(jì)需要考慮可行性、確定性、有窮性與足夠的情報(bào),不能只考慮計(jì)算結(jié)果。算法設(shè)計(jì)有窮性是指操作步驟有限且能在有限時(shí)間內(nèi)完成,如果一個(gè)算法執(zhí)行耗費(fèi)的時(shí)間太長(zhǎng),即使最終得出了正確結(jié)果,也是沒(méi)有意義的。算法在實(shí)現(xiàn)時(shí)需要用具體的程序設(shè)計(jì)語(yǔ)言描述,所以程序町以作為算法的一種描述方法。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ù)。順序查找的使用情況:①線性表為無(wú)序表;②表采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。二分法查找只適用于順序存儲(chǔ)的有序表,并不適用于線性鏈表。3、有以下程序:#includevoidmain(){intm=1,n=2,*P=&m,*q=&n,*r;r=P;p=q;q=r;printf(“%d,%d,%d,%d\n”,m,n,*P,*q);}程序運(yùn)行后的輸出結(jié)果是()。A、1,2,1,2B、1,2,2,1C、2,1,2,1D、2,1,1,2標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題定義了兩個(gè)整型變量,然后用兩個(gè)指針?lè)謩e指向這兩個(gè)整型變量,接著對(duì)指針進(jìn)行交換,那么原來(lái)指向第一個(gè)整數(shù)的指針將指向第二個(gè)整數(shù),原來(lái)指向第二個(gè)整數(shù)的指針將指向第一個(gè)整數(shù)。4、在關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)中,關(guān)系模式是用來(lái)記錄用戶數(shù)據(jù)的()。A、實(shí)體B、視圖C、屬性D、二維表標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:關(guān)系模式采用二維表來(lái)表示關(guān)系,簡(jiǎn)稱表。5、在軟件設(shè)計(jì)中,不屬于過(guò)程設(shè)計(jì)工具的是A、PDL(過(guò)程設(shè)計(jì)語(yǔ)言)B、PAD圖C、N-S圖D、DFD圖標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:DFD(數(shù)據(jù)流圖Data-Flow-Diagram)是描述數(shù)據(jù)處理過(guò)程的工具,是需求理解的邏輯模型的圖形表示。它直接支持系統(tǒng)功能建模。在軟件詳細(xì)設(shè)計(jì)的過(guò)程階段,要對(duì)每個(gè)模塊規(guī)定的功能以及算法的設(shè)計(jì)給出適當(dāng)?shù)乃惴枋觥3R?jiàn)的過(guò)程設(shè)計(jì)工具有:圖形工具:程序流程圖,N—S,PAD,HIPO。表格工具:判定表。語(yǔ)言工具:PDL(偽碼)。6、下列關(guān)于數(shù)據(jù)庫(kù)設(shè)計(jì)的敘述中,正確的是A、在需求分析階段建立數(shù)據(jù)字典B、在概念設(shè)計(jì)階段建立數(shù)據(jù)字典C、在邏輯設(shè)計(jì)階段建立數(shù)據(jù)字典D、在物理設(shè)計(jì)階段建立數(shù)據(jù)字典標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:數(shù)據(jù)庫(kù)設(shè)計(jì)目前一般采用生命周期法,即將整個(gè)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的開(kāi)發(fā)分解成目標(biāo)獨(dú)立的若干階段。分別是:需求分析階段、概念設(shè)計(jì)階段、邏輯設(shè)計(jì)階段、物理設(shè)計(jì)階段、編碼階段、測(cè)試階段、運(yùn)行階段、進(jìn)一步修改階段。數(shù)據(jù)字典是對(duì)系統(tǒng)中數(shù)據(jù)的詳盡描述,是各類數(shù)據(jù)屬性的清單。對(duì)數(shù)據(jù)設(shè)計(jì)來(lái)講,數(shù)據(jù)字典是進(jìn)行詳細(xì)的數(shù)據(jù)收集和數(shù)據(jù)分析所獲得的主要結(jié)果。7、設(shè)有以下定義和語(yǔ)句,輸出的結(jié)果是(用small模式編譯,指針變量占2個(gè)字節(jié))()。structU{long*cat;stmctU*next;doubledog;}u;printf("%d",sizeof(u));A、20B、16C、14D、12標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:當(dāng)結(jié)構(gòu)成員是指針時(shí),它將占用2字節(jié)的存儲(chǔ)單元(在small編譯模式下),而與它所指向的數(shù)據(jù)類型無(wú)關(guān)。本題中,指針cat的長(zhǎng)度為2字節(jié);next是指向結(jié)構(gòu)structU的指針,但它本身也只是一個(gè)指針,其長(zhǎng)度也是2字節(jié);double型變量dog的長(zhǎng)度為8字節(jié)。因此,結(jié)構(gòu)變量u的總長(zhǎng)度為12字節(jié)。8、在下列定義語(yǔ)句中,編譯時(shí)會(huì)出現(xiàn)編譯錯(cuò)誤的是()。A、chara=’\x2d’;B、chara=’\n’;C、chara=’a’;D、chara="aa";標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:D選項(xiàng)中將字符串常量“aa”賦給字符變量a是錯(cuò)誤的。9、設(shè)有定義:inta;floatb;執(zhí)行scanf(’’%2d%f’,&a,&b);語(yǔ)句時(shí),若從鍵盤輸入876543.0則a和b的值分別是A、876和543.0B、87和6.0C、87和543.0D、76和543.0標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在輸入函數(shù)scanf的輸入格式符%2d%f中,2d表示輸入的數(shù)據(jù)的寬度為2,所以當(dāng)從鍵盤輸入876543.0<CR>時(shí),這時(shí)把輸入數(shù)字串的前兩位87賦給變量a,然后將緊接著將6按照格式控制符%f的形式賦給變量b,所以b的值為6.000000。10、若實(shí)體A和B是一對(duì)多的聯(lián)系,實(shí)體B和C是一對(duì)一的聯(lián)系,則實(shí)體A和C的聯(lián)系是A、一對(duì)一B、一對(duì)多C、多對(duì)一D、多對(duì)多標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:由于B和C有一一對(duì)應(yīng)的聯(lián)系,而A和B只間有一對(duì)多的聯(lián)系,則通過(guò)關(guān)系之間的傳遞,則A和C之間也是一對(duì)多的聯(lián)系。11、有以下程序:#includemain(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;for(i=0;i<3;i++)fnr(j=i;j<=i;j++)t+=b[i][b[j][i]];printf(“%d\n”,t);}程序的運(yùn)行結(jié)果是()。A、3B、4C、1D、9標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:每次內(nèi)循環(huán)只循環(huán)一次就結(jié)束,第1次外循環(huán)時(shí),t=t+b[0][b[0][0]]=1+b[0][0]=1+0=1;第2次外循環(huán)時(shí),t=t+b[1][b[1][1]]=1+b[1][1]=1+1=2;第3次外循環(huán)時(shí),t=t+b[2][b[2][2]]=2+b[2][2]=2+2=4。12、在關(guān)系數(shù)據(jù)庫(kù)中,用來(lái)表示實(shí)體間聯(lián)系的是A、屬性B、-維表C、網(wǎng)狀結(jié)構(gòu)D、樹(shù)狀結(jié)構(gòu)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在關(guān)系數(shù)據(jù)庫(kù)中,實(shí)體間的聯(lián)系由一個(gè)二維表來(lái)表示。13、有以下程序main(){inta=1,b=2,c=3,d=0;if(a=1&&b++==2)if(b!=211c一!=3)printf("%d,%d,%d\n",a,b,c);elseprintff"%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、l,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。14、軟件集成測(cè)試不采用A、迭代式組裝B、自頂向下增量組裝C、一次性組裝D、自底向上增量組裝標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:集成測(cè)試,也叫組裝測(cè)試或聯(lián)合測(cè)試。在單元測(cè)試的基礎(chǔ)上,將所有模塊按照設(shè)計(jì)要求(如根據(jù)結(jié)構(gòu)圖)組裝成為子系統(tǒng)或系統(tǒng),進(jìn)行集成測(cè)試。常采用自頂向下、自底向上和一次性組裝測(cè)試15、以下敘述中正確的是A、函數(shù)名代表該函數(shù)的入口地址B、所有函數(shù)均不能接受函數(shù)名作為實(shí)參傳入C、函數(shù)體中的語(yǔ)句不能出現(xiàn)對(duì)自己的調(diào)用D、如果函數(shù)帶有參數(shù),就不能調(diào)用自己標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:函數(shù)形、實(shí)參傳遞的時(shí)候,要求對(duì)應(yīng)位置類型一致即可,如果實(shí)參為函數(shù)名,可以定義相應(yīng)的形參為指向函數(shù)的指針變量來(lái)獲得該函數(shù)的入口地址,因此選項(xiàng)B錯(cuò)誤的,在C語(yǔ)言中允許進(jìn)行遞歸調(diào)用,即自己調(diào)用自己,選項(xiàng)C和選項(xiàng)D是錯(cuò)誤的。16、設(shè)變量均已正確定義并賦值,以下與其他三組輸出結(jié)果不同的一組語(yǔ)句是A、x++;printf(”%d\n”,x);B、++x;printf(”%d\n”,x);C、n=x++;printf(”%d\n”,n);D、n=++x;printf(”%)d\n”,n);標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查自增運(yùn)算符。++在前表示先自增然后使用,++在后面表示先使用然后自增。選項(xiàng)A)中首先執(zhí)行x++,執(zhí)行完后x自增1,然后printf輸出的是x自增后的值:選項(xiàng)B)首先執(zhí)行++,x的值增加1,接著輸出x的值;選項(xiàng)C)中++在x的后面,因此n的值是x自增前的值,printf輸出韻是x自增前的值,選項(xiàng)D)中++在x的前面,因此x首先自增,然后再賦值給n,n的值是x自增后的值,輸出的也是x自增后的值。17、將數(shù)據(jù)庫(kù)的結(jié)構(gòu)劃分成多個(gè)層次,是為了提高數(shù)據(jù)庫(kù)的物理獨(dú)立性和A、規(guī)范程度B、操作獨(dú)立性C、邏輯獨(dú)立性D、降低數(shù)據(jù)冗余標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:物理獨(dú)立性是指用戶的應(yīng)用程序與存儲(chǔ)在磁盤上的數(shù)據(jù)庫(kù)中數(shù)據(jù)是相互獨(dú)立的。即,數(shù)據(jù)在磁盤上怎樣存儲(chǔ)由DBMS管理,用戶程序不需要了解,應(yīng)用程序要處理的只是數(shù)據(jù)的邏輯結(jié)構(gòu),這樣當(dāng)數(shù)據(jù)的物理存儲(chǔ)改變了,應(yīng)用程序不用改變;邏輯獨(dú)立性存在于外模式和內(nèi)模式之間。數(shù)據(jù)的邏輯獨(dú)立性是指數(shù)據(jù)與程序的邏輯獨(dú)立性。用戶的應(yīng)用程序和數(shù)據(jù)庫(kù)中的邏輯結(jié)構(gòu)是相互獨(dú)立的,當(dāng)數(shù)據(jù)的邏輯結(jié)構(gòu)發(fā)生改變時(shí)應(yīng)用不需要改變,邏輯獨(dú)立性存在于外模式和內(nèi)模式之間。數(shù)據(jù)的邏輯獨(dú)立性是指數(shù)據(jù)與程序的邏輯獨(dú)立性。18、以下選項(xiàng)中合法的實(shí)型常量是A、.914B、3.13e-2.1C、0D、2.0*10標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:實(shí)型常量又稱實(shí)數(shù)或浮點(diǎn)數(shù),一般用小數(shù)形式或指數(shù)形式來(lái)表示。實(shí)型常量分為以下兩種形式:①小數(shù)形式:小數(shù)形式是由數(shù)字和小數(shù)點(diǎn)組成的一種實(shí)數(shù)表示形式。例如0.345、123、0.0等是合法的實(shí)數(shù)。這種表示形式必須要有小數(shù)點(diǎn)。②指數(shù)形式:在C語(yǔ)言中,用“e”或“E”后跟一個(gè)整數(shù)來(lái)表示以10為底的冪數(shù)。注意:字母“e”或“E”之前必須要有數(shù)字,后面的指數(shù)必須為整數(shù)。選項(xiàng)B中e后必須為整數(shù),選項(xiàng)C沒(méi)有小數(shù)點(diǎn),而選項(xiàng)D則出現(xiàn)非法字符*。19、若有以下函數(shù)首部intfun(doublex[10],int*n)則下面針對(duì)此函數(shù)的函數(shù)聲明語(yǔ)句中正確的是A、intfun(double,int);B、intfun(double*x,intn);C、intfun(double*,int*);D、intfun(doublex,int*n);標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:函數(shù)說(shuō)明的一般形式為:類型名函數(shù)名(參數(shù)類型1,參數(shù)類型2,……)。因?yàn)楹瘮?shù)intfun(doublex[10],int*n)的第1個(gè)形式參數(shù)是一個(gè)雙精度型的一維數(shù)組,第2個(gè)參數(shù)是一個(gè)整型指針,并返回一個(gè)整型值。一維數(shù)組的名字表示的是一維數(shù)組的地址。20、下面描述錯(cuò)誤的是A、模塊的獨(dú)立性與模塊的信息隱蔽和局部化無(wú)關(guān)B、內(nèi)聚性和耦合性是模塊獨(dú)立程度的定性度量標(biāo)準(zhǔn)C、一個(gè)模塊的內(nèi)聚性越高則該模塊的獨(dú)立性越強(qiáng)D、一個(gè)模塊的耦合性越高則該模塊的獨(dú)立性越弱標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:模塊獨(dú)立性是指每個(gè)模塊只完成系統(tǒng)要求的獨(dú)立的子功能,并且與其它模塊的聯(lián)系最少且接口簡(jiǎn)單。一般較優(yōu)秀的軟件設(shè)計(jì),應(yīng)盡量做到高內(nèi)聚,低偶合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨(dú)立性。所以選項(xiàng)A正確。21、有以下程序#includemain(){intx;scanf("%d",&x);if(x<=3);elseif(x!=10)printf("%d\n",x);}程序運(yùn)行時(shí),輸入的值在哪個(gè)范圍才會(huì)有輸出結(jié)果A、小于3的整數(shù)B、不等于10的整數(shù)C、大于3或等于10的整數(shù)D、大于3且不等10的整數(shù)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:根據(jù)代碼可知如果x的值小于3,執(zhí)行空語(yǔ)句,不進(jìn)行打印操作,如果x的值大于3,再判斷x的值是否不等于10,如果不等于10就打印x的值,所以選擇D選項(xiàng)。22、有以下程序#includeintfuna(inta,intb){returna+b;}intfunb(inta,intb){returna-b;}intsss(int:(*t)(),intx,inty){return((*t)(x,y));)main(){intx;x=sss(funa,9,3);x+=sss(funb,8,3);printf("%d\n",x);}程序運(yùn)行后的輸出結(jié)果是A、17B、23C、24D、22標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:函數(shù)funa的功能計(jì)算兩個(gè)數(shù)據(jù)的和,funb的功能計(jì)算兩個(gè)數(shù)據(jù)的差,函數(shù)sss中利用指向函數(shù)的指針作為函數(shù)的參數(shù),可以在調(diào)用的時(shí)候,根據(jù)接收的函數(shù)地址來(lái)決定調(diào)用那一個(gè)函數(shù)。主函數(shù)中調(diào)用x=sss(funa,9,3),將funa函數(shù)的地址傳遞給t,因此SSS涿l數(shù)成為求兩個(gè)數(shù)據(jù)的和12,繼續(xù)將:funb函數(shù)地址傳給t,求兩個(gè)數(shù)據(jù)差為5,和s累加后結(jié)果為17。23、有以下程序main(){intij;for(i=1;i<4;i++){for(j=i;j<4;j++)printf("%d*%d=%d",i,j,i*j);printf("\n");}}A、1*1=11*2=21*3=32*1=22*2=43*1=3B、1*1=11*2=22*2=41*3=32*3=63*3:9C、1*1=11*2=21*3=32*2=42*3=63*3=9D、1*1=12*1=22*2=.43*1=33*2=63*3=9標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:外層for循環(huán)的自變量i從1開(kāi)始,每次循環(huán)后增1,直到i等于3結(jié)束。對(duì)于外層循環(huán)自變量i的每一個(gè)值,內(nèi)層循環(huán)的自變量j每次從i開(kāi)始,每次循環(huán)后增1,直到j(luò)等于3結(jié)束。所以在每次外循環(huán)開(kāi)始后,內(nèi)層循環(huán)在一行先打印i*j=兩個(gè)乘數(shù)的積,然后回車換行,下次循環(huán)從下一行開(kāi)始打印輸出結(jié)果。24、若有以下程序#include<stdio.h>main(){inta=1,b=2,c=3,d=4;if((a=2)||(b=1))c=2;if((c==3)&&(d=-1))a=5;printf("%d,%d,%d,%d\n",a,b,c,d);}則程序的輸出結(jié)果是A、2,1,2,-1B、2,2,2,4C、5,1,2,-1D、1,2,3,4標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:代碼中有兩條并列的if語(yǔ)句,第一條if語(yǔ)句執(zhí)行,(a=2)||(b=1)值為1,由于邏輯或表達(dá)式,根據(jù)其短路運(yùn)算規(guī)則,a=2,b=2,即b值不變執(zhí)行if分支c=2。并列的if語(yǔ)句中表達(dá)式(c==3)&&(d=-1)為邏輯與表達(dá)式,c==3不成立,不考慮d=-1表達(dá)式,d為5.邏輯表達(dá)式值為0,不執(zhí)行相應(yīng)if分支。25、以下敘述中正確的是()。A、三種循環(huán)for,while,do-while可以互相嵌套B、循環(huán)發(fā)生嵌套時(shí),最多只能兩層C、循環(huán)嵌套時(shí),如果不進(jìn)行縮進(jìn)形式書(shū)寫代碼,則會(huì)有編譯錯(cuò)誤D、for語(yǔ)句的圓括號(hào)中的表達(dá)式不能都省略掉標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:C語(yǔ)言中,循環(huán)嵌套可以多層,選項(xiàng)B)錯(cuò);循環(huán)嵌套時(shí)建議采用縮進(jìn)形式書(shū)寫,這是為了增加代碼的可讀性,但是不會(huì)產(chǎn)生編譯錯(cuò)誤,選項(xiàng)C)錯(cuò)誤;for語(yǔ)句的圓括號(hào)內(nèi)的三個(gè)表達(dá)式在語(yǔ)法上都可以省略,但是兩個(gè)分號(hào)";"不能省略,選項(xiàng)D)錯(cuò);選項(xiàng)A)的表述正確,所以答案選A)。26、有以下程序#includeintfun(charp[][10]){intn=0,i;for(i=0;i<7;i++)if(p[i][0]==’T’)n++;returnn;}main(){charstr[][10]={"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};printf("%d\n",fun(str));}程序執(zhí)行后的輸出結(jié)果是A、1B、2C、3D、0標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:此程序是統(tǒng)計(jì)一周七天中英文名稱首字母為"T"的個(gè)數(shù)。P[i][0]是字符串的首字符,一共有兩個(gè)"T",所以n=2。因此B選項(xiàng)正確。27、有以下程序#include<stdio.h>intfun(intx,inty)main(){if(x==y)return(x);{inta=4,b=5,c=6;elsereturn((x+y)/2);printf("%d\n",fun(2*a,fun(b,c)));}}程序運(yùn)行后的輸出結(jié)果是A、3B、6C、8D、12標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:fun(b,c)即fun(5,6),5!=6,所以返回(5+6)/2=5:fun(2*a,5)即fun(8,5),8!=5,所以返回(8+5)/2=6。28、對(duì)于一個(gè)正常運(yùn)行的C程序,以下敘述中正確的是A、程序的執(zhí)行總是從程序的第一個(gè)函數(shù)開(kāi)始,在main函數(shù)結(jié)束B(niǎo)、程序的執(zhí)行總是從main函數(shù)開(kāi)始,在程序的最后一個(gè)函數(shù)中結(jié)束C、程序的執(zhí)行總是從程序的第一個(gè)函數(shù)開(kāi)始,在程序的最后一個(gè)函數(shù)中結(jié)束D、程序的執(zhí)行總是從main函數(shù)開(kāi)始標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:一個(gè)C語(yǔ)言源程序無(wú)論包括了多少函數(shù),在正常情況下總是從main函數(shù)開(kāi)始執(zhí)行,從main函數(shù)結(jié)束。29、有以下程序#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)解析:在while循環(huán)中每次變量y的值減1,直到其值等于0時(shí)退出循環(huán),這時(shí)y的再減1變?yōu)椋?。30、設(shè)有定義:intx=0,*p;緊接著的賦值語(yǔ)句正確的是A、*p=NULL;B、p=NULL;C、p=x;D、*p=x;標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:定義指針變量時(shí),必須將指針變量初始化為NULL(為空),否則,如果不賦給它地址,系統(tǒng)會(huì)隨機(jī)給它分配一個(gè)地址。31、以下敘述中正確的是A、break語(yǔ)句不能用于提前結(jié)束for語(yǔ)句的本層循環(huán)B、continue語(yǔ)句使得整個(gè)循環(huán)終止C、使用break語(yǔ)句可以使流程跳出switch語(yǔ)句體D、在for語(yǔ)句中,continue與break的效果是一樣的,可以互換標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:用break語(yǔ)句可以使程序流程跳出switch語(yǔ)句體,也可用break語(yǔ)句在循環(huán)結(jié)構(gòu)中終止循環(huán)體,從而提前結(jié)束循環(huán),而continue語(yǔ)句的作用是結(jié)束本次循環(huán),即跳過(guò)本次循環(huán)體中continue語(yǔ)句后面的語(yǔ)句,立刻進(jìn)行下一次的循環(huán)條件判斷,可以理解為僅結(jié)束本次循環(huán)。32、有以下程序#include<stdio.h>intfun(inta,intb){returna+b;}main(){intx=6,y=7,z=8,r;r=fun(fun(x,y),z--);printf("%d\n",r);}程序運(yùn)行后的輸出結(jié)果是A、15B、21C、20D、31標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查函數(shù)的調(diào)用,函數(shù)fun功能為求兩個(gè)數(shù)據(jù)的和。主函數(shù)中表達(dá)式r=fun(fun(x,y),z--),首先計(jì)算內(nèi)層調(diào)用fun(x,y),計(jì)算結(jié)果為13,然后外層調(diào)用fun(13,8),結(jié)果為21。33、有以下程序#includemain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;}printf("a=%d,b=%d\n",a,b);}程序運(yùn)行后的輸出結(jié)果是A、a=1,b=1B、a=1,b=0C、a=2,b=1D、a=2,b=2標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查的是用switch語(yǔ)句實(shí)現(xiàn)多分支選擇結(jié)構(gòu),首先進(jìn)入第一個(gè)switch(x)判斷,進(jìn)入case1中進(jìn)行嵌套判斷,如果switch(y)也成立,a自加1,遇到break,退出嵌套,接著執(zhí)行case2,a自加為2,b自加為1,遇到break,結(jié)束循環(huán),此時(shí)a=2,b=1。34、有以下程序,程序運(yùn)行后的輸出結(jié)果是#include#defineS(x)4*(x)*x+1voidmain(){intk=5,j=2;printf("%d\n",S(k+j));}A、197B、143C、33D、28標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:這道題涉及到帶參數(shù)的宏的定義和替換這個(gè)知識(shí)點(diǎn)。在程序中定義了帶參數(shù)的宏S(x),當(dāng)在主函數(shù)中用參數(shù)k+j調(diào)用宏S時(shí),根據(jù)宏替換的原則,則S(k+i)=S(5+2)=4*7*5+2+1=143。35、有以下程序,程序運(yùn)行后的輸出結(jié)果是main(){intm=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf("%d,%d,%d,%d\n",m,n,*p,*q);}A、1,2,1,2B、1,2,2,1C、2,1,2,1D、2,1,1,2標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在主函數(shù)定義了3個(gè)整數(shù)指針變量p,q,r,并且使p指向m,q指向n,再執(zhí)行“r=p;p=q;q=r;”這三條語(yǔ)句,使q指向m,p指向n,再輸出變量“m,n,*p,*q”時(shí),它們值分別為1,2,2,1。36、以下結(jié)構(gòu)體類型說(shuō)明和變量定義中正確的是A、typedefstruct{intn;charc;}REC;RECt1,t2;B、structREC;{intn;charc;);RECt1,t2;C、typedefstructREC;{intn=0;charc=’A’;)t1,t2;D、struct{intn;charc;}REC;RECt1,t2;標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:定義結(jié)構(gòu)體類型的一般形式為:struct結(jié)構(gòu)體名{成員列表};struct結(jié)構(gòu)體名后不能加“;”號(hào),所以選項(xiàng)B)、C)錯(cuò)誤,選項(xiàng)D)中定義無(wú)名稱的結(jié)構(gòu)體類型同時(shí)定義結(jié)構(gòu)體變量形式應(yīng)為“structt1,t2;”。選項(xiàng)A)為用戶自定義類型,其為正確的定義形式。37、以下敘述中正確的是A、字符變量在定義時(shí)不能賦初值B、字符常量可以參與任何整數(shù)運(yùn)算C、同一英文字母的大寫和小寫形式代表的是同一個(gè)字符常量D、轉(zhuǎn)義字符用"\"符號(hào)開(kāi)頭標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:A選項(xiàng)中,字符變量在定義時(shí)可以賦初值;C選項(xiàng)中,同一英文字母的大寫和小寫形式代表的是不同的字符常量;D選項(xiàng)中,轉(zhuǎn)義字符以反斜線"\"開(kāi)頭的。因此B選項(xiàng)正確。38、若有定義語(yǔ)句:intyear=2009,*p=&year;以下不能使變量year中的值增至2010的語(yǔ)句是A、(*p)++;B、*p++;C、++(*p);D、*p+=1;標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:由于自加運(yùn)算符++的運(yùn)算級(jí)別高于間接運(yùn)算*的運(yùn)算級(jí)別,所以B選項(xiàng)的表達(dá)式*p++不能使變量year中的值增至2010。因此B選項(xiàng)正確。39、若變量已正確定義,則以下語(yǔ)句的輸出結(jié)果是s=32;s^=32;printf("%d",s);A、-1B、0C、1D、32標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查邏輯異或運(yùn)算,異或運(yùn)算只有在兩個(gè)比較的位不同時(shí)其結(jié)果是1,否則結(jié)果為0,題目中兩個(gè)值相同,所以結(jié)果為0。40、有以下程序#includeintfun(inta,intB){returna+b;}main(){intx=6,y=7,z=8,r;r=fun(fun(x,y),z--);printf("%d\n",r);}程序運(yùn)行后的輸出結(jié)果是A、21B、15C、20D、31標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:函數(shù)fun的功能是返回兩個(gè)形參的和。調(diào)用函數(shù)fun(x,y)時(shí),將變量x=6和y=7的值分別傳送變量a和b,并且通過(guò)語(yǔ)句returna+b;將13返回給主函數(shù)。繼續(xù)調(diào)用函數(shù)fun(13,z--),這里z--指將z的值參與運(yùn)算后,再將z的值減1操作;將13和8分別傳送變量a和b,且通過(guò)語(yǔ)句returna+b;將21返回給主函數(shù)。因此A選項(xiàng)正確。國(guó)家二級(jí)C語(yǔ)言機(jī)試(選擇題)模擬試卷第2套一、選擇題(本題共25題,每題1.0分,共25分。)1、在軟件開(kāi)發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。A、數(shù)據(jù)字典B、詳細(xì)設(shè)計(jì)說(shuō)明書(shū)C、數(shù)據(jù)流圖說(shuō)明書(shū)D、軟件需求規(guī)格說(shuō)明書(shū)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:需求分析的最終結(jié)果是生成軟件需求規(guī)格說(shuō)明書(shū),可以為用戶、分析人員和設(shè)計(jì)人員之間的交流提供方便。2、對(duì)于長(zhǎng)度為n的線性表,在最壞情況下,下列各排序法所對(duì)應(yīng)的比較次數(shù)中正確的是A、冒泡排序?yàn)閚/2B、冒泡排序?yàn)閚C、快速排序?yàn)閚D、快速排序?yàn)閚(n.1)/2標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:假設(shè)線性表的長(zhǎng)度為n,則在最壞情況下,冒泡排序需要經(jīng)過(guò)n/2遍的從前往后的掃描和n/2遍的從后往前的掃描,需要的比較次數(shù)為n(n-1)/2。快速排序法也是一種互換類的排序方法,但由于它比冒泡排序法的速度快,因此,稱為快速排序法。3、計(jì)算機(jī)程序設(shè)計(jì)的模塊化一般是哪一項(xiàng)實(shí)現(xiàn)的?()A、語(yǔ)句B、程序行C、函數(shù)D、變量標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:用函數(shù)作為程序模塊以實(shí)現(xiàn)C程序的模塊化,程序有多個(gè)函數(shù)構(gòu)成,每個(gè)函數(shù)可以實(shí)現(xiàn)一個(gè)具體的功能,多個(gè)函數(shù)便可以實(shí)現(xiàn)程序的模塊化設(shè)計(jì)。4、有三個(gè)關(guān)系R、S和T如下:由關(guān)系R和S通過(guò)運(yùn)算得到關(guān)系T,則所使用的運(yùn)算為A、并B、自然連接C、笛卡爾積D、交標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:關(guān)系R與S經(jīng)交運(yùn)算后所得到的關(guān)系是由那些既在R內(nèi)又在S內(nèi)的有序組組成的,記為R∩S。5、以下敘述中錯(cuò)誤的是A、C程序經(jīng)過(guò)編譯、連接步驟之后才能形成一個(gè)真正可執(zhí)行的二進(jìn)制機(jī)器指令文件B、用C語(yǔ)言編寫的程序稱為源程序,它以ASCII代碼形式存放在一個(gè)文本文件中C、C語(yǔ)言中的每條可執(zhí)行語(yǔ)句和非執(zhí)行語(yǔ)句最終都將被轉(zhuǎn)換成二進(jìn)制的機(jī)器指令D、C語(yǔ)言源程序經(jīng)編譯后生成后綴為.obi的目標(biāo)程序標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:C語(yǔ)言中的非執(zhí)行語(yǔ)句例如宏定義命令,在預(yù)編譯之后替換到代碼中,該命令本身也就不存在了,不會(huì)轉(zhuǎn)換成二進(jìn)制的機(jī)器指令。由高級(jí)語(yǔ)言編寫的程序稱為“源程序”,把由二進(jìn)制代碼表示的程序稱為“目標(biāo)程序”。C語(yǔ)言編寫的源程序就是一ASCII的形式存放在文本文件中的。C源程序經(jīng)過(guò)C編譯程序編譯之后生成一個(gè)后綴為.obj的二進(jìn)制文件(稱為目標(biāo)文件),然后由稱為“連接程序”(Link)的軟件,把此.obj文件與C語(yǔ)言提供的各種庫(kù)函數(shù)連接起來(lái)生成一個(gè)后綴為.EXE的可執(zhí)行文件。6、有以下程序:#include<stdio.h>main(){inti,s=0,t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);printf(’’%d\n’’,s);}程序的運(yùn)行結(jié)果是()。A、20B、25C、45D、36標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:統(tǒng)計(jì)1~9這9個(gè)數(shù)中的奇數(shù)和,此題考查指向數(shù)組的指針。C語(yǔ)言規(guī)定數(shù)組名代表數(shù)組的首地址,也就是第一個(gè)元素的地址,因此*(t+i)代表數(shù)組的第i+1個(gè)元素。程序的運(yùn)行結(jié)果是1+3+5+7+9=25。7、計(jì)算機(jī)能直接執(zhí)行的程序是A、目標(biāo)程序B、可執(zhí)行程序C、匯編程序D、源程序標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:把由高級(jí)語(yǔ)言編寫的程序稱為“源程序”,由二進(jìn)制代碼表示的程序稱為“目標(biāo)程序”(后綴名為.obj),由匯編語(yǔ)言編寫的程序稱為“匯編程序”。為了把源程序轉(zhuǎn)換成機(jī)器能接受的目標(biāo)程序,軟件工作者編制了一系列軟件,通過(guò)這些軟件可以把用戶按規(guī)定語(yǔ)法寫出的語(yǔ)句——翻譯成二進(jìn)制的機(jī)器指令。這種具有翻譯功能的軟件稱為“編譯程序”,每種高級(jí)語(yǔ)言都有與它對(duì)應(yīng)的編譯程序。C源程序經(jīng)過(guò)C編譯程序編譯之后生成一個(gè)后綴為.obj的二制進(jìn)文件(稱為目標(biāo)文件),這個(gè)目標(biāo)程序要和C語(yǔ)言的庫(kù)函數(shù)相鏈接生成一個(gè)后綴為.exe的文件,這個(gè)文件可以在操作系統(tǒng)中直接執(zhí)行,稱為可執(zhí)行程序。8、下面屬于系統(tǒng)軟件的是A、Oracle數(shù)據(jù)庫(kù)管理系統(tǒng)B、人事管理系統(tǒng)C、WPS編輯軟件D、殺毒軟件標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:一般來(lái)講,系統(tǒng)軟件包括操作系統(tǒng)和一系列基本的工具(比如編譯器,數(shù)據(jù)庫(kù)管理,存儲(chǔ)器格式化,文件系統(tǒng)管理,用戶身份驗(yàn)證,驅(qū)動(dòng)管理,網(wǎng)絡(luò)連接等方面的工具),是支持計(jì)算機(jī)系統(tǒng)正常運(yùn)行并實(shí)現(xiàn)用戶操作的那部分軟件。所以O(shè)racle數(shù)據(jù)庫(kù)管理系統(tǒng)是系統(tǒng)軟件。9、有以下程序#includemain(){inta=0,b=0;/*給a賦值a=10:b=20;給b賦值*/printf("a+b=%d\n",a+b);/*輸出計(jì)算結(jié)果*/}程序運(yùn)行后的輸出結(jié)果是A、a+b=30B、a+b=10C、出錯(cuò)D、a+b=0標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:C語(yǔ)言規(guī)定,在字符“/*”和其后緊跟的第一個(gè)字符“*/”中間的部分是注釋內(nèi)容,且注釋部分的內(nèi)容不參與程序的編譯和運(yùn)行,因此,本題中程序語(yǔ)句“a=10;b=20;”沒(méi)有執(zhí)行。10、若有以下程序,則程序的輸出結(jié)果是#includemain(){inta=0,b=0,c=0;c=(a-=++A),(a+=b,b+=4);printf("%d,%d,%d\n",a,b,c);}A、0,4,4B、1,4,1C、0,4,0D、1,4,4標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:表達(dá)式c=(a-=++a),(a+=b,b+=4)相當(dāng)于逗號(hào)表達(dá)式,首先計(jì)算c=(a-=++a),其中a-=++a)等價(jià)于a=a-(++a),得到a的值0,c的值為0,在計(jì)算(a+=b,b+=4)時(shí),a和b的初值為0,計(jì)算以后,a為0,b為4。11、以下選項(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ù)lO,000的表示形式是錯(cuò)誤的。12、以下敘述中正確的是A、語(yǔ)句“charstr[10]="string!";”和“charstr[10]={"string!"};”并不等價(jià)B、對(duì)于一維字符數(shù)組,不能使用字符串常量來(lái)賦初值C、對(duì)于字符串常量“string!”,系統(tǒng)已自動(dòng)在最后加入了“’\0’”字符,表示串結(jié)尾D、在語(yǔ)句charstr[1]="string!";中,數(shù)組str的大小等于字符串的長(zhǎng)度標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在C語(yǔ)言中,字符串是借助于字符型一維數(shù)組來(lái)存放的,可以借助在定義時(shí)初始化以及輸入來(lái)把字符串存入數(shù)組,并規(guī)定以字符’\0’作為“字符串結(jié)束標(biāo)志”?!?’是一個(gè)轉(zhuǎn)義字符,稱為空值,它的ASCII碼值為0。’\0’作為標(biāo)志占用存儲(chǔ)空間,但不計(jì)入字符串的實(shí)際長(zhǎng)度。在C語(yǔ)言中,系統(tǒng)在每個(gè)字符串的最后自動(dòng)加入一個(gè)字符(’\0’)作為字符串的結(jié)束標(biāo)志。13、若有以下程序#include<stdio.h>main(){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。14、以下敘述中錯(cuò)誤的是A、typedef的作用是用一個(gè)新的標(biāo)識(shí)符來(lái)代表已存在的類型名B、typedef說(shuō)明的新類型名必須使用大寫字母,否則會(huì)出編譯錯(cuò)誤C、可以用typedef說(shuō)明的新類型名來(lái)定義變量D、用typedef可以說(shuō)明一種新的類型名標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:typedef語(yǔ)句的作用僅僅是用“標(biāo)識(shí)符”來(lái)代表已存在的“類型名”,并未產(chǎn)生新的數(shù)據(jù)類型,原來(lái)類型名依然有效。為了便于識(shí)別,一般習(xí)慣將新的類型名用大寫字母表示。15、有以下程序#includemain(){inty=9;for(;y>0;y--)if(y%3==0)printf("%d",--y);}程序的運(yùn)行結(jié)果是A、963B、852C、741D、875421標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:y的值的初值為9,所以在for循環(huán)中,當(dāng)y的值為9、6或3時(shí),if語(yǔ)句的條件成立,執(zhí)行輸出語(yǔ)句,輸出表達(dá)式--y的值。因?yàn)樽詼p符號(hào)在y的前面,所以首先y的自減1,然后再輸出v的值,故輸出結(jié)果為852。16、若有以下程序intf(inta[],intn)main(){if(n>1){inta[]={8,2,9,1,3,6,4,7,5};{intt;t=f(a,n-1);printf("%d\n",f(a,9));returnt>a[n-1]?t:a[n—1];}}elsereturna[0];}則程序的輸出結(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的主要功能為計(jì)算數(shù)組中的最大值。主函數(shù)中輸出最大值為9。17、設(shè)變量均已正確定義,若要通過(guò)scanf("%d%c%d%c",&a1,&c1,&a2,&c2);語(yǔ)句為變量a1和a2賦數(shù)值10和20,為變量c1和c2賦字符X和Y。以下所示的輸入形式中正確的是(注:□代表空格字符)A、10□X20□YB、10□X20□YC、10X20YD、10□X□20□Y標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:暫無(wú)解析18、有以下程序#includemain(){intaa[3][3]={{2},{4},{6}},i,*p=&aa[0][0];for(i=0;i<2;i++){if(i==0)aa[i][i+1]=*p+1;else++p;printf("%d",*p);}}程序運(yùn)行后的輸出結(jié)果是A、26B、23C、43D、46標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:觀察題目,可以發(fā)現(xiàn),*p=&aa[0][0]語(yǔ)句實(shí)際是將數(shù)組aa的首地址賦給了指針變量p,將i的值帶入for循環(huán)中,i=0時(shí),aa[0][1]=3,*p=2;*p輸出的是指針?biāo)赶虻臄?shù)組值,此時(shí)p所指向的是aa[0][0],輸出2,而i=1時(shí)執(zhí)行了++p操作使指針向后移動(dòng)指向了aa[0][1],所以在輸出*p時(shí)應(yīng)為3。因此B選項(xiàng)正確。19、若有定義語(yǔ)句:inta[2][3],*p[3];,則以下語(yǔ)句中正確的是A、p=a;B、p[0]=a;C、p[0]=a[1][2];D、p[1]=a;標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查多維數(shù)組和數(shù)組指針。a是一個(gè)二維數(shù)組,p是一個(gè)指針數(shù)組,該數(shù)組有3個(gè)元素,每個(gè)元素都是一個(gè)指向整型對(duì)象的指針。選項(xiàng)A)錯(cuò)誤,等號(hào)的左邊是一個(gè)數(shù)組地址,不是變量:選項(xiàng)B)數(shù)據(jù)類型不匹配,p[0]是指向一個(gè)整型對(duì)象,而a是一個(gè)二維數(shù)組首地址:選項(xiàng)C)正確,是把元素a[1][2]賦值給p[0];選項(xiàng)D)和選項(xiàng)B)一樣屬于數(shù)據(jù)類型不匹配,p[1]是指向一個(gè)整型對(duì)象,而a是一個(gè)二維數(shù)組首地址。20、有以下程序main(){inta[5]={2,4,6,8,10},*p,**k;p=a;k=&p;printf("%d",*(p++));printf("%d\n",**k);}程序運(yùn)行后的輸出結(jié)果是A、44B、24C、22D、46標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:主函數(shù)中指針變量p指向數(shù)組a中下標(biāo)為0的元素,k指向P,那么*(p++)的值為2,p指向數(shù)組中下標(biāo)為1的元素,k指向P,所以**k的值為4。21、有三個(gè)關(guān)系R、S和T如下:則由關(guān)系R和S得到關(guān)系T的操作是A、選擇B、差C、交D、并標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:關(guān)系T是關(guān)系R的一部分,并且是關(guān)系R去掉R和S相同的元素,符合差操作。22、有以下程序#include<stdio.h>main(){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、28cB、abc28C、abcD、因類型不一致而出錯(cuò)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:存程序中首先把字符串a(chǎn)bc寫入到文件myfile.dat中,然后再把整數(shù)28追加到字符串a(chǎn)bc的后面,最后把文件myfile.dat的內(nèi)容讀入到字符串str中,并把其內(nèi)容輸出。23、以下敘述中正確的是A、每個(gè)后綴為.C的C語(yǔ)言源程序都可以單獨(dú)進(jìn)行編譯B、每個(gè)后綴為.C的C語(yǔ)言源程序都應(yīng)該包含一個(gè)main函數(shù)C、在C語(yǔ)言程序中,main函數(shù)必須放在其他函數(shù)的最前面D、在C語(yǔ)言程序中,只有main函數(shù)才可單獨(dú)進(jìn)行編譯標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:一個(gè)普通的C函數(shù)可以單獨(dú)作為一個(gè)C的程序文件存在被包含到其他程序中,每個(gè)后綴為.C的C語(yǔ)言源程序都可以單獨(dú)進(jìn)行編譯,所以B、D錯(cuò)誤,main函數(shù)可以放在程序的開(kāi)始,中間,最后,所以C錯(cuò)誤。24、以下選項(xiàng)中不合法的標(biāo)識(shí)符是()。A、&aB、FORC、printD、00標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:C語(yǔ)言中標(biāo)識(shí)符由字母、下劃線、數(shù)字組成,且開(kāi)頭必須是字母或下劃線。另外,關(guān)鍵字不能作為標(biāo)識(shí)符。因?yàn)镃語(yǔ)言中區(qū)分大小寫,所以B)選項(xiàng)中的"FOR"可以作為標(biāo)識(shí)符來(lái)用。A)選項(xiàng)中含有非法字符&,所以選擇A)。25、下列敘述中正確的是A、循環(huán)隊(duì)列有隊(duì)頭和隊(duì)尾兩個(gè)指針,因此,循環(huán)隊(duì)列是非線性結(jié)構(gòu)B、在循環(huán)隊(duì)列中,只需要隊(duì)頭指針就能反映隊(duì)列中元素的動(dòng)態(tài)變化情況C、在循環(huán)隊(duì)列中,只需要隊(duì)尾指針就能反映隊(duì)列中元素的動(dòng)態(tài)變化情況D、循環(huán)隊(duì)列中元素的個(gè)數(shù)是由隊(duì)頭指針和隊(duì)尾指針共同決定標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:循環(huán)隊(duì)列有隊(duì)頭和隊(duì)尾兩個(gè)指針,但是循環(huán)隊(duì)列仍是線性結(jié)構(gòu)的,所以A錯(cuò)誤;在循環(huán)隊(duì)列中只需要隊(duì)頭指針與隊(duì)尾兩個(gè)指針來(lái)共同反映隊(duì)列中元素的動(dòng)態(tài)變化情況,所以B與C錯(cuò)誤。國(guó)家二級(jí)C語(yǔ)言機(jī)試(選擇題)模擬試卷第3套一、選擇題(本題共25題,每題1.0分,共25分。)1、在數(shù)據(jù)處理中,其處理的最小單位是()。A、數(shù)據(jù)B、數(shù)據(jù)項(xiàng)C、數(shù)據(jù)結(jié)構(gòu)D、數(shù)據(jù)元素標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:數(shù)據(jù)元素是由多個(gè)數(shù)據(jù)項(xiàng)組成,數(shù)據(jù)是能夠被計(jì)算機(jī)識(shí)別、存儲(chǔ)和加工處理的信息載體,數(shù)據(jù)處理的最小單位是數(shù)據(jù)項(xiàng)。2、結(jié)構(gòu)化程序的三種基本控制結(jié)構(gòu)是()。A、順序、選擇和調(diào)用B、過(guò)程、子程序和分程序C、順序、選擇和重復(fù)(循環(huán))D、調(diào)用、返回和轉(zhuǎn)移標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:1966年Boehm和Jacopini證明了程序設(shè)計(jì)語(yǔ)言僅僅使用順序、選擇和重復(fù)三種基本控制結(jié)構(gòu)就足以表達(dá)出各種其他形式結(jié)構(gòu)的程序設(shè)計(jì)方法。3、設(shè)樹(shù)T的深度為4,其中度為1,2,3,4的結(jié)點(diǎn)個(gè)數(shù)分別為4,2,1,1。則T中的葉子結(jié)點(diǎn)數(shù)為A、8B、7C、6D、5標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:深度為m二叉樹(shù)其總結(jié)點(diǎn)數(shù)為2m-1=24-1=15??偨Y(jié)點(diǎn)數(shù)減去度為1,2,3,4的結(jié)點(diǎn)個(gè)數(shù)就是葉子結(jié)點(diǎn)數(shù)。15-4-2-1-1=7。4、下列排序方法中,最壞情況下比較次數(shù)最少的是A、冒泡排序B、簡(jiǎn)單選擇排序C、直接插入排序D、堆排序標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:冒泡排序、簡(jiǎn)單選擇排序和直接插入排序法在最壞的情況下比較次數(shù)為:n(n-1)/2。而堆排序法在最壞的情況下需要比較的次數(shù)為O(nlog2n)。其中堆排序的比較次數(shù)最少。5、下面不屬于軟件設(shè)計(jì)階段任務(wù)的是A、軟件總體設(shè)計(jì)B、算法設(shè)計(jì)C、制定軟件確認(rèn)測(cè)試計(jì)劃D、數(shù)據(jù)庫(kù)設(shè)計(jì)標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:軟件設(shè)計(jì)階段總體分為兩部分:概要設(shè)計(jì)和詳細(xì)設(shè)計(jì),此階段的主要任務(wù)就是將需求規(guī)格說(shuō)明文檔轉(zhuǎn)換為軟件設(shè)計(jì)文檔,將需求階段提出的問(wèn)題,一一解釋,形成詳細(xì)設(shè)計(jì)文檔,并根據(jù)功能要求,定制相應(yīng)數(shù)據(jù)結(jié)構(gòu)、各種流程圖等,為下一步編碼做準(zhǔn)備。6、下面描述中,不屬于軟件危機(jī)表現(xiàn)的是A、軟件過(guò)程不規(guī)范B、軟件開(kāi)發(fā)生產(chǎn)率低C、軟件質(zhì)量難以控制D、軟件成本不斷提高標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:軟件危機(jī)主要表現(xiàn)在以下6個(gè)方面:①軟件需求的增長(zhǎng)得不到滿足;②軟件開(kāi)發(fā)成本和進(jìn)度無(wú)法控制;③軟件質(zhì)量難以保證;④軟件不可維護(hù)或維護(hù)程度非常低;⑤軟件的成本不斷提高;⑥軟件開(kāi)發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和應(yīng)用需求的增長(zhǎng)。7、軟件工程的三要素是()。A、方法、工具和過(guò)程B、建模、方法和工具C、建模、方法和過(guò)程D、定義、方法和過(guò)程標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:軟件工程的三要素是方法、工具和過(guò)程,答案選A。8、帶鏈棧空的條件是A、top=bottom=NULLB、top=-1且bottom=NULLC、top=NULL且bottom-1D、top=bottom=-1標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:棧的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)稱為鏈棧。在鏈棧中,只會(huì)出現(xiàn)棧空和非空兩種狀態(tài)。當(dāng)棧為空時(shí),有top=bottom=NULL;當(dāng)棧非空時(shí),top指向鏈表的第一個(gè)結(jié)點(diǎn)(棧頂)。所以選項(xiàng)A正確。9、軟件調(diào)試的目的是A、發(fā)現(xiàn)錯(cuò)誤B、改正錯(cuò)誤C、改善軟件的性能D、驗(yàn)證軟件的正確性標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:軟件調(diào)試的任務(wù)是診斷和改正程序中的錯(cuò)誤。程序調(diào)試活動(dòng)由兩部分組成,一是根據(jù)錯(cuò)誤的跡象確定程序中的錯(cuò)誤的確切性質(zhì)、原因和位置。二是對(duì)程序進(jìn)行修改,排除這個(gè)錯(cuò)誤。10、設(shè)有定義:inta=1,b=2,c=3;以下語(yǔ)句中執(zhí)行效果與其它三個(gè)不同的是A、if(a>b)c=a;a=b;b=c;B、if(a>b){c=a,a=b,b=c;}C、if(a>b)c=a,a=b,b=c;D、if(a>b){c=a;a=b;b=c;}標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:在C語(yǔ)言中,用分號(hào)表示一條語(yǔ)句的結(jié)束,用{}把幾條語(yǔ)句放在一塊表示一個(gè)語(yǔ)句塊,其整體表示一個(gè)功能。因而在題目給出的四個(gè)選項(xiàng)中,選項(xiàng)B、C、D表示的功能相同,而選項(xiàng)A表示的是一條if語(yǔ)句,兩條賦值語(yǔ)句。11、以下關(guān)于結(jié)構(gòu)化程序設(shè)計(jì)的敘述中正確的是A、結(jié)構(gòu)化程序使用goto語(yǔ)句會(huì)很便捷B、一個(gè)結(jié)構(gòu)化程序必須同時(shí)由順序、分支、循環(huán)三種結(jié)構(gòu)組成C、由三種基本結(jié)構(gòu)構(gòu)成的程序只能解決小規(guī)模的問(wèn)題D、在C語(yǔ)言中,程序的模塊化是利用函數(shù)實(shí)現(xiàn)的標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:C語(yǔ)言是結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言,順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計(jì)的三種基本結(jié)構(gòu),研究證明任何程序都可以由這三種基本結(jié)構(gòu)組成。但是程序可以包含一種或者幾種結(jié)構(gòu),不是必須包含全部三種結(jié)構(gòu)。自從提倡結(jié)構(gòu)化設(shè)計(jì)以來(lái),goto就成了有爭(zhēng)議的語(yǔ)句。首先,由于goto語(yǔ)句可以靈活跳轉(zhuǎn),如果不加限制,它的確會(huì)破壞結(jié)構(gòu)化設(shè)計(jì)風(fēng)格。其次,goto語(yǔ)句經(jīng)常帶來(lái)錯(cuò)誤或隱患。它可能跳過(guò)了某些對(duì)象的構(gòu)造、變量的初始化、重要的計(jì)算等語(yǔ)句。Goto語(yǔ)句的使用會(huì)使程序容易發(fā)生錯(cuò)誤并且也不易閱讀,所以應(yīng)避免使用。由三種基本結(jié)構(gòu)構(gòu)成的程序幾乎能解決大部分問(wèn)題。12、有以下程序:#includemain(){FILE*fp;inta[10]={1,2,3},i,n;fp=fopen(“d1.dat”,”W”);for(i=0;i<3;i++)fprintf(fp,“%d”,a[i]);fprintf(fp,“\n”);felose(fp);fp=fopen(“d1.dat”,“r”);fscanf(fp,“%d”,&n);fclose(fp);printf(“%d\n”,n);}程序的運(yùn)行結(jié)果是()。A、321B、12300C、1D、123標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:程序首先將數(shù)組a[10]中的元素1、2、3分別寫入了文件d1.dat文件中,然后又將d1.dat文件中的數(shù)據(jù)123整體寫到變量n的空間中,所以打印n時(shí)輸出的數(shù)據(jù)為123。13、表達(dá)式:(int)((double)9/2)-9%2的值是A、0B、4C、3D、5標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:這個(gè)表達(dá)式的計(jì)算過(guò)程為,首先求出9除以2的商等于4,再把其強(qiáng)制轉(zhuǎn)化為實(shí)型數(shù)據(jù)為4.0,然后再?gòu)?qiáng)制轉(zhuǎn)4,減去9對(duì)2求余數(shù)1,得到其結(jié)果等于3。14、以下能正確定義字符串的語(yǔ)句是A、charstr="\x43";B、charstr[]="\0";C、charstr=";D、charstr[]={’\064’};標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:字符串常量是用一對(duì)雙括號(hào)括起來(lái)的一串字符。它用字符數(shù)組來(lái)存放,不用一對(duì)大括號(hào)對(duì)括起來(lái)。15、若有以下程序#includemain(){inta=1,b=2,c=3,d=4,r=0;if(a!=1);elser=1;if(b==2)r+=2;else;if(c!=3)r+=3;else;if(d==4)r+=4;printf("%d\n",r);}則程序的輸出結(jié)果是A、10B、6C、7D、3標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:程序代碼中有四條并列的if語(yǔ)句,第一條if表達(dá)式a!_l不成立,執(zhí)行else分支,r=l;第二條if表達(dá)式b==2成立,執(zhí)行r+=2,r==3;第三條if語(yǔ)句c!=3不成立,執(zhí)行else分支,分支為空語(yǔ)句;第四條if分支d==4成立,執(zhí)行該if分支語(yǔ)句,r+=4,r=7。16、以下不合法的字符常量是A、’\"’B、’\\’C、’\018’D、’\xcc’標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在C語(yǔ)言中,一個(gè)字符常量代表ASCII字符集中的一個(gè)字符,在程序中用單引號(hào)把一個(gè)字符括起來(lái)用為字符常量。轉(zhuǎn)義字符常量也是必須括在一對(duì)單引號(hào)內(nèi),以一個(gè)反斜線開(kāi)頭后跟一個(gè)特定的字符,用來(lái)代表某一個(gè)特定的ASCII字符。在選項(xiàng)C)中,’\018’是用八進(jìn)制數(shù)來(lái)代表一個(gè)字符常量,所以其中的數(shù)字只能小于8,并不包括8。17、有以下程序main(){inti=5;do{if(i%3=1)if(i%5==2){printf("**%d",i);break;}i++;}while(i!=0);printf("\n");}程序的運(yùn)行結(jié)果是A、*3*5B、*5C、*7D、*2*6標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:由于循環(huán)變量i的初值等于5,所以第一、二次進(jìn)入do....while循環(huán)語(yǔ)句時(shí),條件語(yǔ)句if(i%3==1),if(i%5==2){printf(“*%d”,i);break;}不執(zhí)行,只執(zhí)行i++語(yǔ)句。當(dāng)i=7時(shí),滿足條件語(yǔ)句if(i%3==1),if(i%5==2){printf("*%d",i);break;},所以輸出*7,結(jié)束循環(huán)。18、有以下程序#include<stdio.h>intfun(){staticintx=1;main(){inti,s=1;x+=1;for(i=1;i<=5;i++)s+=fun();returnx;}printf("%d\n",s);}程序運(yùn)行后的輸出結(jié)果是A、11B、21C、6D、120標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:這道試題主要考查了局部靜態(tài)變量的應(yīng)用。在函數(shù)fun()中定義了局部靜態(tài)變量整型x,其初值等于1,在主函數(shù)中循環(huán)執(zhí)行5次,第一次變量s的值等于3.變量x的值等于2,第二次變量s的值等于6,變量x的值等于3,第三次變量s的值等于10,變量x的值等于4,第四次變量s的值等于15,變量x的值等于5,第五次變量s的值等于21,變量x的值等于6。19、以下敘述中正確的是A、函數(shù)既可以直接調(diào)用自己,也可以間接調(diào)用自己B、任何情況下都不能用函數(shù)名作為實(shí)參C、函數(shù)的遞歸調(diào)用不需要額外開(kāi)銷,所以效率很高D、簡(jiǎn)單遞歸不需要明確的結(jié)束遞歸的條件標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:一個(gè)C語(yǔ)言源程序可以由一個(gè)或多個(gè)源文件組成,每個(gè)源文件可由一個(gè)或多個(gè)函數(shù)組成,各函數(shù)之間是平行的,除了主函數(shù)外,函數(shù)之間可以相互調(diào)用,甚至C語(yǔ)言中的函數(shù)可以直接或間接地自己調(diào)用自己,稱之為遞歸調(diào)用,該調(diào)用主要用于把要解決的問(wèn)題轉(zhuǎn)化為一個(gè)新的問(wèn)題,而這個(gè)新問(wèn)題的解決方法仍與原來(lái)的解法相同,只是所處理的對(duì)象有規(guī)律地遞增或遞減,可以應(yīng)用這個(gè)轉(zhuǎn)化過(guò)程使問(wèn)題得到解決,同時(shí)為了有效使用遞歸調(diào)用必定要有一個(gè)明確的結(jié)束遞歸的條件。而每次進(jìn)行遞歸調(diào)用時(shí)候,需要利用棧保存現(xiàn)場(chǎng)信息,因此并不會(huì)提高效率,選項(xiàng)C和選項(xiàng)D不正確。函數(shù)名表名了函數(shù)的入口地址,如果函數(shù)的形參為指向函數(shù)的指針變量,那么對(duì)應(yīng)的實(shí)參必須為函數(shù)名,因此函數(shù)名可以為函數(shù)的參數(shù),選項(xiàng)B錯(cuò)誤。20、若有以下程序#includemain(){intc;c=13|5;printf("%d\n",c);}則程序的輸出結(jié)果是A、13B、15C、18D、5標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查位運(yùn)算中按位或運(yùn)算符,或運(yùn)算只要兩個(gè)比較的位中有一個(gè)為1,其結(jié)果是1,否則結(jié)果為0,,13用二進(jìn)制表示為00001101,5用二進(jìn)制表示為00000101,或后00001101,即13,選項(xiàng)A正確。21、以下敘述中正確的是A、在scanf函數(shù)中的格式控制字符串是為了輸入數(shù)據(jù)用的,不會(huì)輸出到屏幕上B、在使用scanf函數(shù)輸入整數(shù)或?qū)崝?shù)時(shí),輸入數(shù)據(jù)之間只能用空格來(lái)分隔C、在printf函數(shù)中,各個(gè)輸出項(xiàng)只能是變量D、使用printf函數(shù)無(wú)法輸出百分號(hào)%標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:scanf函數(shù)中的格式控制字符串是為了輸入數(shù)據(jù)用的,無(wú)論其中有什么字符,也不會(huì)輸出到屏幕上,因此若想在屏幕上輸出提示信息,應(yīng)該首先使用printf函數(shù)輸出,選項(xiàng)A正確;在使用scanf函數(shù)輸入整數(shù)或?qū)崝?shù)時(shí),輸入數(shù)據(jù)之間可以用空格、跳格、回車來(lái)分隔,選項(xiàng)B錯(cuò)誤;printf輸出項(xiàng)不但可以為變量,還可以表達(dá)式或者常量,選項(xiàng)C錯(cuò)誤;如果要輸出“%”,可以在格式控制中用“%%”表示,將輸出一個(gè)“%”,選項(xiàng)D錯(cuò)誤。22、有下列程序:#include<stdio.h>#include<string.h>typedefstruct{charname[9];charsex;floatscore[2];}STU;STUf(STUa){STUb={"Zhao",’m’,85.0,90.0};inti;strcpy(a.name,b.name);a.sex=b.sex;for(i=0;i<2;i++)a.score[i]=b.score[i];returna;}main(){STUc={"QA、Qian,m,85,90B、Zhao,f,95,92C、Zhao,m,85,90D、Qian,f,95,92標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:f()函數(shù)的功能是對(duì)形參a的各個(gè)成員用結(jié)構(gòu)體變量b的各個(gè)成員進(jìn)行賦值后,然后返回變量a。在主函數(shù)中調(diào)用f(c)函數(shù)時(shí),將STU類型的結(jié)構(gòu)體變量c的值傳遞給形參a,函數(shù)f()在對(duì)a的各個(gè)成員進(jìn)行重新賦值后,再將返回變量a的值傳給d,最后輸出結(jié)構(gòu)變量d的各個(gè)成員的值。23、有以下程序#incllldeintfun(chars[])main(){intn=0;{chars[10]={’6’,’1’,’*’,’4’,’*’,’9’,’*’,’0’,’*’};while(*s<=’9’&&*s>=’0’)printf("%d\n",fun(s));{n=10*n+*s-’0’;s++;}}return(n);}程序的運(yùn)行結(jié)果是A、61490B、61C、9D、5標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在fun函數(shù)中,while循環(huán)的功能是逐個(gè)取字符數(shù)組s的字符判斷其是否是數(shù)字。若是則將這些數(shù)字組成一個(gè)數(shù)保存到變量n中,并返回變量n的值。所以在主函數(shù)中調(diào)用fun(s)時(shí),將把字符數(shù)組s中的數(shù)字組成一個(gè)數(shù)輸出。因?yàn)楫?dāng)指針s指向數(shù)組的第3位時(shí),即字符件’*’,循環(huán)條件不成立,循環(huán)結(jié)束,返回n的值。所以輸出n的值為61。24、有以下程序#includemain(){chara=4;printf("%d\n",a=a<<1);}A、8B、16C、40D、4標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題主要考查按位右移運(yùn)算。a=4的二進(jìn)制為00000100,a<<1后為00001000,其值為十進(jìn)制數(shù)值8。25、有下列程序#include<stdio.h>main(){char*P="6938";inti,s=0;for(i=3;i>=0;i--)s=10*s+p[i]-’0’;printf("%d\n",s);}程序運(yùn)行后的輸出結(jié)果是()。A、8396B、6938C、3869D、3689標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:程序首先定義一個(gè)字符指針p,指向一個(gè)字符串“6938”,然后通過(guò)for循環(huán)使用逆序的方式遍歷字符串的各個(gè)字符,并將各個(gè)字符當(dāng)作整數(shù)參與算術(shù)運(yùn)算,其中p[i]-‘0’含義是將字符串中的數(shù)字字符轉(zhuǎn)換成對(duì)應(yīng)的整數(shù);10*s是將上一次運(yùn)算結(jié)果乘以10后與轉(zhuǎn)換后的整數(shù)相加,再累加到s中,所以for循環(huán)執(zhí)行完后,s的值是將字符串“6938”逆序后當(dāng)作整數(shù)輸出,本題答案為A。國(guó)家二級(jí)C語(yǔ)言機(jī)試(選擇題)模擬試卷第4套一、選擇題(本題共25題,每題1.0分,共25分。)1、深度為5的完全二叉樹(shù)的結(jié)點(diǎn)數(shù)不可能是()。A、15B、16C、17D、18標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:對(duì)于滿二叉樹(shù),葉子結(jié)點(diǎn)的數(shù)目等于2n—1,n為深度,這里就是24=16。2、設(shè)棧的存儲(chǔ)空間為S(1:m),初始狀態(tài)為top=m+1。經(jīng)過(guò)一系列入棧與退棧操作后,top=m?,F(xiàn)又在棧中退出一個(gè)元素后,棧頂指針top值為()。A、0B、m-1C、m+1D、產(chǎn)生??斟e(cuò)誤標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:棧的順序存儲(chǔ)空間為S(1:m),初始狀態(tài)top=m+1,所以這個(gè)棧是m在棧底(也可理解為開(kāi)口向下的棧)。經(jīng)過(guò)一系列入棧與退棧操作后top=m,則棧中有1個(gè)元素,若現(xiàn)在又退出一個(gè)元素,那么棧頂指針下移一位,回到m+1的位置。3、以下敘述中正確的是A、C程序書(shū)寫格式嚴(yán)格,要求一行內(nèi)只能寫一個(gè)語(yǔ)句B、C程序書(shū)寫格式自由,一個(gè)語(yǔ)句可以寫在多行上C、C程序中的注釋只能出現(xiàn)在程序的開(kāi)始位置和語(yǔ)句的后面D、用C語(yǔ)言編寫的程序只能放在一個(gè)程序文件中標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題主要考查的足C語(yǔ)言結(jié)構(gòu)中的源程序書(shū)寫格式這個(gè)知識(shí)點(diǎn),在C語(yǔ)言中注釋部分對(duì)程序的運(yùn)行結(jié)果不產(chǎn)生任何影響,它可以出現(xiàn)在任意位置;c語(yǔ)言書(shū)寫自由,一行內(nèi)可以寫多個(gè)語(yǔ)句,一個(gè)語(yǔ)句可以寫在多行上;由于C語(yǔ)言編寫的程序有很好的移植性,可以放在多個(gè)程序文件中。4、某二叉樹(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)。5、請(qǐng)閱讀程序:#include<math.h>#include<stdio.h>main(){floata,b,c;scanf("%f%f",&a,&b);c=a/b;while(1){if(fabs(c)>1.6){a=b;b=c;c=a/b;}elsebreak;}printf("%f\n",b);}若運(yùn)行時(shí)從鍵盤上輸入3.62.4<回車>,則輸出結(jié)果是()。A、1.500000B、1.600000C、2.000000D、2.400000標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查甩break語(yǔ)句終止循環(huán)。程序中定義了兩個(gè)實(shí)型變量a、b,并給scanf()函數(shù)賦值,鍵盤輸入3.62.4<回車>后,a=3.6,b=2.4,c=a/b=3.6/2.4=1.5,因?yàn)閏=1.5<1.6,退出循環(huán),輸出b的原值。表面上看,while(1)條件恒為真,將會(huì)產(chǎn)生死循環(huán),但利用break語(yǔ)句可以終止循環(huán)。6、下列敘述中正確的是()。A、數(shù)據(jù)庫(kù)系統(tǒng)避免了一切冗余B、數(shù)據(jù)庫(kù)系統(tǒng)減少了數(shù)據(jù)冗余C、數(shù)據(jù)庫(kù)系統(tǒng)中數(shù)據(jù)的一致性是指數(shù)據(jù)類型一致D、數(shù)據(jù)庫(kù)系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù)標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:數(shù)據(jù)庫(kù)系統(tǒng)共享性大,冗余度小,但只是減少了冗余,并不是避免一切冗余。數(shù)據(jù)的一致性是指在系統(tǒng)中同一數(shù)據(jù)在不同位置的出現(xiàn)應(yīng)保持相同的值,而不是數(shù)據(jù)類型的一致。數(shù)據(jù)庫(kù)系統(tǒng)比文件系統(tǒng)有更強(qiáng)的管理控制能力,而不是管理更多的數(shù)據(jù)。7、下面描述中錯(cuò)誤的是()。A、系統(tǒng)總體結(jié)構(gòu)圖支持軟件系統(tǒng)的詳細(xì)設(shè)計(jì)B、軟件設(shè)計(jì)是將軟件需求轉(zhuǎn)換為軟件表示的過(guò)程C、數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)庫(kù)設(shè)計(jì)是軟件設(shè)計(jì)的任務(wù)之一D、PAD圖是軟件詳細(xì)設(shè)計(jì)的表示工具標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:軟件設(shè)計(jì)是將軟件需求轉(zhuǎn)換為軟件表示的過(guò)程;數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)庫(kù)設(shè)計(jì)是軟件設(shè)計(jì)的任務(wù)之一;PAD圖,即問(wèn)題分析圖,是一種主要用于描述軟件詳細(xì)設(shè)計(jì)的圖形工具。8、有以下程序#includemain(){inta1,a2;charc1,c2;scanf(’’%d%c%d%c’’,&al,&c1,&a2,&c2);printf(’’%d,%c,%d,%c’’,a1,c1,a2,c2);}若想通過(guò)鍵盤輸入,使得a1的值為12,a2的值為34,cl的值為字符a,c2的值為字符b,程序輸出結(jié)果是:12,a,34,b則正確的輸入格式是(以下□代表空格,代表回車)A、12□a□34□bB、12,a,34,bC、12a34bD、12□a34□b標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查scanf語(yǔ)句。scanf()函數(shù)是格式化輸入函數(shù),它從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤)讀取輸入的信息。其調(diào)用格式為:scanff”<格式化字符串>”,<地址表>)格式化字符串包括以下3類不同的字符;①格式化說(shuō)明符:格式化說(shuō)明符與前而用的printf()函數(shù)中的格式說(shuō)明符基本相同。②空白字符:空白字符會(huì)使scanff)函數(shù)在讀操作中略去輸入中的一個(gè)或多個(gè)空白字符。③非空白字符:一個(gè)非空白字符會(huì)使scanff()函數(shù)在讀入時(shí)剔除掉與這個(gè)非空白字符相同的字符。由于在scanf函數(shù)中,幾個(gè)變量之間沒(méi)有任何間隔,所以輸入的時(shí)候,也同樣不應(yīng)該有間隔。9、設(shè)有定義:doublea[10],*s=a;,以下能夠代表數(shù)組元素a[3]的是()。A、(*s)[3]B、*(s+3)C、*s[3]D、*s+3標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:題中,首先定義了double型的數(shù)組a,并將數(shù)組首地址賦給指針s。s[3]能夠表示a[3],故選項(xiàng)A、C不能表示a[3];選項(xiàng)D的*s+3=a[0]+3。故本題答案為B選項(xiàng)。10、有以下程序#includeintflintx,inty){return((y-x)*x);}main()finta=3,b=4,c=5,d;d=f(f(a,b),f(a,c));printf("%d\n",d);}程序運(yùn)行后的輸出結(jié)果是A、10B、8C、9D、7標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查函數(shù)的嵌套調(diào)用。首先計(jì)算f(a,b)與f(a,c),f(a,b)=(b—a)*a=3,f(a,c)=(c-a)*a=6,然后計(jì)算f(3,6)=(6—3)*3=9。11、以下程序的輸出結(jié)果是()。#includevoidfun(char**P){++p;printf(’’%sh’’,*P);}main(){char*a[]={’’Morning’’,’’Afternoon’’,’’Evening’’,’’Night’’);fun(a);}A、MorningB、fternoonC、orningD、Afternoon標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:題目中指針的指針變量a和p都是指向字符串的指針。執(zhí)行fun(a)語(yǔ)句時(shí),p指向的是字符串?dāng)?shù)組a的第一個(gè)字符串“Morning”,p自加1之后,*p指向了字符串?dāng)?shù)組a的第2個(gè)字符串“Afternoon”。12、有以下程序#include<stdio.h>#deftneN2#defineMN+1#defineNUM(M+1)*M/2main(){printf(’’%d\n’’,NUM);)程序運(yùn)行后的輸出結(jié)果是A、4B、8C、9D、6標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:宏展開(kāi)以后NuM為(2+1+1)*2+1/2,計(jì)算以后值為8。注意在進(jìn)行宏展開(kāi)的時(shí)候,千萬(wàn)不要試圖計(jì)算,展開(kāi)以后再進(jìn)行計(jì)算。13、設(shè)變量均已正確定義,若要通過(guò)scanf(”%d%c%d%c”,&a1,&c1,&a2,&c2);語(yǔ)句為變量a1和a2賦數(shù)值10和20,為變量c1和c2賦字符X和Y。以下所示的輸入形式中正確的是(注:口代表空格字符)A、10口X20口YB、10口X20口YC、10X20YD、10口X口20口Y標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在使用scanf函數(shù)進(jìn)行輸入數(shù)據(jù)時(shí),輸入的數(shù)據(jù)之間必須用空格、回車符、制表符(Tab鍵)等間隔符隔開(kāi),但是空格為合法的字符型數(shù)據(jù)的輸入。而按照格式符"%d%c%d%c"說(shuō)明,數(shù)值型數(shù)據(jù)和字符數(shù)據(jù)輸入之間不要加入空格間隔,而字符型數(shù)據(jù)和數(shù)值型數(shù)據(jù)的輸入?yún)s可以加入任意的空格,回車和跳格。14、下列敘述中正確的是A、在switch語(yǔ)句中必須使用defaultB、break語(yǔ)句必須與switch語(yǔ)句中的case配對(duì)使用C、在switch語(yǔ)句中,不一定使用break語(yǔ)句D、break語(yǔ)句只能用于switch語(yǔ)句標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:break為C語(yǔ)言關(guān)鍵字,又稱間斷語(yǔ)句。break語(yǔ)句的功能是跳出正在執(zhí)行的條件語(yǔ)句或循環(huán)語(yǔ)句。它可以出現(xiàn)在switch語(yǔ)句中,也可以出現(xiàn)在循環(huán)語(yǔ)句中。defauh是關(guān)鍵字,起標(biāo)號(hào)的作用,代表所有case標(biāo)號(hào)之外的那些標(biāo)號(hào)。default標(biāo)號(hào)可以出現(xiàn)在語(yǔ)句體中任何標(biāo)號(hào)位置上。在switch語(yǔ)句體中也可以沒(méi)有default標(biāo)號(hào)。15、若以下選項(xiàng)中的變量a,b,y均己正確定義并賦值,則語(yǔ)法正確的switch語(yǔ)句是A、switch(a*a+b*b){default:break;case3:y=a+b;break;case2:y=a-b;break;}B、switch(a+b){case1:case3:y=a+b;break;case0:case4:y=a-b;}C、switch(a+9){casea:y=a-b:caseb:y=a+b:}D、switcha*b{case10:y=a+b;default:y=a-b;}標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:使用switch語(yǔ)句直接處理多個(gè)分支,其一般形式為:switch(表達(dá)式){case常量表達(dá)式1:語(yǔ)句1:break;case常量表達(dá)式n:語(yǔ)句n:break;defauh:語(yǔ)句n+1;break;}switch語(yǔ)句的執(zhí)行流程是:首先計(jì)算switch后面圓括號(hào)中表達(dá)式的值,然后用此值依次與各個(gè)case的常量表達(dá)式比較,若圓括號(hào)中表達(dá)式的值與某個(gè)case后面的常量表達(dá)式的值相等,就執(zhí)行此case后面的語(yǔ)句,執(zhí)行后遇break語(yǔ)句就退出switch語(yǔ)句;若圓括號(hào)中表達(dá)式的值與所有case后面的常量表達(dá)式都不等,則執(zhí)行default后面的語(yǔ)句n+1,然后退出switch語(yǔ)句。對(duì)于選項(xiàng)B),case語(yǔ)句和常量之問(wèn)沒(méi)有空格,而選項(xiàng)C)中的case后面為變量.選項(xiàng)D)中switch后面沒(méi)給出圓括號(hào)。16、有以下程序main(){inti;for(i=1;i<=40;i++){if(i++%5==0)if(++i%8==0)printf("%d",i);}printf("\n");}執(zhí)行后的輸出結(jié)果是A、24B、5C、32D、40標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在for循環(huán)體中,首先判斷自變量i能否被5整除,然后再自加兩次,最后判斷i能否被8整除。當(dāng)for循環(huán)執(zhí)行到第30次時(shí),i的值為30能被5整除,然后i經(jīng)過(guò)兩次自加1運(yùn)算,值變?yōu)?2,能被8整除,故執(zhí)行“printf("%d",i);”語(yǔ)句,即輸出32。17、以下敘述中錯(cuò)誤的是A、算法正確的程序最終一定會(huì)結(jié)束B(niǎo)、算法正確的程序可以有零個(gè)輸入C、算法正確的程序可以有零個(gè)輸出D、算法正確的程序?qū)τ谙嗤妮斎胍欢ㄓ邢嗤慕Y(jié)果標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:算法是指為解決某個(gè)特定問(wèn)題而采取的確定且有限的步驟。一個(gè)算法應(yīng)該具有以下5個(gè)特征:①有窮性。一個(gè)算法包含的操作步驟應(yīng)該是有限的。也就是說(shuō),在執(zhí)行若干個(gè)操作步驟之后,算法將結(jié)束,而且每一步都在合理的時(shí)間內(nèi)完成。②確定性。算法中的每一條指令必須有確切的含義,不能有二義性,對(duì)于相同的輸入必能得出相同的執(zhí)行結(jié)果。③可行性。算法中指定的操作,都可以通過(guò)已經(jīng)驗(yàn)證過(guò)可以實(shí)現(xiàn)的基本運(yùn)算執(zhí)行有限次后實(shí)現(xiàn)。④有零個(gè)或多個(gè)輸入。在計(jì)算機(jī)上實(shí)現(xiàn)的算法是

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論