國(guó)家二級(jí)(C語(yǔ)言)機(jī)試模擬試卷24(共345題)_第1頁(yè)
國(guó)家二級(jí)(C語(yǔ)言)機(jī)試模擬試卷24(共345題)_第2頁(yè)
國(guó)家二級(jí)(C語(yǔ)言)機(jī)試模擬試卷24(共345題)_第3頁(yè)
國(guó)家二級(jí)(C語(yǔ)言)機(jī)試模擬試卷24(共345題)_第4頁(yè)
國(guó)家二級(jí)(C語(yǔ)言)機(jī)試模擬試卷24(共345題)_第5頁(yè)
已閱讀5頁(yè),還剩99頁(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ī)試模擬試卷24(共9套)(共345題)國(guó)家二級(jí)(C語(yǔ)言)機(jī)試模擬試卷第1套一、選擇題(本題共39題,每題1.0分,共39分。)1、設(shè)某二叉樹的后序序列為CBA,中序序列為ABC,則該二叉樹的前序序列為()。A、BCAB、CBAC、ABCD、CAB標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:后序序列為CBA,中序序列為ABC,則說(shuō)明,A為根結(jié)點(diǎn),并且B和C均在A的右子樹上;結(jié)點(diǎn)B和C中,后序序列為CB,中序序列為BC,則說(shuō)明結(jié)點(diǎn)C在結(jié)點(diǎn)B的右子樹上,根據(jù)分析可得,該二叉樹的前序序列為ABC,答案選C。2、設(shè)一棵滿二叉樹共有15個(gè)結(jié)點(diǎn),則在該滿二叉樹中的葉子結(jié)點(diǎn)數(shù)為()。A、7B、8C、9D、10標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在具有n個(gè)結(jié)點(diǎn)的滿二叉樹,其非葉子結(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。3、以下程序的輸出結(jié)果是()。#includemain(){inta=4,b=3,c=2,d=1;printf("%d",aA、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ì)算“d4、以下數(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)解析:D選項(xiàng)中x[2][3]定義的是一個(gè)兩行三列的二維數(shù)組,而在給數(shù)組元素賦值時(shí)卻賦成了三行,所以錯(cuò)誤。5、有以下程序:#include<stdio.h>voidf(int*q){imi=0;for(;i<5;i++)(*q)++;}main(){inta[5]={1,2,3,4,5},i;f(a);for(i=0;i<5;i++)printf("%d,",a[i]);}程序運(yùn)行后的輸出結(jié)果是()。A、6,2,3,4,5,B、2,2,3,4,5,C、1,2,3,4,5,D、2,3,4,5,6,標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查的是函數(shù)的地址調(diào)用,將數(shù)組名作為數(shù)組首地址進(jìn)行傳遞,然后取首個(gè)數(shù)組元素值進(jìn)行加1運(yùn)算,循環(huán)5次。因此A選項(xiàng)正確。6、有以下程序:#include<stdio.h>voidfun(intn){staticintx[3]={1,2,3};intk;for(k=0;k<3;k++)x[k]+=x[k]-n;for(k=0;k<3;k++)printf("%d,",x[k]);}main(){fun(0);fun(1);}程序運(yùn)行后的輸出結(jié)果是()。A、1,2,3,0,2,4,B、2,4,6,3,7,11,C、2,4,6,1,3,5,D、1,2,3,4,5,6,標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:第一次調(diào)用fun()函數(shù),此時(shí)n=0,數(shù)組x是靜態(tài)的,因此,只在第一次時(shí)初始化,由x[k]+=x[k]-n計(jì)算可知,x[]={2,4,6},第二次調(diào)用fun(),此時(shí)n=1,x[]={2,4,6},經(jīng)計(jì)算得x[]={3,7,11},故輸出結(jié)果為2,4,6,3,7,11,。7、以下敘述中不正確的是()。A、在不同的函數(shù)中可以使用相同的名字的變量B、函數(shù)中的形式參數(shù)是局部變量C、在一個(gè)函數(shù)內(nèi)定義的變量只在本函數(shù)范圍內(nèi)有效D、在一個(gè)函數(shù)內(nèi)的復(fù)合語(yǔ)句中定義的變量在本函數(shù)范圍內(nèi)有效標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:此題考查的是變量的作用范圍。選項(xiàng)D)中,在一個(gè)函數(shù)的復(fù)合語(yǔ)句中定義的變量是局部變量,只在定義此變量的復(fù)合語(yǔ)句內(nèi)有效,并不是在整個(gè)函數(shù)體內(nèi)都有效。8、判斷char型變量c1是否為小寫字母的正確表達(dá)式為()。A、’a’<=c1<=’z’B、(c1>=a)&&(c1<=z)C、(’a’>=c1||(’z’<=c1)D、(c1>=’a’)&&(c1<=’z’)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:C語(yǔ)言規(guī)定,字符常量在程序中要用單引號(hào)括起來(lái)。首先判斷c1是否為小寫字母的主要條件“c1>=’ap’和“c1<=’z’”是邏輯與關(guān)系,其次選項(xiàng)A的這種形式C語(yǔ)言中沒(méi)有,所以選項(xiàng)D正確。9、下列合法的標(biāo)識(shí)符是()。A、123B、#256C、a.55D、abhj1_2_3標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:C語(yǔ)言規(guī)定,標(biāo)識(shí)符是由字母、數(shù)字或下劃線組成,并且它的第一個(gè)字符必須是字母或者下劃線?!?”、“.”不允許出現(xiàn)在標(biāo)識(shí)符中。10、有以下程序:#include<stdio.h>main(){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)。11、以下不構(gòu)成無(wú)限循環(huán)的語(yǔ)句或語(yǔ)句組是()。A、n=0;do{++n;}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)解析:選項(xiàng)A中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)。12、有以下程序:#include<stdio.h>main(){inti,j,x=0;for(i=0;i<2;i++){x++:for(j=0;j<=3;j++){if(j%2)continue;x++;}x++;}printf("x=%d\n",x);}程序執(zhí)行后的輸出結(jié)果是()。A、x=4B、x=8C、x=6D、x=12標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:coutinue的作用是跳出循環(huán)體中剩余的語(yǔ)句而進(jìn)行下一次循環(huán)。第一次執(zhí)行外循環(huán)i的值為0,執(zhí)行x++,x的值變?yōu)?,第一次執(zhí)行內(nèi)層循環(huán)j的值為0,不滿足if條件,執(zhí)行x++,x的值變?yōu)?,第二次內(nèi)循環(huán)j的值為1,if條件成立,跳出本次循環(huán),第三次執(zhí)行內(nèi)循環(huán)j的值為2,不滿足if條件,x的值變?yōu)?,第四次執(zhí)行內(nèi)循環(huán)j的值為3滿足條件跳出本次內(nèi)循環(huán),x的值加1,即為4,第一次外循環(huán)結(jié)束。第二次執(zhí)行外循環(huán)時(shí),同理,i的值被加了,4次,變?yōu)?,所以選擇B選項(xiàng)。13、如果進(jìn)棧序列為A,B,C,D,則可能的出棧序列是()。A、C,A,D,BB、B,D,C,AC、C,D,A,BD、任意順序標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:棧的操作原則為后進(jìn)先出。選項(xiàng)B中出棧順序可按“A進(jìn),B進(jìn),B出,C進(jìn),D進(jìn),D出,C出,A出”實(shí)現(xiàn)。14、有以下程序:#include<stdio.h>main(){inta,b;for(a=0;a<3;a++){scanf("%d",&b);switch(b){default:printf("%d",++b);case1:printf("%d",++b);case2:printf("%d",++b);}}}執(zhí)行時(shí)輸入:123<回車>,則輸出結(jié)果是()。A、233456B、234C、223444D、234344標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:這是一個(gè)循環(huán)結(jié)構(gòu)嵌套選擇結(jié)構(gòu),按照外層循環(huán),內(nèi)層選擇一步一步處理即可。本題重點(diǎn)注意,switch語(yǔ)句中并沒(méi)有出現(xiàn)break語(yǔ)句,所以內(nèi)層循環(huán)是不會(huì)跳出的。15、有以下程序#includemain(){inty=9;for(;y>0;y--)if(y%3==0)printf("%d",--y);}程序的運(yùn)行結(jié)果是()。A、852B、963C、741D、875421標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:該函數(shù)的邏輯是:若數(shù)組a中元素下標(biāo)為偶數(shù)并且該元素也為偶數(shù)則該元素自加1,若元素下標(biāo)為偶數(shù)并且該元素為奇數(shù)則該元素自減1,若該元素下標(biāo)為奇數(shù)則設(shè)定該元素為0,所以結(jié)果輸出為選項(xiàng)A)。16、有以下程序:#includemain(){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);}程序執(zhí)行后的輸出結(jié)果是()。A、20B、25C、45D、36標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:統(tǒng)計(jì)1~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。17、軟件生命周期中的活動(dòng)不包括()。A、市場(chǎng)調(diào)研B、需求分析C、軟件測(cè)試D、軟件維護(hù)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:軟件生命周期可以分為軟件定義、軟件開發(fā)與軟件運(yùn)行維護(hù)三個(gè)階段。主要活動(dòng)階段是:可行性研究與計(jì)劃階段,需求分析,軟件設(shè)計(jì),軟件實(shí)現(xiàn),軟件測(cè)試,運(yùn)行和維護(hù),所以選擇A。18、若x=4,y=5,則x&y的結(jié)果是()。A、0B、4C、3D、5標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題主要考查按位與運(yùn)算的知識(shí)點(diǎn)。按位與是對(duì)兩個(gè)運(yùn)算量相應(yīng)的位進(jìn)行邏輯與,“&”的規(guī)則和邏輯與“&&”相同。x=4的二進(jìn)制為00000100,y=5的二進(jìn)制為00000101,x&y=00000100,轉(zhuǎn)化為十進(jìn)制即為4。19、有下列程序段:typedefstructNODE{intnum;structNODE*next;}OLD;下列敘述中正確的是()。A、以上的說(shuō)明形式非法B、NODE是一個(gè)結(jié)構(gòu)體類型C、OLD是一個(gè)結(jié)構(gòu)體類型D、OLD是一個(gè)結(jié)構(gòu)體變量標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:C語(yǔ)言允許用typedef說(shuō)明一種新類型名,其一般形式為:typedef類型名標(biāo)識(shí)符。typedef語(yǔ)句的作用僅僅是使“標(biāo)識(shí)符”來(lái)代表已存在的“類型名”,并未產(chǎn)生新的數(shù)據(jù)類型。原有類型名依然有效。此題中,用typedef定義了新的類型OLD結(jié)構(gòu),所以O(shè)LD為結(jié)構(gòu)體類型。20、設(shè)數(shù)據(jù)元素的集合D={1,2,3,4,5},則滿足下列關(guān)系R的數(shù)據(jù)結(jié)構(gòu)中為線性結(jié)構(gòu)的是()。A、R={(1,2),(3,4),(5,1)}B、R={(1,3),(4,1),(3,2),(5,4)}C、R={(1,2),(2,3),(4,5)}D、R={(1,3),(2,4),(3,5)}標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:一個(gè)非空的數(shù)據(jù)結(jié)構(gòu)如果滿足以下兩個(gè)條件:有且只有一個(gè)根結(jié)點(diǎn);每一個(gè)結(jié)點(diǎn)最多有一個(gè)前件,也最多有一個(gè)后件,稱為線性結(jié)構(gòu)。A項(xiàng)中有兩個(gè)根結(jié)點(diǎn)3和5,錯(cuò)誤;B項(xiàng)根結(jié)點(diǎn)為5,之后的結(jié)點(diǎn)除最后一個(gè)結(jié)點(diǎn)外都只有一個(gè)前件和后件,正確;C項(xiàng)有兩個(gè)根結(jié)點(diǎn)1和4,錯(cuò)誤;D項(xiàng)有兩個(gè)根結(jié)點(diǎn)1和2,錯(cuò)誤。21、若變量已正確定義,則以下for循環(huán)():for(x=0,y=0;(y!=123)&&(x<4);x++);A、執(zhí)行4次B、執(zhí)行3次C、執(zhí)行次數(shù)不確定D、執(zhí)行123次標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:循環(huán)判斷語(yǔ)句為"(y!=123)&&(x<4)”,必須同時(shí)滿足"y!=123"和"x<4"這兩個(gè)表達(dá)式,循環(huán)才會(huì)繼續(xù)。因此,當(dāng)x=4時(shí),循環(huán)終止,for循環(huán)共執(zhí)行4次。22、有以下程序#include<stdio.h>main(){structSTU{charname[9];charsex;doublescore[2];};structSTUa={"Zhao",’m’,85.0,90.0},b={"Qian",’f’,95.0,92.0};b=a;printf("%s,%c,%2.0f,%2.0f\n",,b.sex,b.score[0],b.score[1]);}程序的運(yùn)行結(jié)果是A、Qian,m,85,90B、Zhao,m,85,90C、Zhao,f,95,92D、Qian,f,95,92標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題考查結(jié)構(gòu)體初始化操作,本題中可以直接將結(jié)構(gòu)體a賦值給b,所以輸出的結(jié)果和a一樣,選項(xiàng)B正確。23、有3個(gè)關(guān)系R、S和T如下:則由關(guān)系R和S得到關(guān)系T的操作是()。A、投影B、選擇C、交D、差標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:投影是指從關(guān)系模式中指定若干個(gè)屬性組成新的關(guān)系。從關(guān)系中找出滿足給定條件的元組的操作稱為選擇。這兩種操作運(yùn)算均是對(duì)單個(gè)關(guān)系進(jìn)行,不是兩個(gè)關(guān)系之間的運(yùn)算,故A、B選項(xiàng)錯(cuò)誤。交:R∩S結(jié)果是既屬于R又屬于S的記錄組成的集合,R∩S得到一個(gè)元組,按照屬性ABC的順序是c32,故C選項(xiàng)錯(cuò)誤。差:R—S結(jié)果是屬于R但不屬于s的記錄組成的集合,R—S得到3個(gè)元組,按照屬性ABc的順序是a34、b21、ed2,故D選項(xiàng)正確。24、有三個(gè)關(guān)系表R、S和T,其內(nèi)容如下:其中關(guān)系T由關(guān)系R和S通過(guò)某種操作得到,該操作為()。A、選擇B、求差C、求交D、并標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:關(guān)系T中包含了R和S中的所有元素,所以是并操作。25、有以下程序#includeintm1(intx,inty){returnx<=y?x:y;}intm2(intx,inty){returnx<=y?y:x;}intfun(inta,intb){returna+b;}main(){intx=2,y=3,z=1;printf("%d\n",fun(m1(x,y),m2(y,z)));}程序的運(yùn)行結(jié)果是()。A、5B、6C、4D、3標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:暫無(wú)解析26、對(duì)于以下函數(shù)聲明voidfun(intarray[4],int*ptr);以下敘述中正確的是()。A、array,ptr都是指針變量B、調(diào)用fun函數(shù)時(shí),實(shí)參的值將逐一復(fù)制給arrayC、調(diào)用fun函數(shù)時(shí),array按值傳送,ptr按地址傳送D、array是數(shù)組,ptr是指針,它們的性質(zhì)不同標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:voidfun(intarmy[4],int*ptr);第一個(gè)參數(shù)雖然是數(shù)組類型,但是會(huì)退化為指針,并且形參數(shù)組的個(gè)數(shù)沒(méi)有用。第二個(gè)參數(shù)是指針,因此實(shí)際上二個(gè)形參都是指針,傳遞的都是地址,而不是值??芍x項(xiàng)B、c、D錯(cuò)誤。答案為A選項(xiàng)。27、有以下程序:#includemain(){inta[4][4]={{1,2,3,4},{1,6,5,9},{3,7,2,5},{4,2,4,l}},i,k,t;for(i=0;i<3;i++)for(k=i+1;k<4;k++)if(a[i][i]<a[k][k]){t=a[i][i];a[i][i]=a[k][k];a[k][k]=t;}for(i=0;i<4;i++)printf(’’%d,’’,a[0][i]);}程序運(yùn)行后的輸出結(jié)果是()。A、9,1,2,6B、6,2,3,4C、6,4,3,2D、9,3,4,6標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:雙重for循環(huán)和if條件語(yǔ)句結(jié)合實(shí)現(xiàn)對(duì)二維數(shù)組對(duì)角線上的元素[1,6,2,1]進(jìn)行從大到小的排序,輸出結(jié)果只是第一行的內(nèi)容,所以結(jié)果是6,2,3,4。28、有以下程序:#neludemain(){inta=0,b=0,C=0,d=0;if(a=1)b=1;c=2;elsed=3;pfintf(’’%d,%d,%d,%d\n’’,a,b,c,d);}程序運(yùn)行后的輸出結(jié)果是()。A、1,1,2,0B、0,0,0,3C、編譯有錯(cuò)D、0,1,2,0標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:if語(yǔ)句只執(zhí)行后面的一個(gè)語(yǔ)句或一個(gè)用大括號(hào)包括的程序段。本題中if語(yǔ)句中的條件若為真,則只執(zhí)行b=1;這一條語(yǔ)句,后面的c=2是一個(gè)和if分支結(jié)構(gòu)無(wú)關(guān)的語(yǔ)句,因此,再后面的else語(yǔ)句便成為一個(gè)獨(dú)立的語(yǔ)句,因?yàn)榍懊鏇](méi)有if分支與其對(duì)應(yīng),因此會(huì)在編譯過(guò)程中出錯(cuò)。如果改成if(a=1){b=1;c=2}elsed=3:則編譯正確。29、若實(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)解析:A和B為一對(duì)多的聯(lián)系,則對(duì)于A中的每一個(gè)實(shí)體,B中有多個(gè)實(shí)體與之聯(lián)系,而B與C為一對(duì)一聯(lián)系,則對(duì)于B中的每一個(gè)實(shí)體,C中之多有一個(gè)實(shí)體與之聯(lián)系,則可推出對(duì)于A中的每一個(gè)實(shí)體,C中有多個(gè)實(shí)體與聯(lián)系,所以為一對(duì)多聯(lián)系。30、下列敘述中正確的是A、有且只有一個(gè)根結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)一定是線性結(jié)構(gòu)B、每一個(gè)結(jié)點(diǎn)最多有一個(gè)前件也最多有一個(gè)后件的數(shù)據(jù)結(jié)構(gòu)一定是線性結(jié)構(gòu)C、有且只有一個(gè)根結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)一定是非線性結(jié)構(gòu)D、有且只有一個(gè)根結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)可能是線性結(jié)構(gòu),也可能是非線性結(jié)構(gòu)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:一個(gè)非空的數(shù)據(jù)結(jié)構(gòu)如果滿足以下兩個(gè)條件:有且只有一個(gè)根結(jié)點(diǎn);每一個(gè)結(jié)點(diǎn)最多有一個(gè)前件,也最多有一個(gè)后件,稱為線性結(jié)構(gòu),故A、B和C選項(xiàng)都錯(cuò)誤;不同時(shí)滿足以上兩個(gè)條件的數(shù)據(jù)結(jié)構(gòu)就稱為非線性結(jié)構(gòu),其中樹形結(jié)構(gòu)只有一個(gè)根結(jié)點(diǎn),D選項(xiàng)正確。31、為了對(duì)有序表進(jìn)行對(duì)分查找,則要求有序表A、只能順序存儲(chǔ)B、只能鏈?zhǔn)酱鎯?chǔ)C、可以順序存儲(chǔ)也可以鏈?zhǔn)酱鎯?chǔ)D、任何存儲(chǔ)方式標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:二分法查找也稱拆半查找,是一種高效的查找方法。能使用二分法查找的線性表必須滿足兩個(gè)條件:用順序存儲(chǔ)結(jié)構(gòu);線性表是有序表。A選項(xiàng)正確。32、以下對(duì)聯(lián)合類型敘述正確的是()。A、可以對(duì)聯(lián)合變量名直接賦值B、使用聯(lián)合變量的目的是為了節(jié)省內(nèi)存C、任何一個(gè)聯(lián)合變量可以同時(shí)引用聯(lián)合中的不同成員D、聯(lián)合類型定義中不能同時(shí)出現(xiàn)結(jié)構(gòu)類型的成員標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:由于聯(lián)合體是同一存儲(chǔ)區(qū)域由不同類型的變量共事,所以不可以直接對(duì)聯(lián)合體變量名進(jìn)行賦值,且聯(lián)合體中的空間在某一時(shí)刻只能保持萊一成員的數(shù)據(jù);另外合體中可以出現(xiàn)結(jié)構(gòu)類型的成員。33、需求分析階段的任務(wù)是()。A、軟件開發(fā)方法B、軟件開發(fā)工具C、軟件開發(fā)費(fèi)用D、軟件系統(tǒng)功能標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:需求分析縣軟件定義時(shí)期的最后一個(gè)階段,它的基本任務(wù)就是詳細(xì)調(diào)查現(xiàn)實(shí)世界要處理的對(duì)象,充分了解原系統(tǒng)的工作概況,明確用戶的各種需求,然后存這些基礎(chǔ)上確定新系統(tǒng)的功能。34、設(shè)a,b,c是整型變量且均已賦值,則以下選項(xiàng)中錯(cuò)誤的賦值語(yǔ)句是A、a=(b=3)=1;B、a=(b=2)+c;C、a=b=c+10;D、a=1+(b=c=2);標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:賦值運(yùn)算結(jié)合性為由右向左結(jié)合,賦值運(yùn)算符左值為變量,右值為變量或常量,且左右兩邊數(shù)據(jù)類型相同才能實(shí)現(xiàn)賦值。A選項(xiàng)中,賦值運(yùn)算(b=3)=1,左值為表達(dá)式,不是變量不能被賦值,A選項(xiàng)錯(cuò)誤,所以選擇A選項(xiàng)。B選項(xiàng)運(yùn)算過(guò)程為,先賦值b=2,再計(jì)算b+c,將結(jié)果賦給a,是正確的賦值語(yǔ)句。C選項(xiàng)運(yùn)算過(guò)程為,先計(jì)算c+10將結(jié)果賦給b,再將b賦給a,是正確的賦值語(yǔ)句。D選項(xiàng)運(yùn)算過(guò)程為,先將2賦給c,再將c賦給b,然后計(jì)算1+b,將結(jié)果賦給a,是正確的賦值語(yǔ)句。35、下列敘述中正確的是A、所有數(shù)據(jù)結(jié)構(gòu)必須有根結(jié)點(diǎn)B、所有數(shù)據(jù)結(jié)構(gòu)必須有終端結(jié)點(diǎn)(即葉子結(jié)點(diǎn))C、只有一個(gè)根結(jié)點(diǎn),且只有一個(gè)葉子結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)一定是線性結(jié)構(gòu)D、沒(méi)有根結(jié)點(diǎn)或沒(méi)有葉子結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)一定是非線性結(jié)構(gòu)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:一個(gè)非空的數(shù)據(jù)結(jié)構(gòu)如果滿足以下兩個(gè)條件:有且只有一個(gè)根結(jié)點(diǎn);每一個(gè)結(jié)點(diǎn)最多有一個(gè)前件,也最多有一個(gè)后件,稱為線性結(jié)構(gòu),在數(shù)據(jù)結(jié)構(gòu)中習(xí)慣稱為線性表,D選項(xiàng)正確。圖是可能不包含根結(jié)點(diǎn)或葉子結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu),AB選項(xiàng)錯(cuò)誤。數(shù)據(jù)結(jié)構(gòu)中若有中間結(jié)點(diǎn)不滿足只有一個(gè)前件或者后件條件,則不屬于線性結(jié)構(gòu),C選項(xiàng)錯(cuò)誤。36、若有定義語(yǔ)句:doublex,y,*px,*py;執(zhí)行px=&x;py=&y;正確的輸入語(yǔ)句是A、scanf("%lf%lf",x,y);B、scanf("%f%f"&x,&y);C、scanf("%f%f",x,y);D、scanf("%lf%le",px,py);標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:%lf,%le是針對(duì)double的,如果僅用%f,輸入的數(shù)據(jù)可能不能被完全接收,數(shù)據(jù)的精度可能不足。%f主要針對(duì)float類型的變量的輸入,選項(xiàng)B錯(cuò)誤。根據(jù)scanf(格式,變量地址),選擇A,C錯(cuò)誤。因此,選擇D37、若有定義:charc;doubled;程序運(yùn)行時(shí)輸入:12<回車>,能把字符1輸入給變量c、數(shù)值2輸入給變量d的輸入語(yǔ)句是A、scanf("%d%lf",&c,&d);B、scanf("%c%lf",&c,&d);C、scanf("%c%f",&c,&d);D、scanf("%d%f",&c,&d);標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:%lf是針對(duì)double的,如果僅用%f,輸入的數(shù)據(jù)可能沒(méi)有被完全接收,數(shù)據(jù)的精度可能不足,選項(xiàng)C,D錯(cuò)誤。%f主要針對(duì)float類型的變量的輸入。%d主要針對(duì)整型數(shù)據(jù)的輸入,%c主要針對(duì)字符類型的數(shù)據(jù)的輸入,選項(xiàng)A錯(cuò)誤。故答案為B選項(xiàng)38、有以下程序:#include<stdio.h>intfun(intx,inty){if(x!=y)return(y);elseretum((x+y)/2);}main(){inta=4,b=5,c=6;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,所以返回6;fun(2*a,6)即fun(8,6),8!=6,所以返回6。39、有以下程序:#include<stdio-h>#include"string.h"voidfun(char*s[],intn){char*t;inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strlen(s[i])>strlen(s[j])){t=s[i];s[i]=s[j];s[j]=t;}}main(){char*ss[]={"bcc","bbcc","xy","aaaacc","aabcc"};fun(ss,5);printf("%s,%s\n",ss[0],ss[4]);}程序的運(yùn)行結(jié)果是()。A、xy,aaaaccB、aaaacc,xyC、bcc,aabccD、aabcc,bcc標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:從main函數(shù)入手,定義了一個(gè)一維數(shù)組并賦初值,接著調(diào)用函數(shù)fun(),函數(shù)的功能是:比較數(shù)組中各元素的長(zhǎng)度,按元素長(zhǎng)度從小到大的順序排列元素,所以執(zhí)行“fun(ss,5)”函數(shù)后,“*ss[]={"xy","bcc","bbcc","aabcc","aaaacc"}”,所以調(diào)用printf函數(shù)輸出ss[0],ss[4]的值分別為xy,aaaacc。二、程序填空題(本題共1題,每題1.0分,共1分。)40、下列給定程序中,函數(shù)fun的功能是:在形參ss所指字符串?dāng)?shù)組中查找與形參t所指字符串相同的串,找到后返回該串在字符串?dāng)?shù)組中的位置(即下標(biāo)值),若未找到則返回一I。ss所指字符串?dāng)?shù)組中共有N個(gè)內(nèi)容不同的字符串,且串長(zhǎng)小于M。清在程序的下畫線處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<string.h>#defineN5#defineM8intfun(char(*SS)[M],char*t){inti;/**********found***********/for(i=0;i<—【1】;i++)/**********found***********/if(strcmp(SS[i],t)==0)return【2】;return(一1);}main(){charch[N][M]={“if”,“while”,“switch”,“int”,“for”},t[M];intn,i;printf(“\nTheoriginalstring\n\n”);for(i=0;i<N;i++)puts(ch[i]);printf(“\n”);printf(“\nEnterastringforsearch:”),gets(t);n=fun(ch,t);/**********found***********/if(n==【3】)printf(“\nDon’tfound!\n”);elseprintf(“\nThepositionis%d\n”,n);}標(biāo)準(zhǔn)答案:(1)N(2)i(3)一1知識(shí)點(diǎn)解析:填空1:變量j是循環(huán)變世,它的取值范圍足0—N。填空2:如果ss所指字符串?dāng)?shù)組中的字符串與t所指字符串相同,則返回其下標(biāo)值,即returni;,否則返回一1,即return一1;。填空3:在main函數(shù)中輸出最后結(jié)果,判斷函數(shù)返回值n,如果n=一1,說(shuō)明沒(méi)有找到,否則輸出n。三、程序修改題(本題共1題,每題1.0分,共1分。)41、下列給定程序中函數(shù)fun的功能是:將字符串中的字符逆序輸出,但不改變字符串中的內(nèi)容。例如,若字符串為“abed”,則應(yīng)輸出:“deba”。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>/**********found***********/voidfun(chara){if(*a){fun(a+1);/**********found***********/printf(“%c”*a);}}main(){chars[10]=“abcd”;printf(“處理前字符串=%s\n,處理后字符串=”,s);fun(s);printf(“\n”);}標(biāo)準(zhǔn)答案:(1)voidfun(char*a)(2)prinff(“%c”,*a);知識(shí)點(diǎn)解析:(1)定義函數(shù)時(shí)形參的類型要與凋用函數(shù)中實(shí)參的類型一致,主函數(shù)中fun傳遞的是字符串s的首地址,所以此處形參應(yīng)為指針類型。(2)根據(jù)prinff函數(shù)格式,很容易找到錯(cuò)誤之處。四、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)42、請(qǐng)編寫函數(shù)fun,其功能是:計(jì)算并輸出下列多項(xiàng)式的值:例如,在主函數(shù)中從鍵盤給n輸入15,則輸出為:s=2.718282。注意:要求n的值大于1但不大于100。部分源程序在文件PROGl.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。#includedoublefun(intn){}main(){intn;doubles;printf("Inputn:");scanf("%d",&n);s=fun(n);printf("s=%f\n",s);NONO();}NONO(){/*請(qǐng)?jiān)诖撕瘮?shù)內(nèi)打開文件,輸入測(cè)試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*rf,*wf;intn,i;doubles;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++)(fscanf(rf,"%d",&n);s=fun(n);fprintf(wf,"%lf\n",s);}fclose(rf);fclose(wf);}標(biāo)準(zhǔn)答案:doubles=1;longt=1;inti;for(i=1;i<=n;i++){t=t*i;/*計(jì)算階乘*/s+=1./t;/*計(jì)算每項(xiàng)的值并累加至變量s中*/}returns;/*返回多項(xiàng)式的值。/知識(shí)點(diǎn)解析:(1)根據(jù)題干中給出的數(shù)列,推出每一項(xiàng)是階乘的倒數(shù),所以首先在循環(huán)中求得每一項(xiàng)的階乘。其中階乘的計(jì)算公式定義為:公式分為參數(shù)n是1和大于1的兩種情況,例如,1的階乘1!=1;5的階乘5!=5×4×3×2×1。(2)然后求得階乘分之一的累加和。國(guó)家二級(jí)(C語(yǔ)言)機(jī)試模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:將形參n所指變量中,各位上為偶數(shù)的數(shù)去掉,剩余的數(shù)按原來(lái)從高位到低位的順序組成一個(gè)新數(shù),并通過(guò)形參指針n傳回所指變量。例如,若輸入一個(gè)數(shù)27638496,則新數(shù)為739。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并將下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>voidfun(unsignedlong*n){unsignedlongx=0,i;intt;i=1;while(*n)/*********found*********/{t=*n%【1】;/*********found*********/if(t%2!=【2】){x=x+t*i;i=i*10;}*n=*n/10:}/*********found*********/*n=【3】;}main(){unsignedlongn=-1;while(n>99999999||n<0){printf("Pleaseinput(0<n<100000000):");scanf("%1d",&n);}fun(&n);printf("\nTheresultis:%1d\n",n);}標(biāo)準(zhǔn)答案:(1)10(2)0(3)x知識(shí)點(diǎn)解析:填空1:通過(guò)t對(duì)10求余,取出該數(shù)值的各個(gè)位。填空2:通過(guò)if條件語(yǔ)句實(shí)現(xiàn)奇偶數(shù)的判定。如果條件表達(dá)式對(duì)2求余為O即為偶數(shù),反之則為奇數(shù)。填空3:最后將剩余的數(shù)賦給n所指向的元素。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modi1.C。在此程序中,函數(shù)fun的功能是:計(jì)算n!。例如,給13輸入5,則輸出120.000000。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<conio.h>doublefun(intn){doubleresult=1.0;/*********found*********/ifn==0return1.0;while(n>1&&n<170)/*********found*********/result=n--:returnresult;}main(){intn;printf("InputN:");scanf("%d",&n);printf("\n\n%d!=%1f\n\n",n,fun(n));}標(biāo)準(zhǔn)答案:(1)if(n==0)(2)result*=n--;或{result*=n;n--;}知識(shí)點(diǎn)解析:(1)這里是一個(gè)簡(jiǎn)單的格式錯(cuò)誤,if條件判斷語(yǔ)句應(yīng)該加括號(hào)。(2)根據(jù)階乘的概念,從n開始,n!=n*(n-1)!,直到1,所以應(yīng)該為result*=n--;。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫函數(shù)fun,其功能是:將一個(gè)數(shù)字字符串轉(zhuǎn)換為一個(gè)整數(shù)(不得調(diào)用c語(yǔ)言提供的將字符串轉(zhuǎn)換為整數(shù)的函數(shù))。例如,若輸入字符串“-1234”,則函數(shù)把它轉(zhuǎn)換為整數(shù)值-1234。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容。僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:#include<stdio.h>#include<string.h>longfun(char*p){}voidmain(){chars[6];longn;printf("Enterastring:\n");gets(s);n=fun(s);printf("%1d\n",n);}標(biāo)準(zhǔn)答案:longfun(char*p){longn=0;intflag=1;if(*p==’-’)/*負(fù)數(shù)時(shí)置flag為-1*/{p++;flag=-1;}elseif(*p==’+’)/*正數(shù)時(shí)置flag為1*/p++;while(*p!=’\0’){n=n★10+*p-‘0’;/*將字符串轉(zhuǎn)成相應(yīng)的整數(shù)*/p++;}returnn*flag;}知識(shí)點(diǎn)解析:if語(yǔ)句的作用是判斷該字符串為正數(shù)還是負(fù)數(shù),while循環(huán)的作用是將字符串轉(zhuǎn)成相應(yīng)的整數(shù)。注意:*p是一個(gè)字符(例如‘9’、‘4’),并不是一個(gè)數(shù),要將其轉(zhuǎn)成相應(yīng)的數(shù)字需令其減去’0’(不是’\0’),即*p-’0’就得到*p這個(gè)字符的相應(yīng)數(shù)字,例如’0’-’0’=0、’8’-’0’=8等。必須在程序的前面加#include,函數(shù)atol的作用是將字符串轉(zhuǎn)換成長(zhǎng)整型數(shù),它是一個(gè)庫(kù)函數(shù)。國(guó)家二級(jí)(C語(yǔ)言)機(jī)試模擬試卷第3套一、選擇題(本題共39題,每題1.0分,共39分。)1、下列敘述中正確的是()。A、棧是一種先進(jìn)先出的線性表B、隊(duì)列是一種后進(jìn)先出的線性表C、棧與隊(duì)列都是非線性結(jié)構(gòu)D、以上三種說(shuō)法都不對(duì)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:棧是一種先進(jìn)后出的線性表,隊(duì)列是一種先進(jìn)先出的線性表,棧與隊(duì)列都是線性結(jié)構(gòu)。2、設(shè)某二叉樹的后序序列為CBA,中序序列為ABC,則該二叉樹的前序序列為()。A、BCAB、CBAC、ABCD、CAB標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:后序序列為CBA,中序序列為ABC,則說(shuō)明,A為根結(jié)點(diǎn),并且B和C均在A的右子樹上;結(jié)點(diǎn)B和C中,后序序列為CB,中序序列為BC,則說(shuō)明結(jié)點(diǎn)C在結(jié)點(diǎn)B的右子樹上,根據(jù)分析可得,該二叉樹的前序序列為ABC,答案選C。3、有下列程序段:typedefstructNODE{intnum:structNODE*next;}OLD:下列敘述中正確的是()。A、以上的說(shuō)明形式非法B、NODE是一個(gè)結(jié)構(gòu)體類型C、OLD是一個(gè)結(jié)構(gòu)體類型D、OLD是一個(gè)結(jié)構(gòu)體變量標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:C語(yǔ)言允許用typedef說(shuō)明一種新類型名,其一般形式為:tvpedef類型名標(biāo)識(shí)符。typedef語(yǔ)句的作用僅僅是使“標(biāo)識(shí)符”來(lái)代表已存在的“類型名”,并未產(chǎn)生新的數(shù)據(jù)類型。原有類型名依然有效。此題中,用使tvpedef定義了新的類型OLD結(jié)構(gòu),所以O(shè)LD為結(jié)構(gòu)體類型。4、有以下程序:#include<stdio.h>intb=2;intfun(int*k){b=*k+b;return(b);}voidmain(){inta[10]={1,2,3,4,5,6,7,8},i;for(i=2;i<4;i++){b=fun(&a[i])+b;printf("%d",b);}printf("\n");}程序運(yùn)行后的輸出結(jié)果是()。A、1012B、810C、1028D、1016標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:因?yàn)閎是全局變量,所以它的值在整個(gè)程序結(jié)束才會(huì)消失。for循環(huán)中,第一次循環(huán),i=2,a[2]=3,所以fun(&a[i]=3+2=5,b=5,所以b=fun(&a[i])+b=5+5=10;第二次循環(huán),b=10,然后fun(&a[i])代入a[3]=4,這時(shí)fun(&a[i]=10+4=14,所以b=fun(&a[i])+b=14+14=28。5、以下敘述錯(cuò)誤的是()。A、變量的作用域取決于變量定義語(yǔ)句的位置B、全局變量可以在函數(shù)以外的任何部位進(jìn)行定義C、局部變量的作用域可用于其他函數(shù)的調(diào)用D、一個(gè)變量說(shuō)明為static存儲(chǔ)類型是為了限制其他編譯單元的引用標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:本題考查函數(shù)調(diào)用的變量作用域。全局變量不在任何函數(shù)體內(nèi)定義,作用域?yàn)檎麄€(gè)文件;局部變量在函數(shù)體內(nèi)定義,作用域僅為本次函數(shù);static類型是靜態(tài)變量,為了方便其他編譯單元的引用,不能隨意改變。一個(gè)函數(shù)包含兩部分:函數(shù)首和函數(shù)體,函數(shù)體包括花括號(hào)內(nèi)的所有語(yǔ)句。6、以下選項(xiàng)中,合法的一組C語(yǔ)言數(shù)值常量是()。A、028.5e-3-0nxfB、12OXa23-0nxfC、.1774c1.5-0nxfD、0x8A10,000-0nxf標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:八進(jìn)制數(shù)開頭必須是數(shù)字“0”,其數(shù)字包括0~7,而在選項(xiàng)A中,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ò)誤的。所以本題的答案為選項(xiàng)B。7、若語(yǔ)句“t=fun(fun(x,y,a),(a+b,a+c),x+y+z);”對(duì)fun函數(shù)的調(diào)用正確,則fun函數(shù)的形參個(gè)數(shù)為()。A、3B、4C、5D、6標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查函數(shù)調(diào)用時(shí)的參數(shù)個(gè)數(shù)。在函數(shù)調(diào)用時(shí),實(shí)參必須和形參的個(gè)數(shù)、類型一一對(duì)應(yīng)。但函數(shù)的計(jì)算結(jié)果只有一個(gè)值,因而fun函數(shù)的參數(shù)個(gè)數(shù)為3。8、以下語(yǔ)句中存在語(yǔ)法錯(cuò)誤的是()。A、charss[6][20];ss[1]="right?";B、charss()[20]={"right?"};C、char*ss[6];ss[1]="right?";D、char*ss():{"right?"};標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:數(shù)組定義后,不可以對(duì)數(shù)組整體賦值,s是二維數(shù)組,因ss[1]是一維字符數(shù)組,即字符串,字符串賦值可以使用stmpy(ss[1],"right");這樣的形式,而選項(xiàng)A中對(duì)二維數(shù)組中的第“1”維(相當(dāng)于一個(gè)一維數(shù)組)賦值,是不可以的。選項(xiàng)B和D是定義時(shí)對(duì)數(shù)組初始化,這是可以的。選項(xiàng)C中,將字符串在內(nèi)存中的首地址賦給指針數(shù)組的一個(gè)元素,這是可以的。9、在C語(yǔ)言中,變量的隱含存儲(chǔ)類別是()。A、autoB、staticC、externD、無(wú)存儲(chǔ)類別標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:C語(yǔ)言中,變量的隱含存儲(chǔ)類型為auto。10、C源程序中不能表示的數(shù)制是()。A、十六進(jìn)制B、八進(jìn)制C、十進(jìn)制D、二進(jìn)制標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:在C語(yǔ)言中整型常量可以用十進(jìn)制、八進(jìn)制和十六進(jìn)制等形式表示,但不包括二進(jìn)制,所以選擇D。11、一個(gè)教師可講授多門課程,一門課程可由多個(gè)教師講授。則實(shí)體教師和課程間的聯(lián)系是()。A、1:1聯(lián)系B、1:m聯(lián)系C、m:1聯(lián)系D、m:n聯(lián)系標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:因?yàn)橐粋€(gè)教師可講授多門課程,而一門課程又能由多個(gè)教師講授,所以它們之間是多對(duì)多的關(guān)系,可以表示為m:n。12、以下程序的運(yùn)行結(jié)果是()。#include<stdio.h>main(){inta=3,b=4,C=8,d=4,m=1,n=3;printf("%d\n",(m=a>b)&&(n=c>d));}A、0B、1C、2D、3標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:邏輯與(&&)運(yùn)算符的功能是:當(dāng)“&&”運(yùn)算符兩邊的運(yùn)算對(duì)象均為1時(shí),整個(gè)表達(dá)式的值為1,否則為0。因?yàn)閍=3<b=4,即m=0,所以整個(gè)表達(dá)式的值為0。13、下面選項(xiàng)中不是關(guān)系數(shù)據(jù)庫(kù)基本特征的是()。A、不同的列應(yīng)有不同的數(shù)據(jù)類型B、不同的列應(yīng)有不同的列名C、與行的次序無(wú)關(guān)D、與列的次序無(wú)關(guān)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:在關(guān)系數(shù)據(jù)庫(kù)中,二維表由行數(shù)據(jù)組成,每行數(shù)據(jù)包含若干屬性值,每個(gè)屬性都有指定的類型和取值范圍。數(shù)據(jù)行數(shù)是有限的,每行數(shù)據(jù)互不相同(元組唯一性),每行的次序可以任意交換(元組的次序無(wú)關(guān)性);表中屬性名(列各)各不相同即字段名不重復(fù),屬性名(列名)次序可任意交換。故本題答案為A選項(xiàng)。14、以下定義語(yǔ)句中正確的是()。A、inta=b=0;B、charA=65+1’b=‘b’;C、floata=1,*b=&a,*c=&b;D、doublea=0.0;b=1.1:標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:A選項(xiàng)語(yǔ)句中b變量還沒(méi)有定義不能直接用于給a變量賦值。C選項(xiàng)語(yǔ)句中*、*c表示的是一個(gè)實(shí)型變量的地址,不能再將&b賦值給指針型變量c。D選項(xiàng)語(yǔ)句中a=0.0后面應(yīng)該為逗號(hào),不能是分號(hào)。15、若x=2,y=3,則x&y的結(jié)果是()。A、0B、2C、3D、5標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:本題主要考查按位與(&)運(yùn)算的知識(shí)點(diǎn)?!?”是對(duì)兩個(gè)運(yùn)算量相應(yīng)的位進(jìn)行邏輯與,“&”的規(guī)則與邏輯與“&&”相同。x=2的二進(jìn)制為00000010,y=3的二進(jìn)制為00000011,x&y=00000010,轉(zhuǎn)化為十進(jìn)制即為2。16、一個(gè)工作人員可以使用多臺(tái)計(jì)算機(jī),而一臺(tái)計(jì)算機(jī)可被多個(gè)人使用,則實(shí)體工作人員與實(shí)體計(jì)算機(jī)之間的聯(lián)系是()。A、一對(duì)一B、一對(duì)多C、多對(duì)多D、多對(duì)一標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:因?yàn)橐粋€(gè)人可以操作多個(gè)計(jì)算機(jī),而一臺(tái)計(jì)算機(jī)又可以被多個(gè)人使用,所以兩個(gè)實(shí)體之間是多對(duì)多的關(guān)系。17、以下選項(xiàng)中正確的定義語(yǔ)句是()。A、double,a,b;B、doublea=b=7;C、doublea;b;D、doublea=7,b=7;標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:A選項(xiàng)中變量類型符double后面不能有逗號(hào)。B選項(xiàng)中變量b不能先使用再定義,應(yīng)該寫成選項(xiàng)D中的格式。C選項(xiàng)中變量a后面應(yīng)該是逗號(hào)而不是分號(hào)。18、有以下程序:#includevoidf(int*q){inti=0;for(;i<5;i++)(*q)++;}main(){inta[5]={1,2,3,4,5},i;f(a);for(i=0;i<5;i++)printf(“%d,”,a[i]);}程序運(yùn)行后的輸出結(jié)果是()。A、6,2,3,4,5,B、2,2,3,4,5,C、1,2,3,4,5,D、2,3,4,5,6,標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查的是函數(shù)的地址調(diào)用,將數(shù)組名作為數(shù)組首地址進(jìn)行傳遞,然后取首個(gè)數(shù)組元素值進(jìn)行加1運(yùn)算,循環(huán)5次。因此A選項(xiàng)正確。19、下列敘述中正確的是()。A、算法就是程序B、設(shè)計(jì)算法時(shí)只需要考慮數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)C、設(shè)計(jì)算法時(shí)只需要考慮結(jié)果的可靠性D、以上三種說(shuō)法都不對(duì)標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:算法是指解題方案的準(zhǔn)確而完整的描述,算法不等于程序,也不等于計(jì)算方法,所以A錯(cuò)誤。設(shè)計(jì)算法時(shí)不僅要考慮對(duì)數(shù)據(jù)對(duì)象的運(yùn)算和操作,還要考慮算法的控制結(jié)構(gòu)。20、有以下程序#inc1udemain(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=0;for(i=0;i<3;i++)for(j=2j>=i;j——)=—b[i]D];printf("%d\n",t);}程序運(yùn)行后的輸出結(jié)果是()。A、4B、3C、8D、9標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:這道題主要考查的是二維數(shù)組的有關(guān)知識(shí)。在兩層for循環(huán)語(yǔ)句中,累加上三角元素,所以程序執(zhí)行的過(guò)程為“t=b[0][0]+b[0][1]+b[0][2]+b[1][1]+b[1][2]+b[2][2]=8”。21、程序流程圖中帶有箭頭的線段表示的是()。A、圖元關(guān)系B、數(shù)據(jù)流C、控制流D、調(diào)用關(guān)系標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:在數(shù)據(jù)流圖中,用標(biāo)有名字的箭頭表示數(shù)據(jù)流。在程序流程圖中,用標(biāo)有名字的箭頭表示控制流。所以選擇C)。22、有以下程序:#include<stdio.h>main(){inti,j,x=0;for(i=0;i<2;i++){x++:for(j=0;j<=3;j++){if(j%2)continue;x++;}x++;}printf("x=%d\n",x);}程序執(zhí)行后的輸出結(jié)果是()。A、x=4B、x=8C、x=6D、x=12標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:toutinue的作用是跳出循環(huán)體中剩余的語(yǔ)句而進(jìn)行下一次循環(huán)。第一次執(zhí)行外循環(huán)i的值為0,執(zhí)行x++,x的值變?yōu)?,第一次執(zhí)行內(nèi)層循環(huán)j的值為0,不滿足if條件,執(zhí)行x++,x的值變?yōu)?,第二次內(nèi)循環(huán)j的值為1,if條件成立,跳出本次循環(huán),第三次執(zhí)行內(nèi)循環(huán)j的值為2,不滿足if條件,x的值變?yōu)?,第四次執(zhí)行內(nèi)循環(huán)j的值為3滿足條件跳出本次內(nèi)循環(huán),x的值加1,即為4,第一次外循環(huán)結(jié)束。第二次執(zhí)行外循環(huán)時(shí),同理,i的值被加了,4次,變?yōu)?,所以選擇B選項(xiàng)。23、有以下程序:#include<stdio.h>voidfull(int*s,intn1,intn2){inti,j,t;i=n1;j=n2;while(i<J){t=s[i];s[i]=s[J];s[j]=t;i++;j--;}}main(){inta[10]={1,2,3,4,5,6,7,8,9,0},k;fun(a,0,3);fun(a,4,9);fun(a,0,9);for(k=0;k<10;k++)printf("%d",a[k]);printf("\n");}程序運(yùn)行后的輸出結(jié)果是()。A、4321098765B、5678901234C、0987654321D、0987651234標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:該程序首先給一維數(shù)組賦值,然后三次調(diào)用fun函數(shù),其中fun(a,0,3);功能是將一維數(shù)組中笫1,個(gè)元素和第4個(gè)元素互換,第2個(gè)元素和第3個(gè)元素互換;其中fun(a,4,9);功能是將一維數(shù)組中第5個(gè)元素和第10個(gè)元素互換,第6個(gè)和第9個(gè)元素互換,第7個(gè)元素和第8個(gè)元素互換;其中fun(a,0,9);功能是將將一維數(shù)組中第1個(gè)元素和第10個(gè)元素互換,第2個(gè)元素和第9個(gè)元素互換……依此類推。因此B選項(xiàng)正確。24、有以下程序#include<stdio.h>intfun(){staticintx=1;x*=2;returnx;}main(){inti,s=1;for(i=1;i<=2;i++)s=fun();printf("%d\n",s);}程序運(yùn)行后的輸出結(jié)果是A、0B、1C、4D、8標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:fun函數(shù)中的x為靜態(tài)局部變量,占用固定的內(nèi)存單元,下一次調(diào)用時(shí)仍可保留上次調(diào)用時(shí)的值。也就是說(shuō),如果多次調(diào)用fun函數(shù),x的定義只在第一次調(diào)用時(shí)有效,從第二次調(diào)用開始,x的定義相當(dāng)于不存在,直接使用x的值。主函數(shù)中調(diào)用兩次fun函數(shù):第一次調(diào)用:x=1,x=x*2=2,s=2;第二次調(diào)用:(直接用上次x的值)x=x*2=4,s=4。因此C選項(xiàng)正確。25、以下能正確表述算式sin(2πr+30°)的C語(yǔ)言表達(dá)式是()。A、sin(2*3.14*r+3.14*30/180.0)B、sin(2*π*r+30)C、sin(2*3.14*r+30)D、sin(2*3.14*r+30*3.14/360.0)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:考查算術(shù)表達(dá)式的寫法,C中沒(méi)有π,需要用數(shù)值3.14代替,C中sin函數(shù)的參數(shù)為弧度,角度30轉(zhuǎn)成弧度應(yīng)為3.14*30/180。故而選A)。26、有以下程序#includemain(){inta[3]={0},i,j,k=2;for(i=0;iA、3B、2C、1D、0標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:暫無(wú)解析27、有以下程序:#include<stdio.h>main(){inti,t[][3]={9,8,7,6,5,4,3,2,1};for(i=0;i<3;i++)printf(’’%d’’,t[2-i][i]);程序執(zhí)行后的輸出結(jié)果是()。A、357B、753C、369D、751標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:二維數(shù)組t[][3]實(shí)際上指t[3][3]={{9,8,7},{6,5,4},{3,2,1}},通過(guò)循環(huán)語(yǔ)句for語(yǔ)句可以得到i=0,t[2][0]=3、i=1,t[1][1]=5、i=2,t[0][2]=7、i=3時(shí)循環(huán)結(jié)束即t[2][0]=3、t[1][1]=5、t[0][2]=7。因此A選項(xiàng)正確。28、有以下程序:#include<stdio.h>voidfun(int*s,intn1,intn2){inti,j,t;i_nl;j=n2;while(i<j){t=s[i];s[i]=s[j];s[j]=t;i++;j--;}}main(){inta[10]={1,2,3,4,5,6,7,8,9,0},k;fun(a,0,3);fun(a,4,9);fun(a,0,9);for(k=0;k<10;k++)printf(’’%d’’,a[k]);printf(’’\n’’);}程序運(yùn)行后的輸出結(jié)果是()。A、1,1,2,6,B、6,2,1,l,C、6,4,3,2,D、2,3,4,6,標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:首先對(duì)二維數(shù)組進(jìn)行賦值操作,a[0][0]、a[0][1]、…、a[3][2]、a[3][3]的值為1、4、…、6、1。通過(guò)for嵌套循環(huán)語(yǔ)句和if條件語(yǔ)句,對(duì)二維數(shù)組對(duì)角線元素進(jìn)行由大到小的排序操作,程序最后通過(guò)for語(yǔ)句輸出二維數(shù)組第1行的4個(gè)元素。因此C選項(xiàng)正確。29、若有以下程序#include<stdio.h>#include<string.h>typedefstructstu{charname[10],gender;intscore;}STU;voidf(char*p){strcpy(p,"Qian");}main(){STUa={"Zhao",’m’,290},b;b=a;f();b.gender=’f’;b.score=350;printf("%s,%c,%d,",,a.gender,a.score);printf("%s,%c,%d\n",,b.gender,b.score);}則程序的輸出結(jié)果是A、Zhao,m,290,Qian,f,350B、Zhao,m,290,Zhao,m,290C、Qian,f,350,Qian,f,350D、Zhao,m,290,Zhao,f,350標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:本題考查結(jié)構(gòu)體的相關(guān)操作以及傳值、傳址的區(qū)別,該題中調(diào)用f函數(shù)后,b的name會(huì)重新賦值為Qian,選項(xiàng)A正確。30、有以下程序:#includemain(){intx=1;for(;x<8;x++){if(x%3){printf(’’%d,’’,x++);continue;}printf(’’%d,’’,++x);}}程序運(yùn)行后的輸出結(jié)果是()。A、1,4,5,7B、1,3,5,7C、2,4,5,8D、8,5,4,2標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:注意循環(huán)變量在循環(huán)體中有個(gè)加1的運(yùn)算,所以循環(huán)變量x=1,3,5,7;當(dāng)x是3的整數(shù)倍時(shí),輸出++x,當(dāng)x不是3的整數(shù)倍時(shí)輸出x++,所以結(jié)果是1,4,5,7。31、下面關(guān)于位運(yùn)算符的敘述,正確的是A、||表示"按位或"的運(yùn)算B、#表示"按位異或"的運(yùn)算C、&表示"按位與"的運(yùn)算D、~表示"按位異或"的運(yùn)算標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:本題考查位運(yùn)算。^為按位異或,|為按位或,~表示按位取反。所以C選項(xiàng)正確。32、C語(yǔ)言主要是借助以下哪種手段來(lái)實(shí)現(xiàn)程序模塊化A、定義函數(shù)B、定義常量和外部變量C、使用豐富的數(shù)據(jù)類型D、使用三種基本結(jié)構(gòu)語(yǔ)句標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:C語(yǔ)言程序的模塊化通過(guò)函數(shù)來(lái)體現(xiàn),所以選擇A。33、C語(yǔ)言中分支結(jié)構(gòu)中的if(表達(dá)式)語(yǔ)句中,關(guān)于“表達(dá)式’’值的敘述中正確的是()。A、必須是邏輯值B、必須是整數(shù)值C、不能為零D、可以是任意合法的數(shù)值標(biāo)準(zhǔn)答案:D知識(shí)點(diǎn)解析:if語(yǔ)句中的值可以是任意合法的數(shù)值或表達(dá)式,其他選項(xiàng)均不正確。34、有以下程序:#includevoidmain(){inti=5,s=0;do{switch(i){case1:case3:s+=1;i--;break;default:s=0;i一一;case2:case4:s+=2;i一一;break;}printf(’’%d’’,s);}while(i>0&&s<5);}程序運(yùn)行后的輸出結(jié)果是()。A、235B、2350C、0235D、2356標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:注意兩點(diǎn)。一是case分支語(yǔ)句后面若沒(méi)有break則會(huì)執(zhí)行其后的所有語(yǔ)句,直到有break跳出或switch()語(yǔ)句結(jié)束,do一while循環(huán)第1次執(zhí)行時(shí),i=5,在switch中執(zhí)行default分支,但其后沒(méi)有break,所以后面的分支也會(huì)被執(zhí)行,執(zhí)行完后s=2,i=3;第2次執(zhí)行do一while循環(huán)時(shí),會(huì)執(zhí)行case3后面的語(yǔ)句,直到有break跳出,執(zhí)行完后s=3,i=2;第3次執(zhí)行后s=5,i=1,此時(shí)注意while中的條件是s<5,所以循環(huán)結(jié)束,打印的結(jié)果是235。35、以下敘述正確的是A、不能在數(shù)組說(shuō)明符的一對(duì)方括號(hào)中使用表達(dá)式B、charc1,*c2,**c3,c4[2];是C語(yǔ)言的合法語(yǔ)句C、數(shù)組下標(biāo)的最小值可以是負(fù)值D、若有數(shù)組定義intarray[5];則語(yǔ)句printf("%d",array[1.23]);是合法的標(biāo)準(zhǔn)答案:B知識(shí)點(diǎn)解析:在B選項(xiàng)中,c1是字符型變量,c2是字符型指針變量,c3是指向字符型指針的指針變量,c4[2]是一個(gè)一維字符數(shù)組,這些都是C語(yǔ)言的合法語(yǔ)句,因此答案為B選項(xiàng)。36、以下非法的字符常量是A、’\\n’B、’\101’C、’\x21’D、’\0’標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:C語(yǔ)言允許使用一種以特殊形式出現(xiàn)的字符常量,,使用"\n"來(lái)表示換行,"\n"實(shí)際上是一個(gè)字符,它的ASCII碼值為10,不存在’\\n’用法,故答案為A選項(xiàng)。37、有以下程序#include<stdio.h>typedefstructstu{charname[10];chargender;intscore;}STU;voidf(STUa,STU*b){a=*b;printf("%s,%c,%d,",,a.gender,a.score);}main(){STUa={"Zhao",’m’,290},b={"Qian",’f’,350};f(a,&b);printf("%s,%c,%d\n",,a.gender,a.score);}程序運(yùn)行后的輸出結(jié)果是A、Qian,f,350,Qian,f,350B、Zhao,m,290,Qian,f,350C、Qian,f,350,Zhao,m,290D、Zhao,m,290,Zhao,m,290標(biāo)準(zhǔn)答案:C知識(shí)點(diǎn)解析:main函數(shù)中,首先定義兩個(gè)結(jié)構(gòu)體STU類型的變量a,b,并對(duì)a,b初始化,f函數(shù)的功能是:用形參結(jié)構(gòu)體指針b指向的結(jié)構(gòu)體對(duì)形參a賦值,此時(shí)形參結(jié)構(gòu)體a的值為指針b指向的值,輸出a即輸出指針b指向的結(jié)構(gòu)體,返回到main函數(shù)后,在輸出實(shí)參a的值,答案為C選項(xiàng),注:形參a,b不要和實(shí)參a,b混淆。38、數(shù)據(jù)庫(kù)系統(tǒng)的數(shù)據(jù)獨(dú)立性是指A、不會(huì)因?yàn)橄到y(tǒng)數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)與數(shù)據(jù)邏輯結(jié)構(gòu)的變化而影響應(yīng)用程序B、不會(huì)因?yàn)閿?shù)據(jù)的變化而影響應(yīng)用程序C、不會(huì)因?yàn)榇鎯?chǔ)策略的變化而影響存儲(chǔ)結(jié)構(gòu)D、不會(huì)因?yàn)槟承┐鎯?chǔ)結(jié)構(gòu)的變化而影響其他的存儲(chǔ)結(jié)構(gòu)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:數(shù)據(jù)庫(kù)系統(tǒng)的數(shù)據(jù)獨(dú)立性,是指數(shù)據(jù)庫(kù)中數(shù)據(jù)獨(dú)立于應(yīng)用程序且不依賴于應(yīng)用程序,即數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)與存取方式的改變不會(huì)影響應(yīng)用程序。故選A選項(xiàng)。39、以下關(guān)于C語(yǔ)言的敘述中正確的是()。A、預(yù)處理命令通常位于函數(shù)體外面,但也可以位于函數(shù)體中間B、C語(yǔ)言中的變量定義須在其他語(yǔ)句之前C、在C語(yǔ)言程序的書寫中,一個(gè)語(yǔ)句必須單占一行D、一個(gè)C語(yǔ)言源程序可以由一個(gè)或多個(gè)源文件組成,每個(gè)源文件可由自己的main函數(shù)標(biāo)準(zhǔn)答案:A知識(shí)點(diǎn)解析:源程序中可以有預(yù)處理命令(include命令僅為其中的一種)。C語(yǔ)言中的變量可以在使用之前的任何位置進(jìn)行定義。C語(yǔ)言程序的書寫中,多個(gè)語(yǔ)句可以位于一行,但為了增強(qiáng)可讀性,一般每行只有一條語(yǔ)句。一個(gè)C語(yǔ)言源程序可以由一個(gè)或多個(gè)源文件組成,但僅可以有一個(gè)main函數(shù).二、程序填空題(本題共1題,每題1.0分,共1分。)40、程序通過(guò)定義學(xué)生結(jié)構(gòu)體變量,存儲(chǔ)了學(xué)生的學(xué)號(hào)、姓名和3門課的成績(jī)。所有學(xué)生數(shù)據(jù)均以二進(jìn)制方式輸出到文件中。函數(shù)fun的功能是重寫形參filename所指文件中最后一個(gè)學(xué)生的數(shù)據(jù),即用新的學(xué)生數(shù)據(jù)覆蓋該學(xué)生原來(lái)的數(shù)據(jù),其他學(xué)生的數(shù)據(jù)不變。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#defineN5typedefstructstudent{longsno;charname[10];floatscore[3];}STU;voidfun(char*filename,STUn){FILE*fp;/**********found**********/fp=fopen(_____1_____,"rb+");/**********found**********/fseek(_____2_____,一(long)sizeof(STU),SEEKEND);/**********found**********/fwrite(&n,sizeof(STU),1,_____3_____);fclose(fp);}main(){STUt[N]=f{10001,"MaChao",91,92,77),{10002,"CaoKai",75,60,88},{10003,"LiSi",85,70,78},{10004,"FangFang",90,82,87},{10005,"ZhangSan",95,80,88}};STUn={10006,"ZhaoSi",55,70,68},ss[N];inti,j;FILE*fp;fp=fopen("student.dat","wb");fwrite(t,sizeof(STU),N,fp);fclose(fp);fp=fopen("student.dat","rb");fread(ss,sizeof(STU),N,fp);fclose(fp);printf("\nTheoriginaldata:\n\n");for(j=0;j標(biāo)準(zhǔn)答案:(1)filename(2)fp(3)fp知識(shí)點(diǎn)解析:第一空:“fp=fopen(__1__,"rb+");”補(bǔ)充fopen的參數(shù),fopen的調(diào)用形式是:fp=fopen(文件名,文件使用方式),因此第一空處應(yīng)填文件名“filename”。第二空:此處是補(bǔ)充fseek函數(shù)的參數(shù),fseek的調(diào)用形式是:fseek(fp,offset,position),其中第一個(gè)參數(shù)是文件型指針,故第二空處應(yīng)填文件型指針變量“fp”。第三空:fwrite的調(diào)用形式是(buffer,size,count,fb),最后一個(gè)參數(shù)是文件型指針,故第三空處應(yīng)填“fp”,將新的學(xué)生數(shù)據(jù)寫在最后一個(gè)學(xué)生數(shù)據(jù)位置。三、程序修改題(本題共1題,每題1.0分,共1分。)41、給定程序MODI1.C中的函數(shù)Creatlink的功能是創(chuàng)建帶頭結(jié)點(diǎn)的單向鏈表,并為各結(jié)點(diǎn)數(shù)據(jù)域賦0到m-1的值。請(qǐng)改正函數(shù)Creatlink中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#includetypedefstructaa{intdata;structaa*next;}NODE;NODE*Creatiink(intn,intm){NODE*h=NULL,*p,*s;inti;/**********found***********/p=(NODE)malloc(sizeof(NODE));h=p;p->next=NULL;for(i=1;i<=n;i++){s=(NODE*)malloc(sizeof(NODE));s->data=rand()%m;s->next=p->next;p->next。s;p=p->next;}/**********found**********/returnp;}outlink(NODE*h){NODE*p;p=h->next;printf("\n\nTHELIST:\n\nHEAD");while(P){printf("->%d”,p->data);p=p->next;}printf("\n");}main(){NODE*head;head=Creatlink(8,22);outlink(head);}標(biāo)準(zhǔn)答案:(1)p=(NODE*)malloc(sizeof(NODE));(2)returnh;知識(shí)點(diǎn)解析:(1)第一標(biāo)識(shí)下“p=(NODE)malloc(sizeof(NODE));”,maclloc函數(shù)的返回類型是void*類型,表示未確定類型的指針,因此需要指針類型轉(zhuǎn)換,而“(NODE)”不是指針類型,故第一標(biāo)識(shí)下應(yīng)改成“p=(NODE*)mailoc(sizeof(NODE));”。(2)第二個(gè)標(biāo)識(shí)下,最后將單鏈表返回,應(yīng)該是返回頭指針h指向的鏈表,而不是其中的一個(gè)節(jié)點(diǎn)p,所以“returnp;”應(yīng)該改為“returnh;”。四、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)42、請(qǐng)編寫函數(shù)fun,函數(shù)的功能是:統(tǒng)計(jì)一行字符串中單詞的個(gè)數(shù),作為函數(shù)值返回。一行字符串在主函數(shù)中輸入,規(guī)定所有單詞由小寫字母組成,單詞之間由若干個(gè)空格隔開,一行的開始沒(méi)有空格。注意:部分源程序在文件PROGl.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。#innclude#include#defineN80intfun(char*s){}main(){charline[N];intnum=0;voidNONO();printf("Enterastring:\n");gets(line);num=fun(line);printf("Thenumberofwordis:%d\n\n",num);NONO();}voidNONO(){/*請(qǐng)?jiān)诖撕瘮?shù)內(nèi)打開文件,輸入測(cè)試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FTLE*rf,*wf;inti,num;charline[N],*p;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fgets(line,N,rf);p=strchr(line,’\n’);if(p!=NULL)*p=0;num=fun(line);fprintf(wf,"%d\n",num);}fclose(rf);fclose(wf);}標(biāo)準(zhǔn)答案:inti,n=0;//字符統(tǒng)計(jì)初始值設(shè)置為0for(i=0;i=’a’&&s[i]<=’z’&&s[i+1]=’’||s[i+1]==’\0’)//單詞判斷條件n++;//單詞統(tǒng)計(jì)計(jì)數(shù)器加1}returnn;//返回統(tǒng)計(jì)值知識(shí)點(diǎn)解析:(1)首先,求得字符串的長(zhǎng)度。(2)只要

溫馨提示

  • 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)論