版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
國家二級(C語言)機試模擬試卷1(共9套)(共306題)國家二級(C語言)機試模擬試卷第1套一、選擇題(本題共40題,每題1.0分,共40分。)1、設(shè)有關(guān)鍵碼序列(66,13,51,76,81,26,57,69,23),要按關(guān)鍵碼值遞增的次序排序,若采用快速排序法,并以第一個元素為劃分的基準(zhǔn),那么第一趟劃分后的結(jié)果為()。A、23,13,51,57,66,26,81,69,76B、13,23,26,51,57,66,8176,69C、23,13,51,57,26,66,81,69,76D、23,13,51,57,81,26,66,69,76標(biāo)準(zhǔn)答案:A知識點解析:快速排序是起泡捧序的改進(jìn)。在快速捧序中,任取一個記錄,以它為基準(zhǔn)用交換的方法將所有的記錄分成兩部分,關(guān)鍵碼值比它小的在一部分。關(guān)鍵碼值比它大的在另一部分,再分別對兩個部分實施上述過程,一直重復(fù)到排序完成。2、下列關(guān)于線性鏈表的敘述中,正確的是()。A、各數(shù)據(jù)節(jié)點的存儲空間可以不連續(xù),但他們的存儲順序與邏輯順序必須一致B、各數(shù)據(jù)節(jié)點的存儲順序與邏輯順序可以不一致,但它們的存儲空間不需連續(xù)C、進(jìn)行插入數(shù)據(jù)與刪除數(shù)據(jù)時,不需要移動表中的元素D、以上說法均不對標(biāo)準(zhǔn)答案:C知識點解析:一般來說,在線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)中,各數(shù)據(jù)節(jié)點的存儲序號是不連續(xù)的,并且各節(jié)點在存儲空間中的位置關(guān)系與邏輯關(guān)系也不一致。線性鏈表中數(shù)據(jù)的插人和刪除都不需要移動表中的元素,只需要改變節(jié)點的指針域。3、有以下程序:main(){intk=33;printf("%d,%o,%x",k,k,k);}執(zhí)行后的輸出結(jié)果是()。A、33,033,0x21B、33,033,21C、33,041,021D、33,41,21標(biāo)準(zhǔn)答案:D知識點解析:本題考查不同進(jìn)制間的轉(zhuǎn)換。printf輸出函數(shù)中輸出變量的格式,由輸出格式符決定。題中“%o”格式符表示以八進(jìn)制的形式輸出;“%x”格式符表示以十六進(jìn)制的形式輸出?!?3”的八進(jìn)制和十六進(jìn)制分別是41和21。4、有以下程序:#includevoidfun(inta[],intn){inti,t;for(i=0;iA、321678B、876543C、1098765D、345678標(biāo)準(zhǔn)答案:A知識點解析:本題中的函數(shù)fun()的功能是將數(shù)組k中前5個元素倒序,所以返回后數(shù)組k中的元素排列是5,4,3,2,1,6,7,8,9,10。所以打印輸出k[2]到k[7]元素的值,即321678,所以選擇A。5、有以下程序#includemain(){char*mm[4]={"abcd","1234","mnop","5678"};char**pm=mm;inti;for(i=0;i<4;i++)printf("%s",pm[i]+i);printf("\n");}程序的運行結(jié)果是()。A、abcd234op8B、abcd1234mnop5678C、a2o8D、a1m5標(biāo)準(zhǔn)答案:A知識點解析:輸出語句"printf("%s",pm[i]+i);"表明輸出以pm[i]+i為首地址的之后的字符串,輸出語句共執(zhí)行4次,輸出以p[0],p[1]+1,p[2]+2,p[3]+3為起始位置的字符串,分別為"abcd","234","op","8",所以答案選A)。6、下列程序的運行結(jié)果是()。#includevoidsub(int*S,int*y){staticintm=4;*y=s[m];m--;}voidmain(){inta[]={1,2,3,4,5},k,x;printf(“\n”);for(k=0;k<=4;k++){sub(a,&x);printf(“%d,”,x);}}A、5,4,3,2,1,B、1,2,3,4,5,C、0,0,0,0,0,D、4,4,4,4,4,標(biāo)準(zhǔn)答案:A知識點解析:本題考查的是靜態(tài)變量以及函數(shù)的實參與形參之間的地址值傳遞。sub()函數(shù)中定義的變量m是一個靜態(tài)變量,系統(tǒng)可為其分配固定的存儲空間,重復(fù)使用時,變量的值保留;所以當(dāng)main()函數(shù)中的for循環(huán)中語句sub(a,&x);執(zhí)行時,sub函數(shù)中m的值依次是4,3,2,1,0;因為變量x進(jìn)行的是地址值傳遞,所以最后依次輸出的是數(shù)組a的元素a[4]、a[3]、a[2]、a[1]、a[0]。7、下列敘述中,不屬于設(shè)計準(zhǔn)則的是()。A、提高模塊獨立性B、使模塊的作用域在該模塊的控制域中C、設(shè)計成多入口、多出口模塊D、設(shè)計功能可預(yù)測的模塊標(biāo)準(zhǔn)答案:C知識點解析:大量軟件設(shè)計表明,以下的設(shè)計準(zhǔn)則是可以借鑒為設(shè)計的指導(dǎo)和對軟件結(jié)構(gòu)圖進(jìn)行優(yōu)化,這些準(zhǔn)則是:提高模塊獨立性;模塊規(guī)模適中;深度、寬度、扇出和扇入適當(dāng);使模塊的作用域在該模塊的控制域中;應(yīng)減少模塊的接口和界面的復(fù)雜性;設(shè)計成單入口、單出口的模塊;設(shè)計功能可預(yù)測的模塊。8、設(shè)變量已正確定義并賦值,以下正確的表達(dá)式是()。A、x=y+z+5,++yB)int(15.8%5)B、x=y*5=x+zC、x=25%5.0標(biāo)準(zhǔn)答案:A知識點解析:B與D選項中取模運算符%的左右兩個操作數(shù)均應(yīng)為整數(shù),所以B、D錯誤。C選項中不能將x+y的值賦給表達(dá)式y(tǒng)*5,所以C錯誤。9、若在定義語句:inta,b,c,*p=&c;之后,接著執(zhí)行以下選項中的語句,則能正確執(zhí)行的語句是()。A、scanf("%d",a,b,c);B、scanf("%d%d%d",a,b,c);C、scanfi["%d",p);D、scanf("%d",&p);標(biāo)準(zhǔn)答案:C知識點解析:程序語句“inta,b,c,*p=&c;”定義了3個整型變量a,b,c和一個整型指針變量p,并且把變量c的地址賦給p。scanf函數(shù)的一般形式為“scanf("格式控制字符串",地址列表)”,其中的地址列表應(yīng)當(dāng)是存放輸入數(shù)據(jù)變量的地址。10、下列說法正確的是()。A、int(**def)[10];----def指向一個指針,該指針指向10個整型變量構(gòu)成的數(shù)組B、int*(*gh[10]);---gh指向一個指針,該指針指向10個整型變量構(gòu)成的數(shù)組C、int*(*gh[10]);---gh是一個指針,指向由10個指向整型變量的指針構(gòu)成的數(shù)組D、A,C均正確標(biāo)準(zhǔn)答案:D知識點解析:int*(*gh[10]):---gh是一個指針,指向由10個指向整型變量的指針構(gòu)成的數(shù)組,int(**def)[10];----def指向一個指針,該指針指向10個整型變量構(gòu)成的數(shù)組。11、當(dāng)用“#defineF37.5f”定義后,下列敘述正確的是()。A、F是float型數(shù)B、F是char型數(shù)C、F無類型D、F是字符串標(biāo)準(zhǔn)答案:D知識點解析:字符替換定義格式為:#define標(biāo)識符(形參表)形參表達(dá)式。題中F是代表形參表達(dá)式的標(biāo)識符(字符串)。12、設(shè)有關(guān)鍵碼序列(Q,G,M,Z,A,N,B,P,X,H,Y,S,T,L,K,E、),采用堆排序法進(jìn)行排序,經(jīng)過仞始建堆后關(guān)鍵碼值B在序列中的序號是()。A、1B、3C、7D、9標(biāo)準(zhǔn)答案:B知識點解析:建堆的算法:首先將要排序的所有關(guān)鍵碼放到一棵完全二叉樹的各個結(jié)點中(這時的二叉樹不具備堆的特性),然后,從i=[n/2](n為結(jié)點的個數(shù))的結(jié)點Ki開始,逐步把以K[n/2],K[n/2]-1,K[n/2]-2…為根的子樹排成堆,直到以K1為根的樹排成堆,就完成了建堆過程。此題中,n=16,i=[16/2]=8,即從第8個結(jié)點開始,建堆完成后如下圖:所以經(jīng)過初始建堆后關(guān)鍵碼值B在序列中的序號是3。13、下列敘述中正確的是()。A、調(diào)用printf()函數(shù)時,必須要有輸出項B、使用putchar()函數(shù)時,必須在之前包含頭文件stdio.hC、在C語言中,整數(shù)可以以二進(jìn)制、八進(jìn)制或十六進(jìn)制的形式輸出D、調(diào)節(jié)getchar()函數(shù)讀入字符時,可以從鍵盤上輸入字符所對應(yīng)的ASCII碼標(biāo)準(zhǔn)答案:B知識點解析:選項A),若printf函數(shù)沒有輸出項,且格式字符串中不含格式信息,則輸出的是格式字符串本身,若格式字符串含有格式信息,運行時則出現(xiàn)錯誤提示;選項C),在C語言中,整數(shù)可以十進(jìn)制、八進(jìn)制或十六進(jìn)制的形式輸出;選項D),getchar函數(shù)是從標(biāo)準(zhǔn)輸入設(shè)備讀取一個字符。14、執(zhí)行以下程序段后,w的值為()。intw=’A’,x=14,y=15;w=((x|y)&&(w<’a’));A、一1B、NULLC、1D、0標(biāo)準(zhǔn)答案:C知識點解析:因為x=14,y=15都是非零整數(shù),因此x|y=1。又因為’A’+32=’a’,知w<’a’也為真,因此(x|y)&&(w<’a’)的值為1。15、開發(fā)軟件所需高成本和產(chǎn)品的低質(zhì)量之間有著尖銳的矛盾,這種現(xiàn)象稱做()。A、軟件矛盾B、軟件危機C、軟件藕合D、軟件產(chǎn)生標(biāo)準(zhǔn)答案:B知識點解析:隨著計算機軟件規(guī)模的擴大,軟件本身的復(fù)雜性不斷增加,研制周顯著變長,正確性難以保證,軟件開發(fā)費用上漲,生產(chǎn)效率急劇下降,從而出現(xiàn)了人們難以控制軟件發(fā)展的局面,即所謂的“軟件危機”。16、C語言規(guī)定,在一個C程序中,main()函數(shù)的位置()。A、必須在系統(tǒng)調(diào)用的庫函數(shù)之后B、必須在程序的開始C、必須在程序的最后D、可以在任意位置標(biāo)準(zhǔn)答案:D知識點解析:每個C程序有且只有一個主函數(shù)(main),且程序必須從“main()”函數(shù)開始執(zhí)行,而且“main()”函數(shù)可以放在程序中的任意位置。17、有如下嵌套的if語句:if(aA、k=(ac)?b:c);B、k=(aC、k=(aD、k=(a標(biāo)準(zhǔn)答案:B知識點解析:題目中嵌套語句的含義是當(dāng)a18、已有定義inta=3;和輸出語句printf("%8x",a);以下正確的敘述是()。A、整型變量的輸出格式符只有%d一種B、%x是格式符的一種,它可以適用于任何一種類型的數(shù)據(jù)C、%x是格式符的一種,其變量的值按十六進(jìn)制數(shù)輸出,但%8x是錯誤的D、%8x是正確的格式符,其中數(shù)字8規(guī)定了輸出字段的寬度標(biāo)準(zhǔn)答案:D知識點解析:本題考查printf函數(shù)的格式?!埃?x”表示以十六進(jìn)制無符號形式輸出整型數(shù)據(jù)。“8”表示指定輸出數(shù)據(jù)的寬度為8位。19、支持子程序調(diào)用的數(shù)據(jù)結(jié)構(gòu)是()。A、棧B、樹C、隊列D、二叉樹標(biāo)準(zhǔn)答案:A知識點解析:棧支持子程序調(diào)用。棧是一種只能在一端進(jìn)行插入或刪除的線性表,在主程序調(diào)用子函數(shù)時要首先保存主程序當(dāng)前的狀態(tài),然后轉(zhuǎn)去執(zhí)行子程序,最終把子程序的執(zhí)行結(jié)果返回到主程序中調(diào)用子程序的位置,繼續(xù)向下執(zhí)行,這種調(diào)用符合棧的特點,因此本題的答案為A)。20、有以下程序:#includemain(){inty=10;while(y--);printf("y=%d\n",y);}程序執(zhí)行后的輸出結(jié)果是()。A、Y=0B、y=-1C、y=1D、while構(gòu)成無限循環(huán)標(biāo)準(zhǔn)答案:B知識點解析:執(zhí)行y--直到值為0,由于y--是先用再減,所以退出循環(huán)時,y的值為-1。21、下列程序的運行結(jié)果是()。#includevoidfun(int*S,int*P){staticintt=3;*p=s[t];t--;}voidmain(){inta[]={2,3,4,5),k,x;for(k=0;k<4;k++){fun(a,&x);printf(“%d,”,x);}}A、5,4,3,2,B、2,3,4,5,C、2,2,2,2,D、5,5,5,5,標(biāo)準(zhǔn)答案:A知識點解析:分析fun函數(shù)程序段,可知fun函數(shù)要實現(xiàn)的功能是將s中第(t+1)個元素以前的元素逆置賦給數(shù)組p。由于fun函數(shù)定義了靜態(tài)變量t=3,因此,在主函數(shù)中調(diào)用函數(shù)fun(a,&x)時,就是要將數(shù)組a中前4個元素逆置賦給數(shù)組x,最后輸出x數(shù)組。22、有以下程序:#includemain(){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.Of,%2.Of\n",b.name,b.sex,b.score[0],b.score[1]);}程序運行的結(jié)果是()。A、Qian,f,95,92B、Qian,f,85,90C、Zhao,f,95,92D、Zhao,m,85,90標(biāo)準(zhǔn)答案:D知識點解析:在C語言中,相同類型變量可以通過等號直接賦值,按照每個成員在結(jié)構(gòu)體中的順序一一對應(yīng)賦初值,已知a.name="Zhao",a.sex=’f’,a.score[0]=85.0,a.score[1]=90.0,則b=a,b.name:"Zhao",b.sex=’m’,b.score[0]=85.0,b.score[1]=90.0。23、有以下程序:#include<stdio.h>#include<string.h>typedefstruet{charname[9];charsex;floatscore[2];}STU;voidf(STUa){STUb={"Zhao",’m’,85.0,90.0};inti;strepy(a.name,b.name);a.sex=b.sex;for(i=0;i<2;i++)a.score[i]=b.score[i];}main(){STUc={"Qian",’f’,95.0,92.0};f(c);print]f("%8,%c,%2.0f,%2.0f\n",c.name,c.sex,c.seore[0],c.score[1]);}程序運行后的輸出結(jié)果是()。A、Zhao,m,85,90B、Qian,m,85,90C、Zhao,f,95,92D、Qian,f,95,92標(biāo)準(zhǔn)答案:D知識點解析:本題考查結(jié)構(gòu)體的相關(guān)操作以及傳值、傳址的區(qū)別,該題中調(diào)用f函數(shù)后,會生成參數(shù)c的一個副本,而不會改變c的值,所以c值維持原值,選項D正確。24、以下敘述中錯誤的是()。A、可以給指針變量賦一個整數(shù)作為地址值B、函數(shù)可以返回地址值C、改變函數(shù)形參的值,不會改變對應(yīng)實參的值D、當(dāng)在程序的開頭包含頭文件stdio.h時,可以給指針變量賦NULL標(biāo)準(zhǔn)答案:A知識點解析:不能將一個整數(shù)直接賦給指針變量作為地址,所以A選項是錯誤的。函數(shù)的返回值可以是地址,即指針。函數(shù)調(diào)用中形參值的變化不會傳遞給實參。25、有以下程序#include<stdio.h>intfun(intx){intp;if(x==0||x==1)return(3);p=x-fun(x-2);returnp;}main(){printf("%d\n",fun(7));}執(zhí)行后的輸出結(jié)果是A、2B、3C、7D、0標(biāo)準(zhǔn)答案:A知識點解析:因為fun(intx)是一個遞歸函數(shù),所以主函數(shù)中fun(7)經(jīng)過3次遞歸調(diào)用,其過程可以描述為"fun(7)=7-fun(5)=7-(5-fun(3))=7-(5-(3-fun(1)))=7-(5-(3-3))=7-5=2",所以最后輸出結(jié)果為2。因此A選項正確。26、有以下程序:#includestruetord{intx,y;}dt[2]={1,2,3,4};main(){struetord*P=dt;prinff(“%d,”,++(P一>x));prinff(“%d\n”,++(P一>y));}程序運行后的輸出結(jié)果是()。A、3,4B、4,1C、2,3D、1,2標(biāo)準(zhǔn)答案:C知識點解析:本題考查結(jié)構(gòu)體數(shù)組的相關(guān)操作,dt為結(jié)構(gòu)體數(shù)組,那么指針p指向了結(jié)構(gòu)體數(shù)組的一個元素,所以p一>x為1,p一>y為2,結(jié)果為2,3。選項C正確。27、若有定義語句:charstr[8]=’’abcdef\0\0’’;則strlen(str)的值是()。A、6B、7C、8D、9標(biāo)準(zhǔn)答案:A知識點解析:系統(tǒng)會在字符數(shù)組末尾加一個字符(’\0’)作為結(jié)束符,strlen()會將’\0’作為字符串的結(jié)束符,因此,本題中的字符串的實際長度是6。28、有以下程序:#include#includetypedefstruct{charname[9];charsex;floatscore[2];}ST;voidfun(STx){STUy={’’Tom’’,’m’,98.0,90.0};inti;strcpy(x.name,y.name);x.sex=y.sex:for(i=0;i<2;i++)x.score[i]=y.score[1];}main(){STstudent={’’Bob’’,’f,99.2,89.0};fun(student);printf(’’%s,%c,%2.0f,%2.0f\n’’,student.name,student.sex,student.score[0],student.score[1]);}程序運行后的輸出結(jié)果是()。A、Tom,m,98,90B、Bob,f,99,89C、Bob,f,98,90D、Tom,f,99,89標(biāo)準(zhǔn)答案:B知識點解析:子函數(shù)的功能是將形參的值用一個固定的值覆蓋,但因為是值傳遞,所以實參的值不會變化,所以在主函數(shù)中的結(jié)構(gòu)體astudent的值沒有發(fā)生變化。29、若有以下程序#include<stdio.h>main(){intc;c=13|5;printf("%d\n",c);}則程序的輸出結(jié)果是A、13B、15C、18D、5標(biāo)準(zhǔn)答案:A知識點解析:本題考查位運算中按位或運算符,或運算只要兩個比較的位中有一個為1,其結(jié)果是1,否則結(jié)果為0,,13用二進(jìn)制表示為00001101,5用二進(jìn)制表示為00000101,或后00001101,即13,選項A正確。30、數(shù)據(jù)庫系統(tǒng)的三級模式不包括()。A、數(shù)據(jù)模式B、內(nèi)模式C、外模式D、概念模式標(biāo)準(zhǔn)答案:A知識點解析:數(shù)據(jù)庫系統(tǒng)的三級模式是概念模式、內(nèi)模式和外模式。31、以下敘述中正確的是A、對于邏輯表達(dá)式:a++||b++,設(shè)a的值為1,則求解表達(dá)式的值后,b的值會發(fā)生改變B、對于邏輯表達(dá)式:a++&&b++,設(shè)a的值為0,則求解表達(dá)式的值后,b的值會發(fā)生改變C、else不是一條獨立的語句,它只是if語句的一部分D、關(guān)系運算符的結(jié)果有三種:0,1,-1標(biāo)準(zhǔn)答案:C知識點解析:選項A中,設(shè)a的值為1,根據(jù)邏輯短路原則,表達(dá)式a++||b++中a++=1,不計算b++的值,表達(dá)式結(jié)果為真;B選項中根據(jù)邏輯短路原則,表達(dá)式a++&&b++,當(dāng)a=0時a++=0,不計算b++的值表達(dá)式的值為假;D選項中,關(guān)系運算符的結(jié)果有"真"和"假"兩種。因此C選項正確。32、關(guān)于doublea,*p=&a;的敘述中錯誤的是()。A、定義語句中的&是一個地址運算符B、定義語句中的*是一個指針變量說明符C、定義語句中的P可以存放double以外數(shù)據(jù)類型變量的地址D、定義語句中的*p=&a把變量a的地址作為初值賦給指針變量p標(biāo)準(zhǔn)答案:C知識點解析:指針變量在定義時便指定了其類型,本題中double*p的定義,說明p只能存放double類型變量的地址。其他選項正確。33、C語言中的數(shù)組定義語句中不正確的是()。A、inta[][3]={1,2,3,4,5,6};B、inta[2][41={{1,2},{3,4},{5,6}};C、inta[]={{1,2},3,4,5,6};D、inta[][4]={1,2,3,4,5,6};標(biāo)準(zhǔn)答案:B知識點解析:定義數(shù)組時一維數(shù)組可以不指定列數(shù),二維數(shù)組可以不指定行數(shù),系統(tǒng)將根據(jù)輸入的數(shù)據(jù)來決定,但如果指定了具體的行列數(shù),賦值時就必須按照行列數(shù)輸入,選項B定義了2行但輸入?yún)s是3行,所以錯誤。34、C語言程序中,運算對象必須是整型數(shù)的運算符是A、&&B、/C、%D、*標(biāo)準(zhǔn)答案:C知識點解析:%取余運算是二目運算符,且要求運算對象必須為整數(shù),所以選C。35、下列敘述中正確的是A、棧與隊列都只能順序存儲B、循環(huán)隊列是隊列的順序存儲結(jié)構(gòu)C、循環(huán)鏈表是循環(huán)隊列的鏈?zhǔn)酱鎯Y(jié)構(gòu)D、棧是順序存儲結(jié)構(gòu)而隊列是鏈?zhǔn)酱鎯Y(jié)構(gòu)標(biāo)準(zhǔn)答案:B知識點解析:棧是所有的插入與刪除都限定在表的同一端進(jìn)行的線性表;隊列是指允許在一端進(jìn)行插入,而在另一端進(jìn)行刪除的線性表,二者均即可以順序存儲也可以鏈?zhǔn)酱鎯Α榱顺浞值乩脭?shù)組的存儲空間,把數(shù)組的前端和后端連接起來,形成一個環(huán)形的表,稱為循環(huán)隊列,因此循環(huán)隊列是隊列的一種順序存儲結(jié)構(gòu),B選項正確。36、以下對聯(lián)合類型敘述正確的是()。A、可以對聯(lián)合變量名直接賦值B、使用聯(lián)合變量的目的是為了節(jié)省內(nèi)存C、任何一個聯(lián)合變量可以同時引用聯(lián)合中的不同成員D、聯(lián)合類型定義中不能同時出現(xiàn)結(jié)構(gòu)類型的成員標(biāo)準(zhǔn)答案:B知識點解析:由于聯(lián)合體是同一存儲區(qū)域由不同類型的變量共享,所以不可以直接對聯(lián)合體變量名進(jìn)行賦值,且聯(lián)合體中的空間在某一時刻只能保持某一成員的數(shù)據(jù);另外合體中可以出現(xiàn)結(jié)構(gòu)類型的成員。37、有以下程序#include<stdio.h>voidf(intx[],intn){if(n>1){printf("%d,",x[0]);f(&x[1],n-1);printf("%d,",x[0]);}elseprintf("%d,",x[0]);}main(){intz[3]={4,5,6};f(z,3);printf("\n");}程序運行后的輸出結(jié)果是A、6,5,4,6,5,4,B、4,5,6,5,4,C、4,5,6,4,5,6,D、6,5,4,5,6,標(biāo)準(zhǔn)答案:B知識點解析:本題考查了函數(shù)的遞歸調(diào)用,在main函數(shù)中調(diào)用f(z,3)后,系統(tǒng)進(jìn)入f()函數(shù),隨后進(jìn)入if語句,輸出x[0],再進(jìn)入f()函數(shù)時,存在&x[1]函數(shù)的遞歸,輸出x[1],再進(jìn)入f函數(shù),再進(jìn)行遞歸,輸出x[2],隨后結(jié)束返回輸出上一個f()函數(shù),輸出x[1],再返回第一個f()函數(shù)中,輸出x[0],程序運行后的輸出結(jié)果是.4。因此答案為B選項。38、有以下程序#include<stdio.h>main(){inta=2,b=3,c=4;a*=16+(b++)-(++c);printf("%d\n",a);}程序運行后的輸出結(jié)果是A、15B、30C、28D、14標(biāo)準(zhǔn)答案:C知識點解析:1、后置自增運算:k++表示先運算,后自加。2、前置自增運算:++k表示先自加,后運算。++單目運算符的優(yōu)先級高于賦值運算符。a*=16+(b++)-(++c);可轉(zhuǎn)化為:a=a*(16+b-(c+1));b=b+1;代入值計算可得值a=28。答案為C選項.39、算法的時間復(fù)雜度是指A、設(shè)計該算法所需的工作量B、執(zhí)行該算法所需要的時間C、執(zhí)行該算法時所需要的基本運算次數(shù)D、算法中指令的條數(shù)標(biāo)準(zhǔn)答案:C知識點解析:算法的時間復(fù)雜度是指執(zhí)行算法所需要的計算工作量。它與算法程序執(zhí)行的具體時間并不一致,因為算法執(zhí)行的具體時間受到所使用的計算機、程序設(shè)計語言以及算法實現(xiàn)過程中許多細(xì)節(jié)的影響。算法的計算工作量是用算法所執(zhí)行的基本運算次數(shù)來度量的。故選C選項40、有以下程序:#include<stdio.h>#include<string.h>structA{inta;charb[l0];doublec;};structAf(structAt):main(){structAa={1001,"ZhangDa",1098.0};a=f(a):printf("%d,%s,%6.1f\n",a.a(chǎn),a.b,a.c);}structAf(structAt){t.a(chǎn)=1002:strcpy(t.b,"ChangRong"):t.c=1202.0:returnt;}程序運行后的輸出結(jié)果是()。A、1001,ZhangDa,1098.0B、1002,ZhangDa,1202.0C、1001,ChangRong,1098.0D、1002,ChangRong,1202.0標(biāo)準(zhǔn)答案:D知識點解析:函數(shù)f對結(jié)構(gòu)體進(jìn)行修改,并返回新的結(jié)構(gòu)體;main函數(shù)先定義了一個結(jié)構(gòu)體變量a并為它賦初值,然后調(diào)用函數(shù)f修改結(jié)構(gòu)體變量的成員值,最后輸出新的結(jié)構(gòu)體變量成員。二、程序填空題(本題共1題,每題1.0分,共1分。)41、給定程序中,函數(shù)fun的功能是將不帶頭結(jié)點的單向鏈表逆置,即若原鏈表中從頭至尾結(jié)點數(shù)據(jù)域依次為2、4、6、8、10,逆置后,從頭至尾結(jié)點數(shù)據(jù)域依次為10、8、6、4、2。請在程序的下畫線處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdio.h>2#include<stdlib.h>3#defineN54typedefstructnode{5intdata;6structnode*next;7NODE;8/*********found*********/9【1】*fun(NODE*h)10{NODE*p,*q,*r;11p=h;12if(p==NULL)13returnNULL;14q=p->next;15p->next=NULL;16while(q)17{18/*********found*********/19r=q->【2】;20q->next=p;21p=q;22/*********found*********/23q=【3】;24}25returnp;26}27NODE*creatlist(inta[])28{NODE*h,*p,*q;inti;29h=NULL;30for(i=0;i<N;i++)31{q=(NODE*)malloc(sizeof(NODE);32q->data=a[i];33q->next=NULL;34if(h==NULL)h=p=q;35else{p->next=q;p=q;}36}37returnh;38}39voidoutlist(NODE*h)40{NODE*p;41p=h;42if(p==NULL)43printf(’’ThelistisNULL!\n’’);44else45{printf(’’\nHead’’);46do47{printf(’’->%d’’,p->data);48p=p->next;}49while(p!=NULL);50printf(’’->End\n’’);51}52}53main()54{NODE*head;55inta[N]={2,4,6,8,10);56head=creatlist(a);57printf(’’\nTheoriginallist:\n’’);58outliSt(head);59head=fun(head);60printf(’’\nThelistafterinverting:\n’’);61outlist(head);62}標(biāo)準(zhǔn)答案:(1)NODE(2)next(3)r知識點解析:填空1:本題考查了函數(shù)指針變量的函數(shù)返回值的類型,*fun(NODE*h)的返回值為p,而p的數(shù)據(jù)類型為NODE,因此本空應(yīng)該填寫NODE。填空2:從此空的形式p->可知本空應(yīng)該填寫next。填空3:本題要求將不帶頭結(jié)點的單向鏈表逆置,為了使q的指針向后移,此空應(yīng)該填寫r。三、程序修改題(本題共1題,每題1.0分,共1分。)42、給定程序MODIl.C中函數(shù)fun的功能是:將s所指字符串中位于奇數(shù)位置的字符或ASCII碼為偶數(shù)的字符放入t所指數(shù)組中(規(guī)定第一個字符放在第0位中)。例如,字符串中的數(shù)據(jù)為:AABBCCDDEEFF,則輸出應(yīng)當(dāng)是:ABBCDDEFF。請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#defimeN80voidfun(char*s,chart[]){inti,j=0;for(i=0;i<(int)strlen(s);i++)/***********found**********/if(i%2&&s[i]%2==0)t[j++]=s[i];/***********found**********/t[i]=’\0’;)msin(){chars[N],t[N];printf("\nPleaseenterstrings:");gets(s);fun(s,t);printf("\nq?heresultis:%s\n",t);}標(biāo)準(zhǔn)答案:(1)if(i%2||s[i]%2==0)或if(i%2!=0||s[i]%2==0)(2)t[j]=’\0’;或t[j]=0;知識點解析:(1)第一個錯誤標(biāo)識下的if條件應(yīng)該是判定字符是奇數(shù)位置或者ASCII碼是偶數(shù),原題中給出的是字符是奇數(shù)位置并且ASCII碼為偶數(shù),邏輯關(guān)系表達(dá)式不對,應(yīng)該是或的關(guān)系,所以“if(i%2&&s[i]%2==0)”,改為“if(i%2‖s[i]%2==0)”或“if(i%2!=0‖s[i]%2==0)”。(2)第二個標(biāo)識符下應(yīng)該是新生成的串尾加尾符標(biāo)志,新串的位置標(biāo)志變量是i,原題給出的i是原串的位置標(biāo)志變量,所以“t[i]=’\0’;”改為“t[j]=’\0’:”或“t[j]=0;”。四、程序設(shè)計題(本題共1題,每題1.0分,共1分。)43、請編寫函數(shù)fun(),該函數(shù)的功能是:移動一維數(shù)組中的內(nèi)容,若數(shù)組中有n個整數(shù),要求把下標(biāo)從p~n-1(p<n-1)的數(shù)組元素平移到數(shù)組的前面。例如,一維數(shù)組中的原始內(nèi)容為1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,p的值為6。移動后,一維數(shù)組的內(nèi)容應(yīng)為7,8,9,10,11,12,13,14,15,1,2,3,4,5,6。注意:請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句?!驹囶}源程序】#include#defineN80voidfun(int*w,intp,intn){}main(){inta[N]:{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};inti,p,n=15;printf("Theoriginaldata:\n");for(i=0;i<n;i++)printf(’%3d",a[i]);printf("\n\nEnterp:");seanf("%d",&p);fun(a,p,n);printf("\nThedataaftermoving:\n");for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\n");}標(biāo)準(zhǔn)答案:voidfun(int*w,intp,intn){inti,j,t;for(i=p;i<=n-1;i++){t=w[n-1];for(j=n-2;j>=0;j--)w[j+1]=w[j];w[0]=t;}知識點解析:本題采用“循環(huán)右移”的算法。國家二級(C語言)機試模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項目中包含一個源程序文件blank1.c。在此程序中,通過定義學(xué)生結(jié)構(gòu)體變量,存儲學(xué)生的學(xué)號、姓名和三門課的成績。函數(shù)fun的功能是:將形參a中的數(shù)據(jù)進(jìn)行修改,把修改后的數(shù)據(jù)作為函數(shù)值返回主函數(shù)進(jìn)行輸出。例如,若傳給形參a的數(shù)據(jù)中學(xué)號、姓名和三門課的成績依次是:10001、“ZhangSan”、95、80、88,修改后的數(shù)據(jù)應(yīng)為:10002、“LiSi”、96、81、89。請在程序的下劃線處填入正確的內(nèi)容并將下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<string.h>structstudent{longsno;charname[10];floatscore[3];};/*********found*********/【1】fun(structstudenta)(inti;a.sno=10002;/*********found*********/strcpy(【2】,"LiSi");/*********found*********/for(i=0;i<3;i++)【3】+=1;returna;}main(){struerstudents={10001,"ZhangSan",95,80,88},t;inti;printf("\n\nTheoriginaldata:\n");printf("\nNo:%ldName:%s\nScores:",s.sno,s.name);for(i=0;i<3;i++)printf("%6.2f",s.score[i]);printf("\n");t=fun(s);printf("\nThedataaftermodified:\n");printf("\nNo:%ldName:%s\nScores:",t.sno,t.name);for(i=0;i<3;i++)printf("%6.2f",t.score[i]);printf("\n");}標(biāo)準(zhǔn)答案:(1)structstudent(2)a.name(3)a.score[i]知識點解析:填空1:函數(shù)定義時,類型標(biāo)識符指明了本函數(shù)的類型,函數(shù)的類型實際上是函數(shù)返回值的類型。本題中,用結(jié)構(gòu)類型定義函數(shù)類型。填空2和填空3:此處考查結(jié)構(gòu)體變量成員的表示方法,a.name和a.score[i]分別表示學(xué)生的姓名和成績。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項目中包含一個源程序文件modi1.c。在此程序中,假定整數(shù)數(shù)列中的數(shù)不重復(fù),并存放在數(shù)組中。下列給定程序中函數(shù)fun的功能是:刪除數(shù)列中值為x的元素,變量n中存放數(shù)列中元素的個數(shù)。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#defineN20fun(int*a,intn,intx){intp=0,i;a[n]=x;while(x!=a[p])p=p+1;/*********found*********/if(p==n)return-1;else{for(i=P;i<n-1;i++)/*********found*********/a[i+1]=a[i];returnn-1;}}voidmain(){intw[N]={-3,0,1,5,7,99,10,15,30,90},x,n,i,n=10;printf("Tneorigianaldata:\n");for(i=0;i<n;i++)printf("%5d",w[i]);printf("\nInputx(todelete):");scanf("%d",&x);printf("Delete:%d\n",x);n=fun(w,n,x);if(n==1)printf("***Nobefound!***\n\n");else{printf("Thedataafterdeleted:\n");for(i=0;i<n;i++)printf("%5d",w[i]);printf("\n\n");}}標(biāo)準(zhǔn)答案:(1)if(p==n)return-1;(2)a[i]=a[i+1];知識點解析:(1)需要確定if條件語句的條件表達(dá)式,發(fā)現(xiàn)變量p大寫,C語言中變量是區(qū)別大小寫的。(2)刪除數(shù)列中的元素,刪除后,后面的元素依次前移一個位置,因此此處應(yīng)為a[i]=a[i+1];。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數(shù)fun,其功能是:將兩個兩位數(shù)的正整數(shù)a、b合并成一個整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個位數(shù)依次放在c數(shù)的個位和百位上,b數(shù)的十位和個位數(shù)依次放在c數(shù)的千位和十位上。例如,當(dāng)a=45,b=12時,調(diào)用該函數(shù)后,c=1524。注意:部分源程序給出如下。數(shù)據(jù)文件IN.DAT中的數(shù)據(jù)不得修改。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){}main(){inta,b;longc;printf("Inputa,b:");scanf("%d%d",&a,&b);fun(a,b,&c);printf("Theresultis:%ld\n",c);}標(biāo)準(zhǔn)答案:voidfun(inta,intb,long*c){/*b%10獲取b的個位,a/10獲取a的十位,a%10獲取a的個位,b/10獲取b的十位*/*c=a/10+(b%10)★10+(a%10)★100+(b/10)★1000;}知識點解析:本題主要的問題是如何取出a和b的個位數(shù)和十位數(shù),取出后如何表示成c中相應(yīng)的位數(shù)。由于a和b都是只有兩位的整數(shù),所以分別對它們除以10可得到它們的十位數(shù),分別用10對它們求余可得到它們的個位數(shù)。得到后對應(yīng)乘以1000、100、10、1即可得到c的千位數(shù)、百位數(shù)、十位數(shù)和個位數(shù)。注意使用c時要進(jìn)行指針運算。國家二級(C語言)機試模擬試卷第3套一、選擇題(本題共40題,每題1.0分,共40分。)1、以下對C語言中聯(lián)合類型數(shù)據(jù)的正確敘述是()。A、定義了聯(lián)合變量后,即可引用該變量或該變量中的任意成員B、一個聯(lián)合變量中可以同時存放其所有成員C、聯(lián)合中的各個成員使用共同的存儲區(qū)域D、在向聯(lián)合中的一個成員進(jìn)行賦值時,聯(lián)合中其他成員的值不會改變標(biāo)準(zhǔn)答案:C知識點解析:聯(lián)合體的幾個特點:①聯(lián)合體所占用的內(nèi)存空間為最長的成員所占用的空間;②各個成員分量全部是從低地址方向開始使用內(nèi)存單元;③聯(lián)合體中的空間在某一時刻只能保存某一個成員的數(shù)據(jù);④聯(lián)合體和結(jié)構(gòu)體可以任意嵌套。2、若二維數(shù)組a有m列,則在a[i][j]前的元素個數(shù)為()。A、j*m+iB、i*m+jC、j*m+i+1D、i*m+j+1標(biāo)準(zhǔn)答案:B知識點解析:二維數(shù)組的元素可以看成是按矩陣形式存放的,總是先存放第一行的元素,再存放第二行的元素。數(shù)組第一維的下標(biāo)是i,說明它前面還有i行,有i*m個元素,數(shù)組第二維的下標(biāo)是i,說明它前面還有j列,有j個元素,所以共有i*m+j個元素。3、設(shè)q1和q2是指向一個int型一維數(shù)組的指針變量,k為float型變量,下列不能正確執(zhí)行的語句是()。A、k=*q1*(*q2);B、q1=k;C、q1=q2;D、k=*q1+*q2;標(biāo)準(zhǔn)答案:B知識點解析:本題考查指針變量的賦值操作。選項A)是將指針q1和q2所指向的變量值相乘,然后賦給k;選項B)中,float型數(shù)據(jù)和指針型數(shù)據(jù)之間不能進(jìn)行賦值運算;選項C)中,是兩個指針變量之間的賦值;選項D)中,是兩個指針型變量所指向的兩個int型數(shù)據(jù)相加。4、有以下程序#include<stdio.h>main(){FILE*fp;inti=20,j=30,k,n;fp=fopen("d1.dat","w");fprintf(fp"%d\n",i);fprintf(fp,"%d\n",j);fclose(fp);fp=fopen("d1.dat","r");fscanf(fp"%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);}程序運行后的輸出結(jié)果是()。A、2030B、2050C、3050D、3020標(biāo)準(zhǔn)答案:A知識點解析:分析程序段,首先以只寫方式打開文件,利用fprintf函數(shù)將i和j的值寫入到文件dl.dat中,然后關(guān)閉文件:再以只讀方式打開文件,利用格式化輸入函數(shù)fscanf將文件中的數(shù)據(jù)賦值給k和n,最后輸出k和n的值,分別是20和30。5、若變量已正確定義并賦值,則錯誤的賦值語句是()。A、a+=a+1;B、a=sizeof(double);C、a=d∥c;D、a+1=a;標(biāo)準(zhǔn)答案:D知識點解析:賦值號“=”的左邊必須是一個變量名,不可以是表達(dá)式。6、以下函數(shù)實現(xiàn)按每行8個輸出w所指數(shù)組中的數(shù)據(jù):#include<stdio.h>voidfun(int*w,intn){inti;for(i=0;i<n;i++){______________printf("%d",w[i]);}printf("\n");}在橫線處瘦填入的話句是()。A、if(i/8==0)printf("\n");B、if(i/8==0)continue;C、if(i%8==0)printf("\n");D、if(i%8==0)continue;標(biāo)準(zhǔn)答案:C知識點解析:要按照每行8個輸出數(shù)據(jù)的話,橫線處語句的功能應(yīng)該為:當(dāng)i是8的倍數(shù)時(即i%8==0),輸出一個換行符。因此C選項正確。7、以下敘述中正確的是()。A、語句inta[8]={0};是合法的B、語句inta[]={0};是不合法的,遺漏了數(shù)組的大小C、語句chara[2]={"A","B"};是合法的,定義了一個包含兩個字符的數(shù)組D、語句chara[3];a="AB";是合法的,因為數(shù)組有三個字符空間的容量,可以保存兩個字符標(biāo)準(zhǔn)答案:A知識點解析:考查一維數(shù)組以及字符數(shù)組的初始化。初始化的時候可以只給數(shù)組的前面一部分元素設(shè)定初值,故A)正確。若對數(shù)組全部元素賦初值時,可以不指定數(shù)組元素的個數(shù),選項B)錯。字符數(shù)組中的每個元素為一個字符,需要用單引號,選項C)錯。定義字符數(shù)組時可以將字符串直接賦給該字符數(shù)組,其他情況則不可以,選項D)錯。答案選A)。8、數(shù)據(jù)結(jié)構(gòu)中,與所使用的計算機無關(guān)的是數(shù)據(jù)的()。A、存儲結(jié)構(gòu)B、物理結(jié)構(gòu)C、邏輯結(jié)構(gòu)D、線性結(jié)構(gòu)標(biāo)準(zhǔn)答案:C知識點解析:數(shù)據(jù)的邏輯結(jié)構(gòu)反映的是數(shù)據(jù)元素之間的邏輯關(guān)系,與使用的計算機無關(guān)。9、下列數(shù)據(jù)結(jié)構(gòu)中,能夠按照“先進(jìn)后出”原則存取數(shù)據(jù)的是()。A、循環(huán)隊列B、棧C、隊列D、二叉樹標(biāo)準(zhǔn)答案:B知識點解析:棧是按“先進(jìn)后出”的原則組織數(shù)據(jù)的;隊列是按“先進(jìn)先出”的原則組織數(shù)據(jù)的,因此本題答案為B。10、待排序的關(guān)鍵碼序列為(15,20,9,30,67,65,45,90),要按關(guān)鍵碼值遞增的順序排序,采取簡單選擇排序法,第一趟排序后關(guān)鍵碼15被放到第()個位置。A、2B、3C、4D、5標(biāo)準(zhǔn)答案:A知識點解析:選擇排序的基本思想是掃描整個線性表,從中選出最小的元素,將它交換到表的最前面,然后對剩下的子表采用同樣的方法,直到子表為空。所以第一趟排序后,將選出最小的元素9放在第一個位置,元素15則放在第二個位置。11、下列選項中,不能作為合法常量的是()。A、1.234e04B、1.234e0.4C、1.234e+4D、1.234e0標(biāo)準(zhǔn)答案:B知識點解析:用指數(shù)形式表示的實型常量需注意兩點:①e或E后面的指數(shù)必須是整數(shù):②指數(shù)必須是不超過數(shù)據(jù)表示范圍的正負(fù)整數(shù),并且在e或E前必須有數(shù)字。12、有以下程序段:#includeinta,b,c;a=10;b=50;c=30;if(a>b)a=b,b=c;c=a;prinff(“a=%db=%dc=%d\n”,a,b,c);程序運行后的輸出結(jié)果是()。A、a=10b=50c=30B、a=10b=50c=10C、a=10b=30c=10D、a=50b=30c=50標(biāo)準(zhǔn)答案:B知識點解析:本題中a>b的條件不滿足,所以不執(zhí)行逗號表達(dá)式a=b,b=c;的操作,而是執(zhí)行c=a操作,即c的值為10。13、有以下程序:#include<stdio.h>main(){chaurx=2,y=2,z;z=(y<<1)&(x>>1);pnnff("%d\n",z);}程序的輸出結(jié)果是()。A、1B、0C、4D、8標(biāo)準(zhǔn)答案:B知識點解析:本題考查位運算<<和&。y<<1為4,x>>1為1,二者與運算后為0,故B選項正確。14、以下程序運行后的輸出結(jié)果是()。#includevoidreverse(inta[],intn){inti,t;for(i=0;iA、27B、6C、25D、30標(biāo)準(zhǔn)答案:B知識點解析:本題考查函數(shù)調(diào)用時的參數(shù)傳遞。函數(shù)reverse將數(shù)組b進(jìn)行了逆置,此時b[10]={10,9,8,7,6,5,4,3,2,1},后面for語句的功能是將b中的后3個數(shù)累加,并將結(jié)果放在s中,最后將s輸出,結(jié)果s=1+2+3=6。15、在數(shù)據(jù)處理中,其處理的最小單位是()。A、數(shù)據(jù)B、數(shù)據(jù)項C、數(shù)據(jù)結(jié)構(gòu)D、數(shù)據(jù)元素標(biāo)準(zhǔn)答案:B知識點解析:數(shù)據(jù)元素是由多個數(shù)據(jù)項組成,數(shù)據(jù)是能夠被計算機識別、存儲和加工處理的信息載體,數(shù)據(jù)處理的最小單位是數(shù)據(jù)項。16、若變量已正確定義為int型,要通過語句scanf("%d,%d,%d",&a,&b,&c);給a賦值1、給b賦值2、給c賦值3,以下輸入形式中錯誤的是(注:□代表一個空格符)A、1,2,3<回車>B、□□□1,2,3<回車>C、1,□□□2,□□□3<回車>D、1□2□3<回車>標(biāo)準(zhǔn)答案:D知識點解析:scanf()的格式控制串可以使用其他非空白字符,如本題中的逗號,但在輸入時必須輸入這些字符,以保證匹配,所以逗號必須輸入。17、設(shè)有如下關(guān)系表:則下列操作正確的是()。A、T=R/SB、T=R×SC、T=R∩SD、T=∪US標(biāo)準(zhǔn)答案:C知識點解析:T就是關(guān)系R中有的,同時S中也有的有序組(4、5、6),即交運算(∩)。18、有如下程序#include<stdio.h>main(){inti,data;scanf("%d",&data);for(i=0;i<5;i++){if((i<data&&i%2)||(i>data&&i%3==0))continue;printf("%d,",i);程序運行時,從鍵盤輸入:13<回車>后,程序輸出結(jié)果為()。A、0,2.4,B、1,3,5,C、0,1,2.3,4,5,D、0,1,2,3,標(biāo)準(zhǔn)答案:A知識點解析:程序通過scanf()函數(shù),輸入data的值13,for循環(huán)中,i的值遍歷0~4,對每個i的值執(zhí)行if語句判斷,其中:i>data始終為假;所以表達(dá)式i>data&&i%3==0始終為假;所以if語句的判斷條件需要看i<data&&i%2的值,由于i<data始終為真,所以i<data&&i%2的值又取決于i%2的值,也就是說整個if語句的判斷條件取決于i%2的值,如果i%2為真,那么if語句成立,執(zhí)行continue,否則執(zhí)行printf()函數(shù),所以當(dāng)i取值l、3時,i%2的為1,if條件成立,執(zhí)行continue;當(dāng)i取值0、2、4時,i%2的值為0,if條件不成立,執(zhí)行printf()函數(shù),輸出0,2,4,本題答案為A。19、設(shè)有如下的程序段:charstr[]="HelloWorld";char*ptr;ptr=str;執(zhí)行上面的程序段后,*(ptr10)的值為()。A、’\0’B、’0’C、不確定的值D、’0’的地址標(biāo)準(zhǔn)答案:A知識點解析:本題涉及字符數(shù)組和指針兩個知識點:①在C語言中,字符數(shù)組在存放字符串時會自動在末尾加上’\0’,所以題中數(shù)組s仃有11個元素;②ptr指向數(shù)組str的首地址,ptr+10是指向str[10],*(ptr+10)是引用str[10]的值(即結(jié)束符’\0’)。20、下列關(guān)于二叉樹的敘述中,正確的是()。A、葉子結(jié)點總是比度為2的結(jié)點少一個B、葉子結(jié)點總是比度為2的結(jié)點多一個C、葉子結(jié)點數(shù)是度為2的結(jié)點數(shù)的兩倍D、度為2的結(jié)點數(shù)是度為1的結(jié)點數(shù)的兩倍標(biāo)準(zhǔn)答案:B知識點解析:根據(jù)二叉樹的基本性質(zhì)3:在任意一棵二叉樹中,度為0的葉子結(jié)點總是比度為2的結(jié)點多一個。所以選擇B21、下列程序的運行結(jié)果是()。#inc1udevoidsub(int*s,int*y){staticintm=4;*y:s[m];m——;}voidmain(){inta[]={1,2,3,4,5},k,x;printf("\n");for(k=0;k<=4;kH){sub(a,&x);printf("%d,",x);}}A、5,4,3,2,1,B、1,2,3,4,5,C、0,0,0,0,0,D、4,4,4,4,4,標(biāo)準(zhǔn)答案:A知識點解析:本題考查的是靜態(tài)變量以及函數(shù)的實參與形參之間的地址值傳遞。sub()函數(shù)中定義的變量m是一個靜態(tài)變量,系統(tǒng)可為其分配固定的存儲空間,重復(fù)使用時,變量的值保留;所以當(dāng)main()函數(shù)中的for循環(huán)中語句“sub(a,&X)”;執(zhí)行時,sub函數(shù)中m的值依次是4、3、2、1、0:因為變量x進(jìn)行的是地址值傳遞,所以最后依次輸出的是數(shù)組a的元素a[4]、a[3]、a[2]、a[1]、a[0]。22、已知一個文件中存放若干工人檔案記錄,其數(shù)據(jù)結(jié)構(gòu)如下:structa{charnumber[100];intage;floatp[6];};定義一個數(shù)組:structab[10];假定文件已正確打開,不能正確地從文件中讀入10名工人數(shù)據(jù)到數(shù)組b中的是()。A、fread(b,sizeof(structa),10,fp);B、for(i=0;i<10;i++)fread(b[i],sizeof(structa),1,fp);C、for(i=0;i<10;i++)fread(b+i,sizeof(structa),1,fp));D、for(i=0;i<5;i+=2)fread(b+i,sezeof(structa),2,fp);標(biāo)準(zhǔn)答案:B知識點解析:數(shù)據(jù)塊輸入/輸出函數(shù)的調(diào)用格式為:fread(buffer,size,count,fp),其中:“buffer”是一個指針,對于fread來說,它是讀入數(shù)據(jù)的存放地址?!皊ize”是要讀寫的字節(jié)數(shù);“count”是要進(jìn)行讀寫多少個size字節(jié)的數(shù)據(jù)項;“fp”是指文件型指針。選項B中b[i]是一個數(shù)組,不是指針,需改為&b[i]。23、設(shè)有以下函數(shù):voidfun(intn,char*s){……}則下面對函數(shù)指針的定義和賦值均正確的是()。A、void(*pf)(int,char);pf=&fun;B、void*pf();pf=fun;C、void*pf();*pf=fun;D、void(*pf)(int,char*);pf=fun;標(biāo)準(zhǔn)答案:D知識點解析:函數(shù)的參數(shù)可以是指針類型。它的作用是將一個變量的地址傳送到另一個函數(shù)中。函數(shù)名代表函數(shù)的人口地址,指向函數(shù)的指針應(yīng)該定義為void(*pf)()。如果定義為void*pf(),則表示函數(shù)pf返回值為一個基類型為void的指針。因此D選項正確。24、以下選項中可用做C程序合法實數(shù)的是()。A、3.0e0.2B、.1e0C、E9D、9.12E標(biāo)準(zhǔn)答案:B知識點解析:A選項中e后面的指數(shù)必須為整數(shù),所以錯誤。C語言規(guī)定,E之前必須要有數(shù)字,所以C選項錯誤。E后面必須要有數(shù)字,且必須為整數(shù),所以D選項錯誤。25、有以下程序:#include<stdio.h>main(){inta=5,b=1,t;t=(a<<2)Ib;printf("%d\n",t);}程序運行后的輸出結(jié)果是()。A、1B、11C、6D、21標(biāo)準(zhǔn)答案:D知識點解析:本題考查位運算,以及按位或操作,將a左移一位相當(dāng)于是將8乘以了4,所以a<<2等于20,二進(jìn)制表示為00010100,與b按位或得到00010101。即21,所以選項D正確。26、下列關(guān)于二叉樹的敘述中,正確的是()。A、葉子結(jié)點總是比度為2的結(jié)點少一個B、葉子結(jié)點總是比度為2的結(jié)點多一個C、葉子結(jié)點數(shù)是度為2的結(jié)點數(shù)的兩倍D、度為2的結(jié)點數(shù)是度為1的結(jié)點數(shù)的兩倍標(biāo)準(zhǔn)答案:B知識點解析:根據(jù)二叉樹的基本性質(zhì)3:在任意一棵二叉樹中,度為0的葉子結(jié)點總是比度為2的結(jié)點多一個。所以選擇B。27、有以下程序:#include#includemain(){charstr[][zo]={"One*World","One*Dream!"},*P=str[1];printf("%d,",strlen(P));printf("%s\n",P);程序運行后的輸出結(jié)果是()。A、10,One*Dream!B、9,One*Dream!C、9,One*WoddD、10,One*World標(biāo)準(zhǔn)答案:A知識點解析:p是指向二維字符數(shù)組第二行“One*Dream!”的數(shù)組指針,所以長度是10,打印輸出的也是該字符串。28、以下選項中關(guān)于C語言常量的敘述錯誤的是()。A、經(jīng)常被使用的變量可以定義成常量B、常量分為整型常量、實型常量、字符常量和字符串常量C、常量可分為數(shù)值型常量和非數(shù)值型常量D、所謂常量,是指在程序運行過程中,其值不能被改變的量標(biāo)準(zhǔn)答案:A知識點解析:C語言中,常量是指在程序運行過程中其值不能被改變的量,變量是指運行過程中其值可以改變的量,二者不能混淆,所以A選項錯誤。29、以下敘述中正確的是A、continue語句的作用是:使程序的執(zhí)行流程跳出包含它的所有循環(huán)B、break語句只能用在循環(huán)體內(nèi)和switch語句體內(nèi)C、在循環(huán)體內(nèi)使用break語句和continue語句的作用相同D、break語句只能用于switch語句體中標(biāo)準(zhǔn)答案:B知識點解析:continue語句的作用是:跳過循環(huán)體中剩余的語句而進(jìn)行下一次循環(huán),所以A選項錯誤,Break語句的作用是終止正在執(zhí)行的switch流程,跳出switch結(jié)構(gòu)或者強制終止當(dāng)前循環(huán),從當(dāng)前執(zhí)行的循環(huán)中跳出,所以C,D選項錯誤。30、輸出語句:printf("%d\n",11+011);的輸出結(jié)果是()。A、20B、22C、022D、021標(biāo)準(zhǔn)答案:A知識點解析:printf("%d\n",11+011),11為十進(jìn)制,011為八進(jìn)制形式,打印格式%d表示十進(jìn)制格式輸出,因此。先將八進(jìn)制數(shù)轉(zhuǎn)化為十進(jìn)制,011(8)=81*1+1*80=9。相當(dāng)于printf("%d\n",11+9),故答案為20,A選項正確。31、有以下程序:#includemain(){intm=20;while(m--);printf(’’y=%d\n’’,m);}程序執(zhí)行后的輸出結(jié)果是()。A、m=-1B、m=0C、m=1D、while構(gòu)成無限循環(huán)標(biāo)準(zhǔn)答案:A知識點解析:注意while循環(huán)體為空語句,m是先使用值再減1,所以當(dāng)m=0時退出循環(huán),再減1,結(jié)果為一1。32、以下結(jié)構(gòu)體說明和變量定義中,正確的是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知識點解析:本題考查typedef的使用方法,typedef對已存在的類型使用一個新的名字,選項A中ABC為新的類型別名,定義正確。33、有以下程序#include<stdio.h>main(){charc[2][5]={"6938","8254"},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=c[i];for(i=0;i<2;i++)for(j=0;p[i][j]>0;j+=2)s=10*s+p[i][j]-’0’;printf("%d\n",s);}程序運行后的輸出結(jié)果是A、6938B、9824C、4528D、6385標(biāo)準(zhǔn)答案:D知識點解析:本題中首先是將二維字符數(shù)組c賦值指針數(shù)組p,然后遍歷p找到兩個字符串中的偶數(shù)位置的字符并組成一個數(shù)值輸出,根據(jù)代碼執(zhí)行即可得到結(jié)果為638534、以下程序的運行結(jié)果是()。#includemain(){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知識點解析:邏輯與(&&)運算符的功能是:當(dāng)“&&”運算符兩邊的運算對象均為1時,整個表達(dá)式的值為1,否則為0。因為a=3<b=4,即m=0,所以整個表達(dá)式的值為0。35、有以下程序:#include<stdio.h>main(){FILE*pf;char*s1="China",*s2="Beijing";pf=fopen("abc.dat","wb+");fwrite(s2,7,1,pf);rewind(pf);/*文件位置指針回到文件開頭*/fwrite(s1,5,1,pf);fclose(pf);}以上程序執(zhí)行后abc.dat文件的內(nèi)容是()。A、ChinaB、ChinangC、ChinaBeijingD、BeijingChina標(biāo)準(zhǔn)答案:B知識點解析:本題考查函數(shù)fwrite的使用。函數(shù)fwrite的調(diào)用形式為:intfwrite(char*pt,unsignedn,F(xiàn)ILE*fp);其功能是把pt所指向的n*size個字節(jié)輸出到fp所指文件中,第二次調(diào)用該函數(shù)時,從文件的第一個位置開始寫入,之前已有的會被覆蓋掉,如果第二次寫入的長度沒有第一次的長,則后面短出的部分保留原樣。36、有以下程序#include<ctype.h>#include<stdio.h>longfun(chars[]){longn;intsign;for(;isspace(*s);s++);sign=(*s==’-’)?-1:1;if(*s==’+’||*s==’-’)s++;for(n=0;isdigit(*s);s++)n=10*n+(*s-’0’);returnsign*n;}main(){chars[]="-26a3";printf("%d\n",fun(s));}程序運行后的輸出結(jié)果是A、-263B、2C、0D、-26標(biāo)準(zhǔn)答案:D知識點解析:isspace(c)檢查參數(shù)c是否為空格字符,也就是判斷是否為空格('')、水平定位字符('\t')、歸位鍵('\r')、換行('\n')、垂直定位字符('\v')或翻頁('\f')的情況。若參數(shù)c為空格字符,則返回TRUE,否則返回NULL(0)。Isdigit(c)函數(shù)檢查參數(shù)c是否為阿拉伯?dāng)?shù)字0到9。返回值若參數(shù)c為阿拉伯?dāng)?shù)字,則返回TRUE,否則返回NULL(0)。fun()函數(shù)的第一個for循環(huán)判斷字符串是否負(fù)號。第二個for循環(huán)獲取符號后面的數(shù)字字符,并將它們轉(zhuǎn)化為整數(shù)。遇到了非數(shù)字的字符跳出,最后返回數(shù)組的結(jié)果。因此,可知首先獲取負(fù)號,緊接著獲取數(shù)值26,遇到了字符a,跳出返回-26,因此打印的結(jié)果是-26。故答案為D選項37、35.以下敘述中錯誤的是()。A、可以給指針變量賦一個整數(shù)作為地址值B、函數(shù)可以返回地址值C、改變函數(shù)形參的值,不會改變對應(yīng)實參的值D、當(dāng)在程序的開頭包含頭文件stdio.h時,可以給指針變量賦NULL標(biāo)準(zhǔn)答案:A知識點解析:不能將一個整數(shù)直接賦給指針變量作為地址,所以A)是錯誤的。函數(shù)的返回值可以是地址,即指針。函數(shù)調(diào)用中形參值的變化不會傳遞給實參。38、執(zhí)行以下程序段后,w的值為()。intw=’A’,x=14,y=15;w=((x‖y)&&(w<’a’));A、-1B、NULLC、1D、0標(biāo)準(zhǔn)答案:C知識點解析:字符變量w的初值為字符“’A’”,其ASCII碼值為65,字符“’A’”的ASCII碼值為97,所以關(guān)系表達(dá)式“W<’a’”的值為1;變量x=14,變量y=15,“x‖y”為或,x、y均為真,所以x‖y的結(jié)果1。因而邏輯表達(dá)式“(x‖y)&&(w<’a’)”的值為1。39、算法的時間復(fù)雜度是指()。A、算法的長度B、執(zhí)行算法所需要的時間C、算法中的指令條數(shù)D、算法執(zhí)行過程中所需要的基本運算次數(shù)標(biāo)準(zhǔn)答案:D知識點解析:算法的時間復(fù)雜度,是指執(zhí)行算法所需要的工作量,可以用算法在執(zhí)行過程中所需基本運算的執(zhí)行次數(shù)來度量算法的工作量。40、設(shè)某二叉樹的后序序列為CBA,中序序列為ABC,則該二叉樹的前序序列為()。A、BCAB、CBAC、ABCD、CAB標(biāo)準(zhǔn)答案:C知識點解析:后序序列為CBA,中序序列為ABC,則說明,A為根結(jié)點,并且B和C均在A的右子樹上;結(jié)點B和C中,后序序列為CB,中序序列為BC,則說明結(jié)點C在結(jié)點B的右子樹上,根據(jù)分析可得,該二叉樹的前序序列為ABC,答案選C。二、程序填空題(本題共1題,每題1.0分,共1分。)41、給定程序中,函數(shù)fun的功能是:統(tǒng)計出帶有頭結(jié)點的單向鏈表中結(jié)點的個數(shù),存放在形參n所指的存儲單元中。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!1#include<stdio.h>2#include<stdlib.h>3#defineN84typedefstructlist5{intdata;6structlist*next;7}SLIST;8SLIST*creatlist(int*a);9voidoutlist(SLIST*);10voidfun(SLIST*h,int*n)11{SLIST*p;12/**********found**********/13___1___=0;14p=h->next;15while(p)16{(*n)++;17/**********found**********/18p=p->___2___;19}20}21msin()22{SLIST*head;23inta[N]={12,87,45,32,91,16,20,48},num;24head=creatlist(a);outlist(head);25/**********found**********/26fun(__3__,&num);27printf(’’\nnumber=%d\n’’,num);28}29SLIST*creatliSt(inta[])30{SLIST*h,*p,*q;inti;31h=p=(SLIST*)malloc(sizeof(SLIST));32for(i=0;i<N;i++)33{q=(SLIST*)malloc(sizeof(SLIST));34q->data=a[i];p->next=q;p=q;35}36p->next=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國PVC磨砂袋市場調(diào)查研究報告
- 2025至2031年中國橡膠汽車定位器行業(yè)投資前景及策略咨詢研究報告
- 2025至2031年中國奧古曼膠合板行業(yè)投資前景及策略咨詢研究報告
- 國際快遞服務(wù)合同樣式
- 國際游輪旅客服務(wù)協(xié)議
- 煤炭經(jīng)銷商合作協(xié)議范本
- 別墅裝修合同延期施工方案
- 消防工程項目經(jīng)理的合同管理職責(zé)
- 家庭室內(nèi)裝修施工措施
- 基坑支護(hù)設(shè)計與施工措施分析
- 第7課《中華民族一家親》(第一課時)(說課稿)2024-2025學(xué)年統(tǒng)編版道德與法治五年級上冊
- 2024年醫(yī)銷售藥銷售工作總結(jié)
- 急診科十大護(hù)理課件
- 山東省濟寧市2023-2024學(xué)年高一上學(xué)期1月期末物理試題(解析版)
- GB/T 44888-2024政務(wù)服務(wù)大廳智能化建設(shè)指南
- 2025年上半年河南鄭州滎陽市招聘第二批政務(wù)輔助人員211人筆試重點基礎(chǔ)提升(共500題)附帶答案詳解
- 山東省濟南市歷城區(qū)2024-2025學(xué)年七年級上學(xué)期期末數(shù)學(xué)模擬試題(無答案)
- 國家重點風(fēng)景名勝區(qū)登山健身步道建設(shè)項目可行性研究報告
- 投資計劃書模板計劃方案
- 《接觸網(wǎng)施工》課件 3.4.2 隧道內(nèi)腕臂安裝
- 2024-2025學(xué)年九年級語文上學(xué)期第三次月考模擬卷(統(tǒng)編版)
評論
0/150
提交評論