版權(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ī)試(程序填空題)模擬試卷1(共9套)(共45題)國(guó)家二級(jí)C語(yǔ)言機(jī)試(程序填空題)模擬試卷第1套一、程序填空題(本題共5題,每題1.0分,共5分。)1、給定程序中,函數(shù)fun的功能是:求ss所指字符串?dāng)?shù)組中長(zhǎng)度最短的字符串所在的行下標(biāo),作為函數(shù)值返回,并把其串長(zhǎng)放在形參n所指變量中。ss所指字符串?dāng)?shù)組中共有M個(gè)字符串,且串長(zhǎng)#include{}defineM5{}defineN20intfun(char(*ss)[N],int*n){inti,k=0,len=N;/**********found**********/for(i=0;i<___1___;i++){len=strlen(ss[i]);if(i==0)*n=len;/**********found**********/if(len___2___*n){*n=len;k=i;}}/**********found**********/Eeturn(___3___);}main(){charss[M][N]:{"shanghai","guangzhou","beijing","tianjing","chongqing"};intn,k,i;printf("\nTheoriginalstringsare:\n");for(2=0;i標(biāo)準(zhǔn)答案:(1)M(2)<(3)k知識(shí)點(diǎn)解析:第一空:循環(huán)的目的是在M個(gè)字符串中尋找長(zhǎng)度最短的字符串,因此循環(huán)變量i從0變化到M-1,故第一空處應(yīng)為“M”。第二空:*n記錄最小字符串的長(zhǎng)度,由審題分析可知,字符串ss[i]長(zhǎng)度比min小,則交換最小長(zhǎng)度值和下標(biāo)位置,故第二空處應(yīng)為“<”。第三空:變量k記錄了最小字符串的下標(biāo)位置,函數(shù)的返回值是最短的字符串所在的行下標(biāo),故第三空處應(yīng)為“k”。2、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:將a所指3×5矩陣中第k列的元素左移到第0列,第k列以后的每列元素行依次左移,原來(lái)左邊的各列依次繞到右邊。例如,有下列矩陣:123451234512345若k為2,程序執(zhí)行結(jié)果為345123451234512請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#defineM3#defineN5voidfun(int(*a)[N],intk){inti,j,p,temp;/*********found*********/for(p=1;p<=【1】;p++)for(i=0;i<M;i++){temp=a[i][0];/*********found*********/for(j=0;j<【2】;j++)a[i][j]=a[i][j+1];/*********found*********/a[i][N﹣1]=【3】;}}main(){intx[M][N]=f{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5}},i,j;printf("Thearraybeforemoving:\n\n");for(i=0;i<M;i++){for(j=0;j<N;j++).printf("%3d",x[i][j]);printf("\n"),}fun(x,2);printf("Thearrayaftermoving:\n\n");for(i=0;i<M;i++){for(j=0;j<N;j++)printf("%3d",x[i][j]),printf("\n");}}標(biāo)準(zhǔn)答案:(1)k(2)N﹣1(3)temp知識(shí)點(diǎn)解析:填空1:外循環(huán)p的值為數(shù)組移動(dòng)的次數(shù),試題要求第k列左移,則需要移動(dòng)的次數(shù)為k,所以應(yīng)填k。填空2:矩陣共N列,所以應(yīng)填N﹣1。填空3:臨時(shí)變量temp中存放的值為數(shù)組最左邊元素的值,需要把temp放到數(shù)組的末尾,即放到a[i][N﹣1]中,所以應(yīng)填temp。3、給定程序中,函數(shù)fun的功能是:將形參指針?biāo)附Y(jié)構(gòu)體數(shù)組中的三個(gè)元素按Bum成員進(jìn)行升序排列。請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。注:卷:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>typedefstructintnum;charname[10];}PERSON;/******found******/voidfun(PERSON____1____){/******found******/____2____temp;if(std[0].num>std[1].num){temp=std[0];std[0]=std[1j;std[1]=temp;}if(std[0].num>std[2].Hum){temp=std[0];std[0]=std{2];std[2]=temp;}if(std[1].num>std[2].num){temp=std[1];std[1]=std[2];std[2]=temp;}}main(){PERSONstd[]={5,″Zhanghu″,2,″WangLi″,6,″LinMin″};inti;/******found******/fun(___3___);printf(″\nTheresultis:\n″);for(i=0;i<3;i++)printf(″%d,%s\n″,std[i].num,std[i].name);}標(biāo)準(zhǔn)答案:(1)std[](2)PERSON(3)std知識(shí)點(diǎn)解析:本題考查:數(shù)據(jù)類型的定義;數(shù)組元素的操作;函數(shù)參數(shù)的傳遞。要使用函數(shù)對(duì)整個(gè)數(shù)組進(jìn)行操作時(shí),應(yīng)使用數(shù)組名作為函數(shù)的實(shí)參。當(dāng)使用數(shù)組名作實(shí)參時(shí),函數(shù)傳遞的實(shí)際上是數(shù)組的首地址,而并非數(shù)組本身,此時(shí)形參除了可以定義為指針變量外,還可以定義為數(shù)組,并且數(shù)組可以不指定大小。但無(wú)論用哪種形式,程序在編譯時(shí)都將其作為一個(gè)指針變量處理。填空1:定義形參變量引用數(shù)組std,此時(shí)形參可以定義為指針變量,也可以定義為數(shù)組。由下文可知,程序是通過(guò)數(shù)組下標(biāo)對(duì)數(shù)組元素進(jìn)行操作的,因此形參應(yīng)使用數(shù)組形式,而非指針形式。填空2:程序使用變量temp交換結(jié)構(gòu)體數(shù)組元素的值,因而temp應(yīng)定義為PERSON型。填空3:程序通過(guò)函數(shù)fun對(duì)數(shù)組std進(jìn)行操作,因此函數(shù)的實(shí)參應(yīng)為std。4、給定程序中,函數(shù)fun的功能是:有N×N矩陣,將矩陣的外圍元素順時(shí)針旋轉(zhuǎn)。操作順序是:首先將第一行元素的值存入臨時(shí)數(shù)組r,然后使第一列成為第一行,最后一行成為第一列,最后一列成為最后一行,臨時(shí)數(shù)組中的元素成為最后一列。例如,若N=3,有下列矩陣:123計(jì)算結(jié)果為741456852789963請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#defineN4voidfun(int(*t)[N]){intj,r[N];t[0][N—j—1]=t[j][____1____];for(j=N—l;j>=0;2)t[N—1][N—1—j]=t[j][N—1];for(j=N—l;j>=0;j——)t[j][N—lJ=r[____3____];}main(){intt[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j;printf("\nTheoriginalarray:\n");{for(j=0;j標(biāo)準(zhǔn)答案:(1)0(2)j——(3)j知識(shí)點(diǎn)解析:函數(shù)fun操作順序是:首先將第一行元素的值存入臨時(shí)數(shù)組r,然后使第一列成為第一行,最后一行成為第一列,最后一列成為最后一行,臨時(shí)數(shù)組中的元素成為最后一列。第一空:由審題分析可知,此處是使第一列成為第一行,即把第一列元素移動(dòng)到第一行,第一列元素是“t[j][0]”,第一行元素是“t[0][N—j—1]”,故第一空處應(yīng)為“0”。第二空:第四個(gè)循環(huán)是最后一列成為最后一行,即將最后一列移動(dòng)到最后一行,“for(j=N—1;j>=0;____2____)”循環(huán)變量j從N一1開始,到0結(jié)束,共循環(huán)N次,故j每次減1,第三空處是“j——”。第三空:最后一個(gè)循環(huán)將臨時(shí)數(shù)組中的元素成為最后1列,即“t[j][N—1]=r[j]”,故第三空處應(yīng)為“j”。5、給定程序中,函數(shù)fun的功能是:計(jì)算形參x所指數(shù)組中N個(gè)數(shù)的平均值(規(guī)定所有數(shù)均為正數(shù)),作為函數(shù)值返回;并將大于平均值的數(shù)放在形參y所指數(shù)組中,在主函數(shù)中輸出。例如,有10個(gè)正數(shù):4630324061745154826,平均值為:30.500000主函數(shù)中輸出:4632404548請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#defineN10doublefun(doublex[],double*y){inti,j;doubleav;/*********found**********/av=____1____;for(i=0;iav)y[____3____]=x[i];returnav;}main(){inti;doublex[Nlry[Nl;for(i=0;i=0;1++)printfprintf("\n");}標(biāo)準(zhǔn)答案:(1)0(2)x[i]/N(3)j++知識(shí)點(diǎn)解析:函數(shù)fun的功能是計(jì)算形參x所指數(shù)組中N個(gè)數(shù)的平均值,同時(shí)利用傳址參數(shù)傳回平均值。第一空:“returnav,”可知變量av保存了平均值,故第一空處av初始化應(yīng)為0,即第一空處應(yīng)填”0”。第二空:“for(i=0;iav)y[____3____]=x[il;,,是將x[i]保存在y所指的數(shù)組中,i是循環(huán)變量,j初始化為0,故y[]的計(jì)數(shù)變量為j,故第三空處應(yīng)為“j++”。國(guó)家二級(jí)C語(yǔ)言機(jī)試(程序填空題)模擬試卷第2套一、程序填空題(本題共5題,每題1.0分,共5分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,函數(shù)fun的作用是:統(tǒng)計(jì)整型變量m中各數(shù)字出現(xiàn)的次數(shù),并存放到數(shù)組a中,其中:a[0]存放0出現(xiàn)的次數(shù),a[1]存放1出現(xiàn)的次數(shù),…,a[9]存放9出現(xiàn)的次數(shù)。例如,若m為14579233,則輸出結(jié)果應(yīng)為:0,1,1,2,1,1,0,1,0,1,請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>voidfun(intm,inta[10]){inti;for(i=0;i<10;i++)/*********found*********/【1】=0;while(m>0){/*********found*********/i=【2】;a[i]++;/*********found*********/m=【3】;}}main(){intm,a[10],i;printf("請(qǐng)輸入一個(gè)整數(shù):"),scanf("%d",&m);fun(m,a);for(i=0,i<10;i++)printf("%d,",a[i]);printf("\n");}標(biāo)準(zhǔn)答案:(1)a[i](2)m%10(3)m/10知識(shí)點(diǎn)解析:數(shù)組a各元素初始化為0,用求余和整除相結(jié)合的方法得到數(shù)字的每一位數(shù)字,并用它做為數(shù)組a的下標(biāo),相應(yīng)元素加1。填空1:數(shù)組a的10個(gè)元素賦值為0。填空2:m%10可得到數(shù)m的最后一位數(shù)字。填空3:m/10可使數(shù)字截短,即去掉最后一位。2、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:將形參n中,各位上為偶數(shù)的數(shù)取出,并按原來(lái)從高位到低位的順序組成一個(gè)新數(shù),作為函數(shù)值返回。例如,從主函數(shù)輸入一個(gè)整數(shù)27638496,則函數(shù)返回值為26846。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并將下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>unsignedlongfun(unsignedlongn){unsignedlongx=0,s,i;intt;s=n;/*********found*********/i=【1】;/*********found*********/while(【2】){t=s%10;if(t%2==0){/*********found*********/x=x+t*i;i=【3】;}s=s/10;}returnx;}main(){unsignedlongn=﹣1;while(n>99999999||n<0){printf("Pleaseinput(0<n<100000000):");scanf("%ld",&n);}printf("\nTheresultis:%ld\n",fun(n));}標(biāo)準(zhǔn)答案:(1)1(2)s>0(3)i*10知識(shí)點(diǎn)解析:填空1:變量i用來(lái)控制被取出的偶數(shù)在新數(shù)中的位置,應(yīng)賦初值1。3、下列給定程序中,函數(shù)fun的功能是:將形參s所指字符串中的所有字母字符順序前移,其他字符順序后移,處理后將新字符串的首地址作為函數(shù)值返回。例如,若S所指字符串為“asdl23fgh543df”,處理后新字符串為“asdfghdf123543”。請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<stdlib.h>#include<string.h>char*fun(char*s){inti,j,k,n;char*p,*t;n=str1en(s)+1;t=(char*)malloc(n*sizeof(char));p=(char*)malloc(n*si一zeof(char));j=0;k=0;for(i=0;i<n;i++){if(((s[i]>=’a’)&&(s[i]<=’z))||((s[i]>=’A’)&&(s[i]<=’Z’))){/*********found*********/t[j]=【1】;j++;}else{p[k]=s[i];k++;)}/*********found*********/for(i=0;i<【2】;i++)t[j+i]=p[i];/*********found*********/t[j+k]=【3】;returnt;}main(){chars[80];printf("Pleaseinput:");scanf("%s",s);printf("\nTheresultis:%s\n",fun(s));}標(biāo)準(zhǔn)答案:(1)s[i](2)k(3)’\0’或0知識(shí)點(diǎn)解析:填空1:將字符串s中所有字母元素賦給數(shù)組t。填空2:字符串中所有非字母元素放到字母元素后面,所以i的取值范圍是0一k。填空3:最后給字符串加入結(jié)束標(biāo)識(shí)‘\0’。4、程序通過(guò)定義學(xué)生結(jié)構(gòu)體變量,存儲(chǔ)學(xué)生的學(xué)號(hào)、姓名和三門課的成績(jī)。函數(shù)fun的功能是:將形參a中的數(shù)據(jù)進(jìn)行修改,把修改后的數(shù)據(jù)作為函數(shù)值返回主函數(shù)進(jìn)行輸出。例如,若傳給形參a的數(shù)據(jù)中學(xué)號(hào)、姓名和三門課的成績(jī)依次是:10001、“ZhangSan”、95、80、88,修改后的數(shù)據(jù)應(yīng)為:10002、“LiSi”、96、81、89。請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#inclucle<stdio.h>#include<string.h>structstudent{longsrlo;charname[10];floatScoEe[3];};/*********found*********/【1】fun(structstudenta){inti;a.sno=10002;/*********found*********/strcpy(【2】,"Lisi");/*********found*********/for(i=0;i<3;i++)【3】+=1;returna;}main(){structstudentS={1000l,"ZhangSan",95,80,88),t;inti;print[f"\n\nTheoriginaldata:\n");print["\nNo:%ldName:%s\nScores:",s.sno,s.name);for(i=0;i<3;i++)print[("%6.2f",s.score[i]);print[("\n");t=fun(s);print[f"\nThedataaftermodified:\n");print[("\nNo:%ldName:%s\nScoEes:",t.sno,t.name);for(i=0;i<3;i++)print[("%6.2f",t.score[i]);print[("\n");}標(biāo)準(zhǔn)答案:(1)structstudent(2)a.name(3)a.score[i]知識(shí)點(diǎn)解析:填空1:函數(shù)定義時(shí),類型標(biāo)識(shí)符指明了本函數(shù)的類型,函數(shù)的類型實(shí)際上是函數(shù)返回值的類型。本題中,用結(jié)構(gòu)類型定義函數(shù)類型。填空2和填空3:此處考查結(jié)構(gòu)體變量成員的表示方法,a.name和a.score[i]分別表示學(xué)生的姓名和成績(jī)。5、下列給定程序中,函數(shù)fun的功能是:把形參a所指數(shù)組中的奇數(shù)按原順序依次存放到a[0]、a[1]、a[2]…中,把偶數(shù)從數(shù)組中刪除,奇數(shù)個(gè)數(shù)通過(guò)函數(shù)值返回。例如,若a所指數(shù)組中的數(shù)據(jù)最初排列為:9,1,4,2,3,6,5,8,7,刪除偶數(shù)后,a所指數(shù)組中的數(shù)據(jù)為:9,1,3,5,7,返回值為5。請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#inclucle<stdio.h>#defineN9intfun(inta[],intn){inti,j;j=0;for(i=0;i<n;i++)/*********found*********/if(a[i]%2==【1】){/*********found*********/a[j]=a[i];【2】;}/*********found*********/return【3】;}main(){intb[N]={9,1,4,2,3,6,5,8,7},i,n;printf("\nTheorig~naldata:\n");for(i=0;i<N;i++)printf("%4d",b[i]);printf("\n");n=fun(b,N);printf(”\nThenumberofodd:%d\n",r1);printf("\nTheoddnumber:\n");for(i=0;i<1"1;i++)printf("%4d",b[i]);printf("\n");}標(biāo)準(zhǔn)答案:(1)1(2)j++(3)j知識(shí)點(diǎn)解析:本題考查:if語(yǔ)句條件表達(dá)式;自增、自減運(yùn)算符;函數(shù)返回值。填空1:根據(jù)題目要求,需進(jìn)行奇偶數(shù)的判定,可以通過(guò)if條件語(yǔ)句來(lái)判斷數(shù)組元素是否為奇數(shù),如果元素不能被2整除,則為奇數(shù),所以填入if(a[i]%2==1)。填空2:將為奇數(shù)的元素重新存放到數(shù)組的前面,同時(shí)下標(biāo)增1。填空3:函數(shù)返回值需要返回?cái)?shù)組中奇數(shù)的個(gè)數(shù),因此返回變量j。奇數(shù)和偶數(shù)的判定方法,對(duì)2求余運(yùn)算,結(jié)果為0是偶數(shù),結(jié)果為1是奇數(shù)。自增1、自減1運(yùn)算符:自增1運(yùn)算符記為“++”,其功能是使變量的值自增1;自減1運(yùn)算符記為“一一”,其功能是使變量值自減1。自增1、自減1運(yùn)算符均為單目運(yùn)算符,具有右結(jié)合性,有以下幾種形式:++i:i自增1后再參與其他運(yùn)算。一一i:i自減1后再參與其他運(yùn)算。i++:i參與運(yùn)算后,i的值再自增1。i一一:i參與運(yùn)算后,i的值再自減1。國(guó)家二級(jí)C語(yǔ)言機(jī)試(程序填空題)模擬試卷第3套一、程序填空題(本題共5題,每題1.0分,共5分。)1、函數(shù)fun的功能是:把形參a所指數(shù)組中的最大值放在a[0]中,接著求出a所指數(shù)組中的最小值放在a[1]中;再把a(bǔ)所指數(shù)組元素中的次大值放在a[2]中,把a(bǔ)數(shù)組元素中的次小值放在a[3]中;其余以此類推。例如:若a所指數(shù)組中的數(shù)據(jù)最初排列為:1、4、2、3、9、6、5、8、7,則按規(guī)則移動(dòng)后,數(shù)據(jù)排列為:9、1、8、2、7、3、6、4、5。形參n中存放a所指數(shù)組中數(shù)據(jù)的個(gè)數(shù)。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#defineN9/**********found**********/voidfun(int___1___,intn)(inti,j,max,min,px,pn,t;/**********found**********/for(i=0;ia[j]){min=a[j];pn=j;}}if(px!=i){t=a[i];a[i]=max;a[px]=t;if(pn==i)pn=px;}if(pn!=i+1){t=a[i+1];a[i+1]--min;a[pn]=t;)}}main(){intb[N]={1,4,2,3,9,6,5,8,7},i;printf("\nTheoriginaldata:\n");for(i=0;i標(biāo)準(zhǔn)答案:(1)*a(2)2(3)i+1知識(shí)點(diǎn)解析:第一空:主函數(shù)內(nèi)fun函數(shù)的調(diào)用“fun(b,N);”,其中b為整型數(shù)組名,故fun函數(shù)的第一參數(shù)為整型指針,又根據(jù)“max=a[j]”可知第一個(gè)參數(shù)名為a,故第一空處為“*a”。第二空:根據(jù)題意a所指數(shù)組中的最大值放在a[0]中,接著求出a所指數(shù)組中的最小值放在a[1]中;再把a(bǔ)所指數(shù)組元素中的次大值放在a[2]中,把a(bǔ)數(shù)組元素中的次小值放在a[3]中,升序排序和降序排序的下標(biāo)變化是每次在前一次的基礎(chǔ)上+2,即a[0]、a[2]、a[4]、…降序排序,a[1]、a[3]、a[5]…升序排序,故第二空應(yīng)為“2”。第三空:選擇排序法中的升序排序,首先從數(shù)組中挑選一個(gè)最小的元素,把它和第一元素交換,接著從剩下的n-1個(gè)元素中再挑出一個(gè)最小的元素,把它和第二個(gè)元素交換,不斷重復(fù)以上過(guò)程,直到比較完最后兩個(gè)元素。故內(nèi)層循環(huán)變量i應(yīng)該從i+1開始,因此第三空處應(yīng)為“i+1”。2、給定程序中,函數(shù)fun的功能是:將形參s所指字符串中的數(shù)字字符轉(zhuǎn)換成對(duì)應(yīng)的數(shù)值,計(jì)算出這些數(shù)值的累加和作為函數(shù)值返回。例如,形參s所指的字符串為abs5defl26jkm8,程序執(zhí)行后的輸出結(jié)果為22。請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<string.h>#include<ctype.h>intfun(char*s){intsum=0;while(*s){/*********found*********/if(isdigit(*s))sum+=*s—【1】;/*********found*********/【2】;}/*********found*********/return【3】;}main(){chars[81];intn;printf("\nEnterastring:\n\n");gets(s);n=fun(s);printf("\nTheresultis:%d\n\n",n);}標(biāo)準(zhǔn)答案:(1)48或’0’(2)s++(3)sum知識(shí)點(diǎn)解析:本題是把字符串中是數(shù)字字符轉(zhuǎn)換成對(duì)應(yīng)的數(shù)值并進(jìn)行累加。填空1:’0’字符對(duì)應(yīng)的ASCII碼值是48,因此數(shù)字字符轉(zhuǎn)換成對(duì)應(yīng)數(shù)值時(shí)只要減去48,即是該數(shù)字字符對(duì)應(yīng)的數(shù)值,所以應(yīng)填48或者’0’。填空2:判斷完一個(gè)字符之后,將字符串指針移到下一個(gè)位置,所以應(yīng)填s++。填空3:返回累加和sum,所以應(yīng)填sum。3、程序通過(guò)定義學(xué)生結(jié)構(gòu)體變量,存儲(chǔ)了學(xué)生的學(xué)號(hào)、姓名和三門課的成績(jī)。所有學(xué)生數(shù)據(jù)均以二進(jìn)制方式輸出到文件中。函數(shù)fun的功能是從形參filename所指的文件中讀入學(xué)生數(shù)據(jù),并按照學(xué)號(hào)從小到大排序后,再用二進(jìn)制方式把排序后的學(xué)生數(shù)據(jù)輸出到filename所指的文件中,覆蓋原來(lái)的文件內(nèi)容。請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:nclude#defineN5typedefstructstudent{longsno;charname[10];floatscore[3];}STU;voidfun(char*filename){FILE*fp;inti,j;STUs[N],t;/******found******/fp=fopen(filename,___1___);fread(s,sizeof(STU),N,fp);felose(fp);for(i=0;i標(biāo)準(zhǔn)答案:(1)“r”(2)>(3)fwrite知識(shí)點(diǎn)解析:填空1:題目中要求從形參fiename所指的文件中讀入學(xué)生的數(shù)據(jù),以此可以看出本空應(yīng)該填寫“r”。填空2:此處的if語(yǔ)句是比較學(xué)號(hào)的大小,如果學(xué)號(hào)大就和學(xué)號(hào)小的換位,以此本空填寫>。填空3:題目要求所有的學(xué)生數(shù)據(jù)均以二進(jìn)制方式輸出到文件中,因此本空填寫fwrite。4、給定程序的功能是:從鍵盤輸入若干行文本(每行不超過(guò)80個(gè)字符),寫到文件myfile4.txt中,用-1作為字符串輸入結(jié)束的標(biāo)志。然后將文件的內(nèi)容讀出顯示在屏幕上。文件的讀寫分別由自定義函數(shù)ReadText和WriteText實(shí)現(xiàn)。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#includevoidWriteText(FILE*);voidReadText(FILE*);main(){FILE*fp;if((fp=fopen("myfile4.txt","w"))==NULL){printf("openfail!!\n");exit(0);}WriteText(fp);fclose(fp);if((fp=fopen("myfile4.txt","r"))==NULL){printf("openfail!!\n");exit(0);}ReadText(fp);fclose(fp);}/**********found**********/voidWriteText(FILE【1】){charstr[81];printf("\nEnterstringwith-1toend:\n");gets(str);while(strcmp(str,"-1")!=0){/**********found**********/fputs(【2】,fw);fputs("\n",fw);gets(str);}}voidReadText(FILE*fr){charstr[81];printf("\nReadfileandoutputtoscreen:\n");fgets(str,81,fr);while(!feof(fr)){/*********found**********/printf("%s",【3】);fgets(str,81,fr);}}標(biāo)準(zhǔn)答案:(1)*fw(2)str(3)str知識(shí)點(diǎn)解析:第一空:此處是補(bǔ)充函數(shù)參數(shù)名,參數(shù)類型已知是FILE文件指針,“fputs("\n",fw)”是將字符“\n”寫入文件,可知fw是文件指針名,因此,第一空處應(yīng)該是“voidWriteText(FILE*fw)”。第二空:“while(strcmp(str,"-1")!=0)”循環(huán)的結(jié)束標(biāo)志是str字符串等于“-1”時(shí)循環(huán)退出,如果str不等于“-1”,執(zhí)行循環(huán)體內(nèi)容:用fputs函數(shù)將str字符串寫入文件。fputs函數(shù)的調(diào)用形式是:“fputs(s,fp)”,其中,s是指向字符串的指針或字符串?dāng)?shù)組名,fp是指向?qū)⒁粚懭氲奈募奈募羔?,因此,第二處?yīng)該是“fputs(str,fw)”。第三空:“while(!feof(fr))”循環(huán)的作用是不斷讀取文件直到到達(dá)文件尾,每次最多讀81個(gè),將讀到的數(shù)據(jù)放在str字符串里,并用printf輸出到屏幕,因此,第三處應(yīng)該是“printf("%s",str)”。5、給定程序中,函數(shù)fun的功能是:求ss所指字符串?dāng)?shù)組中長(zhǎng)度最短的字符串所在的行下標(biāo),作為函數(shù)值返回,并把其串長(zhǎng)放在形參n所指變量中。ss所指字符串?dāng)?shù)組中共有M個(gè)字符串,且串長(zhǎng)<N。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!1#include<stdio.h>2#include<string.h>3#defineM54#defineN205intfun(char(*ss)[N],int*n)6{inti,k=0,len=N;7/**********found**********/8for(i=0;i<___1___;i++)9{len=strlen(ss[i]);10if(i==0)*n=len;11/**********found**********/12if(len__2__*n)13{*n=len;14k=i;15}16}17/**********found**********/18return(__3__);19}20main()21{charss[M][N]={’’shanghai’’,’’guangzhou’’,’’beijing’’,’’tianjing’’,’’chongqing’’);22intn,k,i;23printf(’’\nTheoriginalstringsare:\n’’);24for(i=0;i<M;i++)puts(ss[i]);25k=fun(ss,&n);26printf(’’\nThelengthofshorteststringis:%d\n’’,n);27printf(’’\nTheshorteststringis:%s\n’’,ss[k]);28}標(biāo)準(zhǔn)答案:(1)M(2)<(3)k知識(shí)點(diǎn)解析:函數(shù)fun的功能是求ss所指字符串?dāng)?shù)組中長(zhǎng)度最短的字符串所在的行下標(biāo)。求最短字符串所在的下標(biāo),一般假設(shè)第一個(gè)字符串的長(zhǎng)度最短min,用k記錄最長(zhǎng)字符串的下標(biāo)的話,開始時(shí)min=strlen(ss[0]),k=0,然后逐個(gè)比較其他字符串長(zhǎng)度,如果字符串ss[i]長(zhǎng)度比min小,則將min賦值為這個(gè)字符串長(zhǎng)度,“k=i”,如此便可求得最短字符串和最短字符串所在的下標(biāo)位置。第一空:循環(huán)的目的是在M個(gè)字符串中尋找長(zhǎng)度最短的字符串,因此,循環(huán)變量i從0變化到“M-1”,故第一空處應(yīng)為“M”。第二空:“*n”記錄最小字符串的長(zhǎng)度,由審題分析可知,字符串ss[i]長(zhǎng)度比min小,則交換最小長(zhǎng)度值和下標(biāo)位置,故第二空處應(yīng)為“<”。第三空:變量k記錄了最小字符串的下標(biāo)位置,函數(shù)的返回值是最短的字符串所在的行下標(biāo),故第三空處應(yīng)為“k”。國(guó)家二級(jí)C語(yǔ)言機(jī)試(程序填空題)模擬試卷第4套一、程序填空題(本題共5題,每題1.0分,共5分。)1、給定程序中,函數(shù)fun的功能是:將a所指4×3矩陣中第k行的元素與第0行元素交換。例如,有下列矩陣:123456789101112若k為2,程序執(zhí)行結(jié)果為:789456123101112請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#inClude<stdio.h>#defineN3#defineM4/*********found*********/voidfun(int(*a)[N],int【1】){inti,temp;/*********found*********/for(i=0;i<【2】;i++){temp=a[0][i];/*********found*********/a[0][i]=【3】;a[k][i]=temp;}}main(){intX[M][N]={{1,2,3},{4,5,6},{7,8,9),{10,11,12)},i,j;printf("Thearraybeforemoving:\n\n");for(i=0,i<M,i++){for(j=0,j<N;j++)printf("%3d",x[i][j]),printf("\n\n");}fun(x,2),printf("Thearrayaftermoving:\n\n");for(i=0;i<M,i++){for(j=0;j<N;j++)printf("%3d",x[i][j]);printf("\n\n");}}標(biāo)準(zhǔn)答案:(1)k(2)N(3)a[k][i]知識(shí)點(diǎn)解析:填空1:變量k在函數(shù)體fun中已經(jīng)使用,但在函數(shù)體中沒(méi)有定義,肯定是在函數(shù)的形參中定義的,所以應(yīng)填k。填空2:數(shù)組共N列,所以應(yīng)填N。填空3:這部分語(yǔ)句實(shí)現(xiàn)的功能是變量值的交換,所以應(yīng)填a[k][i]。2、給定程序中,函數(shù)fun的功能是:在任給給定的9個(gè)正整數(shù)中找出按升序排列時(shí)處于中間的數(shù),將原數(shù)據(jù)序列中比該中間數(shù)小的數(shù)用該中間數(shù)替換,位置不變,在主函數(shù)中輸出處理后的數(shù)據(jù)序:列,并將中間數(shù)作為函數(shù)值返回。例如,有9個(gè)正整數(shù):1572387582145按升序排列時(shí)的中間數(shù)為:8處理后主函數(shù)中輸出的數(shù)列為:8882387882145請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#defineN9intfun(intx[])(inti,j,k,t,mid,b[N];for(i=0;i<N;i++)b[i]=x[i];for(i=0;i<=N/2;i++){k=i;for(j=i+1;j<N;j++)if(b[k]>b[j])k=j;if(k!=i){/*********found*********/t=b[i];b[i]=【1】;b[k]=t;}}/*********found*********/mid=b【2】;for(i=0;i<N;i++)/*********found*********/if(x[i]【2】mid)x[i]=mid;returnmid;}main(){inti,x[N]={1,5,7,23,87,5,8,21,45};for(i=0;i<N;i++)printf("%d",x[i]);printf("\nThemiddatais:%d\n",fun(x));for(i=0;i<N;i++)printf("%d",x[i]);printf("\n");}標(biāo)準(zhǔn)答案:(1)b[k](2)4或N/2(3)<知識(shí)點(diǎn)解析:數(shù)組中的9個(gè)數(shù)任意排列,要找到按升序排列時(shí)處于中間位置的數(shù),應(yīng)首先對(duì)數(shù)組進(jìn)行升序排列。因?yàn)橹恍枵业街虚g位置的數(shù)即可,故不必對(duì)整個(gè)數(shù)組進(jìn)行排序,只需要排列出數(shù)組的前半部分。找到中間數(shù)后,遍歷原數(shù)組,將小于中間數(shù)的元素進(jìn)行替換。填空1:利用選擇算法排序,先指定一個(gè)元素為最小,用這個(gè)數(shù)與其后的所有數(shù)進(jìn)行比較,若找小于此數(shù),則進(jìn)行替換。此處考查替換操作。填空2:元素mid存放中間位置的數(shù),數(shù)組長(zhǎng)度為9,因此中間元素?cái)?shù)為b[4]。填空3:遍歷數(shù)組,當(dāng)元素小于中間位置的數(shù)(即mid)時(shí),進(jìn)行替換。3、函數(shù)fun的功能是:在有n個(gè)元素的結(jié)構(gòu)體數(shù)組std中,查找有不及格科目的學(xué)生,找到后輸出學(xué)生的學(xué)號(hào);函數(shù)的返回值是有不及格科目的學(xué)生人數(shù)。例如,主函數(shù)中給出了4名學(xué)生的數(shù)據(jù),則程序運(yùn)行的結(jié)果為:學(xué)號(hào):N1002學(xué)號(hào):N1006共有2位學(xué)生有不及格科目請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容,并把下畫線刪除,使程序得出正確的結(jié)果。注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>typedefstruct{charnum[8];doublescore[2];/******found******/}___(1)___;intfun(STUstd[],intn){inti,k=0;for(i=0;i<n;i++)/******found******/if(std[i].score[0]<60___(2)___std[i].score[1]<60){k++;printf(″學(xué)號(hào):%s″,std[i].num);}/******found******/return___(3)___;}main(){STUstd[4]={″N1001″,76.5,82.0,″N1002″,53.5,73.0,″N1005″,80.5,66.0.″N1006″,81.0,56.0};printf(″\n共有%d位學(xué)生有不及格科目\n″,fun(std,4));}標(biāo)準(zhǔn)答案:(1)STU(2)||(3)k知識(shí)點(diǎn)解析:本題考查:對(duì)結(jié)構(gòu)體的定義和使用,以及邏輯運(yùn)算符的使用。填空1:STU結(jié)構(gòu)體別名,通過(guò)main()中的語(yǔ)句可知。填空2:||只要學(xué)生兩門課成績(jī)有不及格的,就算不及格,因此使用或運(yùn)算。填空3:k返回的是不及格的學(xué)生個(gè)數(shù),有題意可知k是累計(jì)個(gè)數(shù)的。4、給定程序中,函數(shù)fun的功能是:判斷形參S所指字符串是否是“回文”(Palindrome),若是,函數(shù)返回值為1;不是,函數(shù)返回值為0。“回文”是正讀和反讀都一樣的字符串(不區(qū)分大小寫字母)。例如,LEVEL和Level是“回文”,而LEVLEV不是。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!1#include<stdio.h>2#include<string.h>3#include<ctype.h>4intfun(char*s)5{char*ip,*rp;6/**********found**********/7ip___1___;8rp=s+strlen(s)-1;9while((toupper(*1p)==toupper(*rp))&&(ip<rp)){10/**********found**********/111p++;rp____2___;}12/**********found**********/13if(ip<rp)___3___;14elsereturn1;15}16main()17{chars[81];18printf(’’Enterastring:’’);scanf(’’%s’’,s);19if(fun(s))printf(’’in\’’%s\’’isapalindrome.\n\n’’,s);20elseprintf(’’in\’’%s\’’ist’taPalindrome.\n\n’’,s);21}標(biāo)準(zhǔn)答案:(1)s(2)--(3)return0知識(shí)點(diǎn)解析:函數(shù)fun的功能是:判斷形參s所指字符串是否是“回文”,即比較第一個(gè)字符和最后一個(gè)字符是否相同,第二個(gè)字符和倒數(shù)第二個(gè)字符是否相同,依此類推,可以用循環(huán)來(lái)實(shí)現(xiàn)。第一空:“rp=s+strlen(s)-1;”可知rp指向最后一個(gè)元素,因此,lp是指向第一個(gè)元素,故第一空應(yīng)為“s”。第二空:“l(fā)p++;rp__2___;”lp往后移動(dòng),rp應(yīng)該往前移動(dòng),故第二空處應(yīng)為“--”。第三空:“if(lp<rp)”成立說(shuō)明lp和rp比較沒(méi)有比較到字符串的最中間的字符,也就是說(shuō)s字符串不是回文,因此,第三空處的應(yīng)為“return0”。5、給定程序中,函數(shù)fun的功能是將帶頭節(jié)點(diǎn)的單向鏈表結(jié)點(diǎn)數(shù)據(jù)域中的數(shù)據(jù)從小到大排序。即若原鏈表結(jié)點(diǎn)數(shù)據(jù)域從頭至尾的數(shù)據(jù)為:10、4、2、8、6,排序后鏈表結(jié)點(diǎn)數(shù)據(jù)域從頭至尾的數(shù)據(jù)為:2、4、6、8、10。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#defineN6typedefstructnode{intdata;structnode*next;}NODE;voidfun(NODE*h){NODE*p,*q;intt;while(p){q=____2____;while(q){/*********found**********/if(p—>data____3____q—>data){t—p—>data;p—>data=q—>data;q=>data=t;}q=q—>next;}p=p—>next;}}NODE*creatlist(inta[]){NODE*h,*p,*q;inti;h=(NODE*)malloc(sizeof(NODE));h—>next=NULL;{q=(NODE*)malloc(sizeof(NODE));q—>data=a[i];q—>next=NULL;if(h—>next==NULL)h—>next=p=q;else{p—>next=q;p=q;}}returnh;}voidoutlist(NODE*h){NODE*p;p=h—>next;if(p==NULL)printf("Thelistiselse{printf("\nHead");do{printf("—>%d",p—>data);p=p—>next;}while(p!=NULL);printf("—>End\n");}}main(){NODE*head;inta[N]={0,10,4,2,8f6};head=creatlist(a);printf("\nTheoriginallist:\n");outlist(head);fun(head);printf("\nThelistaftersorting:outlist(head);}標(biāo)準(zhǔn)答案:(1)h—>next(2)p—>next(3)>=知識(shí)點(diǎn)解析:函數(shù)fun的功能是將帶頭節(jié)點(diǎn)的單向鏈表結(jié)點(diǎn)數(shù)據(jù)域中的數(shù)據(jù)從小到大排序,在fun函數(shù)內(nèi)采用的是選擇法排序。第一空:由審題分析可知,q從h的下一個(gè)元素開始尋找最小值,故第一空為“h—>next”。第二空:由審題分析可知,while循環(huán)是在剩下的元素當(dāng)中找最小值,剩下的結(jié)點(diǎn)是由q指向的鏈表,q從p的后一個(gè)結(jié)點(diǎn)開始,故第二空處應(yīng)為“p—>next”。第三空:“if(p—>data____3____q—>data)”是比較p結(jié)點(diǎn)和q結(jié)點(diǎn)數(shù)據(jù)的大小,如果p結(jié)點(diǎn)的數(shù)據(jù)比q結(jié)點(diǎn)的數(shù)據(jù)大,那么應(yīng)該將p結(jié)點(diǎn)和q結(jié)點(diǎn)的數(shù)據(jù)進(jìn)行交換,故第三空處應(yīng)為“>—"。國(guó)家二級(jí)C語(yǔ)言機(jī)試(程序填空題)模擬試卷第5套一、程序填空題(本題共5題,每題1.0分,共5分。)1、給定程序中,函數(shù)fun的功能是:把形參S所指字符串中下標(biāo)為奇數(shù)的字符右移到下一個(gè)奇數(shù)位置,最右邊被移出字符串的字符繞回放到第一個(gè)奇數(shù)位置,下標(biāo)為偶數(shù)的字符不動(dòng)(注:字符串的長(zhǎng)度大于等于2)。例如,形參S所指的字符串為:abedefgh,執(zhí)行結(jié)果為:ahcbedgf。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includevoidfun(char*s){inti,n,k;charc;n=0,for(i=0,s[i]!=’\0’;i++)n++;/**********found**********/if(n%2=--O)k=n-___1___;elsek=n-2;/**********found**********/c=___2___;for(i=k-2;i>=1;i=i-2)s[i+2]=s[i];/**********found**********/s[1]=___3___;}main(){chars[80]="abcdefgh";printf("\nTheoriginalstringis:%s\n",s);fun(s);printf("\nTheresultis:%s\n",s);}標(biāo)準(zhǔn)答案:(1)1(2)s[k](3)c知識(shí)點(diǎn)解析:函數(shù)fun的功能是移動(dòng)下標(biāo)為奇數(shù)位置的字符。第一空:“for(i=0;s[i]!=’\0’;i++)n++;”n記錄了數(shù)組s的長(zhǎng)度,“if(n%2==0)”如果長(zhǎng)度n是偶數(shù),那么最右邊被移出的字符的下標(biāo)是在n-1,如果n是奇數(shù),那么最右邊被移出的字符的下標(biāo)是n-2,因此第一空處應(yīng)為“1”。第二空:題目要求最右邊被移出字符串的字符繞回放到第一個(gè)奇數(shù)位置,因此最右邊被移出的字符是s[k],在s[k]被替換之前必須先把s[k]保存在其他變量中,故第二空處應(yīng)為“s[k]”,將s[k]保存在c中。第三空:此處是把最右邊被移出字符串的字符繞回放到第一個(gè)奇數(shù)位置,最右邊被移出字符保存在c,第一奇數(shù)位置是s[1],故第三處應(yīng)為“c”。2、給定程序中,函數(shù)fun的功能是:找出形參s所指字符串中出現(xiàn)頻率最高的字母(不區(qū)分大小寫),并統(tǒng)計(jì)出其出現(xiàn)的次數(shù)。例如,形參s所指的字符串為:abcAbsmaxless,程序執(zhí)行后的輸出結(jié)果為:letter’a’:3timesletter’s’:3times請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<string.h>#include<ctype.h>voidfun(char*s){intk[26]={0},n,i,max=0;charch;while(*s){if(isalpha(*s)){/*********found*********/ch=tolower(【1】);n=ch一’a’;/*********found*********/k[n]+=【2】;}s++;/*********found*********/if(max<k[n])max=【3】;printf("\nAftercount:\n");for(i=0;i<26;i++)if(k[i]==max)printf("\nletter\’%c\’:%dtimes\n",i+’a’,k[i]);}main(){chars[81];printf("\nEnterastring:\n\n");gets(s);fun(s);}標(biāo)準(zhǔn)答案:(1)*s(2)1(3)k[n]知識(shí)點(diǎn)解析:本題統(tǒng)計(jì)字符串中各字母的個(gè)數(shù),建立了一個(gè)包括26個(gè)整型變量的數(shù)組,用來(lái)存儲(chǔ)每個(gè)字母的個(gè)數(shù)。填空1:isalpha函數(shù)的作用是判斷當(dāng)前字符是否為字母,tolower函數(shù)的作用是將當(dāng)前字母轉(zhuǎn)換為小寫字母,所以應(yīng)填*s。填空2:把該字母出現(xiàn)的個(gè)數(shù)累加到指定的數(shù)組中,所以應(yīng)填1。填空3:max用來(lái)記錄出現(xiàn)次數(shù)最高的字母的出現(xiàn)次數(shù),如果當(dāng)前該字母出現(xiàn)次數(shù)大于最大次數(shù)max,那么把該次數(shù)賦值給max,所以應(yīng)填k[n]。3、給定程序中已建立一個(gè)帶有頭結(jié)點(diǎn)的單向鏈表,在main函數(shù)中將多次調(diào)用fun函數(shù),每調(diào)用一次fun函數(shù),輸出鏈表尾部結(jié)點(diǎn)中的數(shù)據(jù),并釋放該結(jié)點(diǎn),使鏈表縮短。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!1#include<stdio.h>2#include<Stdlib.h>3#defineN84typedefstructlist5{intdata;6struct1ist*next;7}SLIST;8voidfun(SLIST*p)9{SLIST*t,*e;10t=p->next;s=p;11while(t->next!=NULL)12{s=t;13/**********found**********/14t=t->___1___;15}16/**********found**********/17printf(’’%d’’,___2____);18s->next=NULL;19/**********found**********/20free(___3____);21}22SLIST*creatlist(int*a)23{SLIST*h,*p,*q;iti;24h=p=(SLIST*)malloc(sizeof(SLIST));25for(i=0;i<N;i++)26{q=(SLIST*)malloc(sizeof(SLIST));27q->data=a[i];p->next=q;p=q;28}29p->next=0;30returnh;31}32voidoutlist(SLIST*h)33{SLIST*p;34p=h->next;35if(p==NULL)printf(’’\nThelistisNULL!\n’’);36else37{printf(’’\nnead’’);38do{printf(’’->%d’’,p->data);p=p->next;}while(p!=NULL);39printf(’’->End\n’’);40}41}42main()43{SLIST*head;44inta[N]={11,12,15,18,19,22,25,29};45head=creatlist(a);46printf(’’\nOutputfromhead:\n’’);outlist(head);47printf(’’\nOutputfromtail:\n’’);48while(head->next!=NULL){49fun(head);50printf(’’\n\n’’);51printf(’’\nOutputfromheadagain:\n’’);outlistIhead);52}53}標(biāo)準(zhǔn)答案:(1)next(2)t->data(3)t知識(shí)點(diǎn)解析:fun函數(shù)的功能是輸出鏈表尾部結(jié)點(diǎn)中的數(shù)據(jù),并釋放該結(jié)點(diǎn),使鏈表縮短。由于鏈表是單向的,找到鏈表尾部結(jié)點(diǎn)需要利用循環(huán)從頭結(jié)點(diǎn)開始查找,直至找到最后一個(gè),找到之后輸出尾部結(jié)點(diǎn)的數(shù)據(jù),然后刪除尾結(jié)點(diǎn)。第一空:fun函數(shù)中的循環(huán)目的是找到尾結(jié)點(diǎn)“while(t->next!=NULL)”,利用結(jié)點(diǎn)變量s和t,s指向當(dāng)前節(jié)點(diǎn),t不斷指向下一個(gè)結(jié)點(diǎn),因此,第一空處應(yīng)該是“t=t->next;”。第二空:這里是輸出尾結(jié)點(diǎn)中的數(shù)據(jù),已經(jīng)利用循環(huán)找到了尾結(jié)點(diǎn)t,t的數(shù)據(jù)是t->data,因此,第二空處應(yīng)該為“printf(’’%d’’,t->data),”。第三空輸出尾結(jié)點(diǎn)數(shù)據(jù)之后刪除尾結(jié)點(diǎn),使用free,又因?yàn)槲步Y(jié)點(diǎn)是t,因此,第三空處應(yīng)該為“flee(t);”。4、給定程序中,函數(shù)fun的功能是:利用指針數(shù)組對(duì)形參ss所指字符串?dāng)?shù)組中的字符串按由長(zhǎng)到短的順序排序,并輸出排序結(jié)果。ss所指字符串?dāng)?shù)組中共有N個(gè)字符串,且串長(zhǎng)小于M。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!1#include<stdio.h>2#include<string.h>3#defineN54#defineM85voidfun(char(*ss)[M])6{char*ps[N],*tp;inti,j,k;7for(i=0;i<N;i++)ps[i]=ss[i];8for(i=0;i<N-1;i++){9/**********found**********/10k=__1___;11for(j=i+1;j<N;j++)12/**********found**********/13if(strlen(ps[k])<strlen(___2___))k=j;14/**********found**********/15tp=ps[i];ps[i]=ps[k];ps[k]=___3____;16}17printf(’’\nThestringaftersortingbylength:\n\n’’);18for(i=0;i<N;i++)puts(ps[i]);19}20main()21{charch[N][M]={’’red’’,’’green’’,"blue’’,¨yellow","black¨),22inti;23printf(’’\nTheoriginalstring\n\n’’);24for(i=0;i<N;i++)puts(ch[i]);printf(’’\n’’);25fun(ch)}標(biāo)準(zhǔn)答案:(1)i(2)ps[j](3)tp知識(shí)點(diǎn)解析:本題中函數(shù)fun的功能是利用指針數(shù)組對(duì)形參ss所指字符串?dāng)?shù)組中的字符串按由長(zhǎng)到短的順序排序,并輸出排序結(jié)果。在fun函數(shù)中采用了選擇排序法,在選擇排序法中的降序排序,首先從數(shù)組中挑選一個(gè)最大的元素,把它和第一元素交換,接著從剩下的n-1個(gè)元素中再挑出一個(gè)最大的元素,把它和第二個(gè)元素交換,不斷重復(fù)以上過(guò)程,直到比較完最后兩個(gè)元素。第一空:分析可知,fun函數(shù)采用的選擇排序,在第一空處是初始化k。“for(j=i+1;j<N;j++)”循環(huán)是尋找長(zhǎng)度最長(zhǎng)的字符串,找到之后和k字符串交換,因此k從0開始,隨著i變化,故第一空處應(yīng)為“i”。第二空:“if(strlenq(ps[k])<strlen(__2__))k=j;”新的字符串ps[j]如果比ps[k]的長(zhǎng)度長(zhǎng),那么k記錄下新的最長(zhǎng)的字符串的下標(biāo)位置j,故第二空處應(yīng)為“ps[j]”。第三空:“tp=ps[i];ps[i]=ps[k];ps[k]=__3___;”是字符串地址交換,顯然第三空處應(yīng)是臨時(shí)變量tp。5、給定程序中,函數(shù)fun的功能是:統(tǒng)計(jì)形參s所指字符串中數(shù)字字符出現(xiàn)的次數(shù),并存放在形參t所指的變量中,最后在主函數(shù)中輸出。例如,形參s所指的字符串為:abcdef35adgh3kjsdf7。輸出結(jié)果為:4。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!1#include<stdio.h>2voidfun(char*s,int*t)3{inti,n;4n=0;5/**********found**********/6for(i=0;__1___!=0;i++)7/**********found**********/8if(s[i]>=’0’&&S[i]<=__2__)n++;9/**********found**********/10__3__;11}12main()13{chars[80]=’’abcdef35adgh3kjsdf7’’;14intt;15printf(’’\nTheoriginalstringis:%s\n’’,s);16fun(s,&t);17printf(’’\nTheresultis:%d\n’’,t);}標(biāo)準(zhǔn)答案:(1)s[i](2)’9’(3)*t=n知識(shí)點(diǎn)解析:搜索整個(gè)字符串,判斷s[i]>=’0’且s[i]<=’9’,滿足該條件后,計(jì)數(shù)變量加1,因此,第一空:循環(huán)終止條件是達(dá)到了字符串的尾部,字符串以“\0”(或NULL)結(jié)束,故第一空處應(yīng)為s[i]。第二空:數(shù)字字符的判斷是s[i]>=’0’且s[i]<=’9’,故第二空處應(yīng)為“’9’”。第三空:這里是將數(shù)字字符出現(xiàn)的次數(shù)存放在形參t里,n記錄了數(shù)字字符的個(gè)數(shù),而形參t是指針變量,故第三處應(yīng)為“t=n”。國(guó)家二級(jí)C語(yǔ)言機(jī)試(程序填空題)模擬試卷第6套一、程序填空題(本題共5題,每題1.0分,共5分。)1、甲乙丙丁四人同時(shí)開始放鞭炮,甲每隔t1秒放一次,乙每隔t2秒放一次,丙每隔t3秒放一次,丁每隔t4秒放一次,每人各放n次。函數(shù)fun的功能是根據(jù)形參提供的值,求出總共聽到多少次鞭炮聲作為函數(shù)值返回。注意,當(dāng)幾個(gè)鞭炮同時(shí)炸響,只算一次響聲,第一次響聲是在第0秒。例如,若t1=7,t2=5,t3=6,t4=4,n=10,則總共可聽到28次鞭炮聲。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#inolude/**********found**********/#defineOK(i,t,n)((___1___%t==0)&&(i/t標(biāo)準(zhǔn)答案:(1)i(2)t++(3)count知識(shí)點(diǎn)解析:第一空:由“if(OK(t,t1,n)‖OK(t,t2,n)‖OK(t,t3,n)‖OK(t:t4,n))count++;”可知count計(jì)數(shù)聽到的鞭炮聲,在滿足if條件時(shí),計(jì)數(shù)加1。t時(shí)刻,至少有一個(gè)人放了一個(gè)鞭炮才能聽得到聲音,故t%t1==0、t%t2==0、t%t3=0、t%t4==0這四個(gè)當(dāng)中至少一個(gè)成立,四者是或的關(guān)系。第一個(gè)標(biāo)識(shí)下是宏OK的定義,由前面的分析可知,OK宏的作用就是判斷t%i(i等于1、2、3和4)是否等于0且i/t2、給定程序中,函數(shù)fun的功能是:計(jì)算x所指數(shù)組中N個(gè)數(shù)的平均值(規(guī)定所有數(shù)均為正數(shù)),平均值通過(guò)形參返回給主函數(shù),將小于平均值且最接近平均值的數(shù)作為函數(shù)值返回,并在主函數(shù)中輸出。例如,有10個(gè)正數(shù):46、30、32、40、6、17、45、15、48、26,平均值為30.500000。主函數(shù)中輸出m=30。請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#include<stdio.h>#defineN10doublefun(doublex[],double*av){inti,j;doubled,s;s=0;for(i=0;i<N;i++)s=s+x[i],/*********found*********/【1】=s/N;d=32767;if(x[i]<*av&&*av一x[i]<=d){/*********found*********/d=*av一x[i];j=【2】;}/*********found*********/return【3】;}main(){inti;doublex[N],av,m;printf"’\n");m=fun(xf&av);printf("\nTheaverageis:%f\nl’,av);printf("m=%5.lf",m);printf("\n");}標(biāo)準(zhǔn)答案:(1)*av(2)i(3)x[j]知識(shí)點(diǎn)解析:填空1:從原程序中可以看出*av代表的是平均值,而s/N表示的就是平均值,因此本空應(yīng)該填*av。填空2:if語(yǔ)句來(lái)判斷找最接近平均值的數(shù),因而此空應(yīng)該填i。填空3:題目要求將小于平均值且最接近平均值的數(shù)作為函數(shù)返回,而j表達(dá)的是最接近平均值的數(shù)在數(shù)組中的下標(biāo),因而本空應(yīng)該填寫x[j]。3、給定程序中,函數(shù)fun的功能是:找出NxN矩陣中每列元素中的最大值,并按順序依次存放于形參b所指的一維數(shù)組中。請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度文化創(chuàng)意產(chǎn)品采購(gòu)合同變更及版權(quán)協(xié)議3篇
- 二零二五版美團(tuán)騎手薪酬福利及晉升體系合同2篇
- 課題申報(bào)參考:南嶺走廊儺戲服飾文化基因解碼及傳承路徑研究
- 課題申報(bào)參考:慢波睡眠期間無(wú)意識(shí)序列學(xué)習(xí)的神經(jīng)機(jī)制及認(rèn)知調(diào)控
- 2025年度虛擬現(xiàn)實(shí)游戲開發(fā)與授權(quán)合同范本4篇
- 2025年度個(gè)人旅游居間代理合同樣本2篇
- 南京市2025年度二手房購(gòu)房合同(含環(huán)保檢測(cè)報(bào)告)4篇
- 2025年度個(gè)人租賃城市中心公寓及家電配置合同3篇
- 2025版南寧高新區(qū)廠房租賃合同及技術(shù)支持服務(wù)協(xié)議4篇
- 2025年度個(gè)人小額信用貸款合同范本7篇
- 綠化養(yǎng)護(hù)難點(diǎn)要點(diǎn)分析及技術(shù)措施
- 2024年河北省高考?xì)v史試卷(含答案解析)
- 車位款抵扣工程款合同
- 2023年湖北省襄陽(yáng)市中考數(shù)學(xué)真題(原卷版)
- 小學(xué)六年級(jí)數(shù)學(xué)奧數(shù)題100題附答案(完整版)
- 湖南高速鐵路職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試參考試題庫(kù)(含答案)
- 英漢互譯單詞練習(xí)打印紙
- 2023湖北武漢華中科技大學(xué)招聘實(shí)驗(yàn)技術(shù)人員24人筆試參考題庫(kù)(共500題)答案詳解版
- 一氯二氟甲烷安全技術(shù)說(shuō)明書MSDS
- 母嬰護(hù)理員題庫(kù)
- SWITCH暗黑破壞神3超級(jí)金手指修改 版本號(hào):2.7.6.90885
評(píng)論
0/150
提交評(píng)論