![國家二級(jí)C語言機(jī)試(操作題)模擬試卷10(共27題)_第1頁](http://file4.renrendoc.com/view14/M08/17/24/wKhkGWa8Ac6AI5BIAALimiIeno8901.jpg)
![國家二級(jí)C語言機(jī)試(操作題)模擬試卷10(共27題)_第2頁](http://file4.renrendoc.com/view14/M08/17/24/wKhkGWa8Ac6AI5BIAALimiIeno89012.jpg)
![國家二級(jí)C語言機(jī)試(操作題)模擬試卷10(共27題)_第3頁](http://file4.renrendoc.com/view14/M08/17/24/wKhkGWa8Ac6AI5BIAALimiIeno89013.jpg)
![國家二級(jí)C語言機(jī)試(操作題)模擬試卷10(共27題)_第4頁](http://file4.renrendoc.com/view14/M08/17/24/wKhkGWa8Ac6AI5BIAALimiIeno89014.jpg)
![國家二級(jí)C語言機(jī)試(操作題)模擬試卷10(共27題)_第5頁](http://file4.renrendoc.com/view14/M08/17/24/wKhkGWa8Ac6AI5BIAALimiIeno89015.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
國家二級(jí)C語言機(jī)試(操作題)模擬試卷10(共9套)(共27題)國家二級(jí)C語言機(jī)試(操作題)模擬試卷第1套一、程序填空題(本題共1題,每題1.0分,共1分。)1、程序通過定義學(xué)生結(jié)構(gòu)體變量,存儲(chǔ)了學(xué)生的學(xué)號(hào)、姓名和3門課的成績。函數(shù)fun的功能是對(duì)形參b所指結(jié)構(gòu)體變量中的數(shù)據(jù)進(jìn)行修改,最后在主函數(shù)中輸出修改后的數(shù)據(jù)。例如:b所指變量t中的學(xué)號(hào)、姓名、和三門課的成績依次是:10002、"ZhangQi"、93、85、87,修改后輸出t中的數(shù)據(jù)應(yīng)為:10004、"LiJie"、93、85、87。請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>#include<string.h>structStudent{longsno;charname[10];floatScore[3];};voidfun(StructStudent*b){/**********found**********/b___1___=10004;/**********found**********/strcpy(b___2___,"LiJie");}main(){structstudentt={10002,"ZhangQi",93,85,87};inti;printf("\n\nTheoriginaldata:\n");printf("\nNo:%idName:%s\nScores:",t.sno,t.name);for(i=0;i<3;i++)printf("%6.2f",t.score[i]);printf("\n");/**********found**********/fun(___3___);printf("\nThedataaftermodified:\n");printf("\nNo:%idName:%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)->sno(2)->name(3)&t知識(shí)點(diǎn)解析:函數(shù)fun的功能是對(duì)形參b所指結(jié)構(gòu)體變量中的數(shù)據(jù)進(jìn)行修改。第一空:“b___1___=10004;”等號(hào)右邊是整型值,故這里是修改結(jié)構(gòu)體成員sno的值,b是結(jié)構(gòu)體指針,訪問結(jié)構(gòu)體數(shù)據(jù)成員時(shí)使用“->”運(yùn)算符,因此,第一空為“b->sno”。第二空:“strcpy(b___2___,”LiJie”);”,strcpy是字符串拷貝函數(shù),因此,這里是修改結(jié)構(gòu)體的name成員值,故第二空處為“b->name”。第三空:fun函數(shù)的定義形式是:voidfun(structstudent*b),可知fun的參數(shù)是指針,因此,主函數(shù)內(nèi)調(diào)用fun函數(shù)時(shí)傳入的參數(shù)是結(jié)構(gòu)體t的地址,故第三空處為“&t”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:應(yīng)用遞歸算法求形參a的平方根。求平方根的迭代公式如下:例如,a為2時(shí),平方根值為:1.414214。請改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。#include<stdio.h>#include<math.h>/**********found**********/doublefun(doublea,dounlex0){doublex1,y;x1=(x0+a/x0)/2.0;/**********found**********/if(fabs(x1-x0)>0.00001)y=fun(a,x1);elsey=x1;returny;}main(){doublex;printf("Enterx:");scanf("%1f",&x);printf("Thesquarerootof%lfis%lf\n",x,fun(x,1.0));}標(biāo)準(zhǔn)答案:(1)doublefun(doublea,doublex0)(2)if(fabs(x1-x0)>0.00001)知識(shí)點(diǎn)解析:函數(shù)的功能是應(yīng)用遞歸算法求某數(shù)a的平方根。(1)主函數(shù)中“fun(x,1.0)”,x是double型變量,1.0是浮點(diǎn)數(shù),可知fun有兩個(gè)double型參數(shù),而第一標(biāo)識(shí)下“dounle”不是C語言關(guān)鍵字,所以應(yīng)將“doublefun(doublea,dounlex0)”改為“doublefun(doublea,doublex0)”。(2)第二個(gè)標(biāo)識(shí)下的if語句是判斷進(jìn)行遞歸運(yùn)算的條件,第二標(biāo)識(shí)下變量xo沒有定義,根據(jù)題意,這里是判斷x1和x0的差值的絕對(duì)值是否比0.00001大,所以第二個(gè)標(biāo)識(shí)下“if(fabs(x1-xo)>0.00001)”改為“if(fabs(x1-x0)>0.0000])”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、學(xué)生的記錄由學(xué)號(hào)和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun,它的功能是:把高于等于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,高于等于平均分的學(xué)生人數(shù)通過形參n傳回,平均分通過函數(shù)值返回。注意:部分源程序在文件PROGl.C文件中。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。#include<stdio.h>#defineN12typedefstruct{charnum[10];doubles;}STREC;doublefun(STREC*a,STREC*b,int*n){}main(){STRECs[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87},{"GA09",60},{"GA11",79},{"GA12",73},{"GA10",90}};STRECh[N],t;FILE*out;inti,j,n;doubleave;ave=fun(s,h,&n);printf("The%dstudentdatawhichishigherthan%7.3f:\n",n,ave);for(i=0;i<n;i++)printf("%s%4.1f\n",h[i].num,h[i].s);printf("\n");out=fopen("out.dat","w");fprintf(out,"%d\n%7.3f\n",n,ave);for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(h[i].s<h[j].s){t=h[i];h[i]=h[j];h[j]=t;}for(i=0;i<n;i++)fprintf(out,"%4.1f\n",h[i].s);fclose(out);}標(biāo)準(zhǔn)答案:doublet=0;inti;*n=0;for(2=0;i<N;i++)t=t+a[i].s;t=t/N;for(i=0;i<N;i++)if(a[i].s>t)b[(*n)++]=a[i];returnt;知識(shí)點(diǎn)解析:該程序功能是把高于或等于平均分的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,高于等于平均分的學(xué)生人數(shù)通過形參n傳回,平均分通過函數(shù)返回值返回。解題過程首先求得平均分,然后將所有成績與平均分進(jìn)行比較,如果大于或等于平均分,存入指定數(shù)組。國家二級(jí)C語言機(jī)試(操作題)模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:將形參s所指字符串中所有ASCII碼值小于97的字符存入形參t所指字符數(shù)組中,形成一個(gè)新串,并統(tǒng)計(jì)出符合條件的字符個(gè)數(shù)作為函數(shù)值返回。例如,形參s所指的字符串為:Abc@lx56*,程序執(zhí)行后t所指字符數(shù)組中的字符串應(yīng)為:A@156*。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>intfun(char*s,char*t){intn=0;while(*s){if(*s<97){/*********found*********/*(t+n)=【1】;n++;}/*********found*********/【2】;}*(t+n)=0;/*********found*********/return【3】;}main(){chars[81],t[81];intn;printf("\nEnterastring:\n");gets(s);n=fun(s,t);printf("\nThereare%dletterwhichASCIIcodeislessthan97:%s\n",n,t);}標(biāo)準(zhǔn)答案:(1)*s(2)s++(3)n知識(shí)點(diǎn)解析:填空1:判斷s所指向的字符串中的字符符合條件時(shí),將當(dāng)前字符存放到t指向的字符串中,所以應(yīng)填*s。填空2:判斷完一個(gè)字符之后,將字符串的指針移到下一個(gè)位置,所以應(yīng)填s++。填空3:題目要求函數(shù)要返回符合條件的字符個(gè)數(shù)n,所以應(yīng)填n。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modi1.c。在此程序中,函數(shù)fun的功能是:給定n個(gè)實(shí)數(shù),輸出平均值,并統(tǒng)計(jì)平均值以上(含平均值)的實(shí)數(shù)個(gè)數(shù)。例如,n=8時(shí),輸入193.1991195.673、195.757、196.051、196.092、196.596、196.579、196.763、所得平均值為195.838745,在平均值以上的實(shí)數(shù)個(gè)數(shù)應(yīng)為5。請改正程序中的錯(cuò)誤,使其能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#include<conio.h>#include<stdlio.h>intfun(floatx[],intn)/*********found*********/intj,c=0;floatxa=0.0;for(j=0;j<n;j++)xa+=x[j]/n;printf("ave=%f\n",xa);for(j=0;j<n;j++)/*********found*********/if(x[j]=>xa)c++;returnc;}main(){floatx[100]={193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763};system("cls");printf("%d\n",fun(x,8));}標(biāo)準(zhǔn)答案:(1){intj,c=0;floatxa=0.0;(2)if(x[j]>=xa)知識(shí)點(diǎn)解析:(1)本題著重考查考生對(duì)C語言基本語法以及比較運(yùn)算符的掌握情況。(2)本題中的第一個(gè)錯(cuò)誤:在C語言中,{}應(yīng)成對(duì)出現(xiàn),所以程序中的語句"intj,c=0;floatxa=0.0;"應(yīng)改為"{intj,c=0;floatxa=0.0;"或相同作用的語句;本題中的第二個(gè)錯(cuò)誤:在c語言中,判斷大于或等于的運(yùn)算符應(yīng)為>=,所以程序中的語句"if(x[j]=>xa)"應(yīng)改為"if(x[j]>=xa)"或相同作用的語句。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,編寫函數(shù)fun,其功能是:根據(jù)以下公式求P的值,結(jié)果由函數(shù)值帶回。m與n為兩個(gè)正整數(shù)且要求m>n。例如:m=12,n=8時(shí),運(yùn)行結(jié)果為495.000000。注意:部分源程序在文件PROG1.C中。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。試題程序:#include<stdio.h>floatfun(intm,intn){}main()/*主函數(shù)*/{voidNONO();printf("P=%f\n",fun(12,8));NONO();1}1voidNONO()1{/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*fp,*wf;inti,m,n;floats;fp=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(fp,"%d,%d",&m,&n);s=fun(m,n);fprintf(wf,"%f\n",s);}fclose(fp);fclose(wf);}標(biāo)準(zhǔn)答案:floatfun(intm,intn){floatp1=1,p2=1,p3=1;inti;for(i=1;i<=m;i++)p1★=i;for(i=1;i<=n;i++)p2★=i;for(i=1;i<=(m-n);i++)p3★=i;returnp1/(p2★p3);}知識(shí)點(diǎn)解析:本題考查循環(huán)的使用。通過三個(gè)for循環(huán)分別計(jì)算階乘。其中p1=m!,p2=n!,p3=(m-n)!。國家二級(jí)C語言機(jī)試(操作題)模擬試卷第3套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blankl中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,通過定義并賦初值的方式,利用結(jié)構(gòu)體變量存儲(chǔ)了一名學(xué)生的學(xué)號(hào)、姓名及3門課的成績。函數(shù)fun()的功能是將該學(xué)生的各科成績都乘以一個(gè)系數(shù)a。請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdio.h>2typedefstruct3{intnum;4charname[9];5floatscore[3];6}STU;7voidshow(STUtt)8{inti;9printf("%d%s:",tt.num,tt.name);10for(i=0;i<3;i++)11printf("%5.1f",tt.score[i]);12printf("\n");13}14/*********found*********/15voidmodify(<u>【1】</u>*ss,floata)16{inti;17for(i=0;i<3;i++)18/*********found*********/19ss-><u>【2】</u>*=a;20}21main()22{STUstd={1,"Zhanghua",76.5,78.0,82.0};23floata;24printf("\nTheoriginalnumberandnameandscores:\n");25show(std);26printf("\nInputanumber:");27scanf("%f",&a);28/*********found*********/29modify(<u>【3】</u>,a);30printf("\nAresultofmodifying:\n");31show(std);32}標(biāo)準(zhǔn)答案:(1)STU(2)score[i](3)&std知識(shí)點(diǎn)解析:本題利用結(jié)構(gòu)體存儲(chǔ)學(xué)生記錄,對(duì)記錄進(jìn)行修改并由實(shí)參ss返回。填空1:實(shí)參ss是一個(gè)結(jié)構(gòu)體指針變量,故空1處應(yīng)該填STU。填空2:該學(xué)生的各科成績都乘以一個(gè)系數(shù)a,成員score為數(shù)組,故空2處應(yīng)該填score[i]。填空3:函數(shù)的調(diào)用,由于函數(shù)定義時(shí)使用的是結(jié)構(gòu)體指針變量,將結(jié)構(gòu)變量std作為實(shí)參傳入函數(shù),故空3處應(yīng)該填&std。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modil中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modil.c。在此程序中,函數(shù)fun()的功能是求k!(k<13),所求階乘的值作為函數(shù)值返回。例如,若k=10,則應(yīng)輸出3628800。請改正程序中的錯(cuò)誤.使它能得出正確的結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<conio.h>2#include<stdio.h>3longfun(intk)4{5/*********found*********/6ifk>17return(k*fun(k-1));8return1;9}10main()11{12intk=10;13printf("%d!=%1d\n",k,fun(k));14}標(biāo)準(zhǔn)答案:if(k>1)知識(shí)點(diǎn)解析:本題考查:if語句,考生需要根據(jù)題意來判斷if語句是否正確。if條件語句經(jīng)???,考生需掌握。這里為語法錯(cuò)誤,訌條件表達(dá)式應(yīng)寫在圓括號(hào)內(nèi)。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下progl中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件progl.c。此程序定義了N×N的二維數(shù)組,并在主函數(shù)中自動(dòng)賦值。請編寫函數(shù)fun(),該函數(shù)的功能是使數(shù)組下三角元素中的值乘以n。例如,若n的值為3,a數(shù)組中的值為注意:部分源程序給出如下。請勿改動(dòng)函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語句。試題程序:1#include<stdio.h>2#include<conio.h>3#include<stdlib.h>4#defineN55voidfun(inta[][N],intn)6{78}9main()10{11inta[N][N],n,i,j;12printf("*****Thearray*****\n");13for(i=0;i<N;i++)14{15for(j=0,j<N;j++)16{17a[i][j]=rand()%10;18printf("%4d",a[i][j]);19}20printf("\n");21}22n=rand()%4;23printf("n=%4d\n",n);24fun(a,n);25printf("*****TheResult*****\n");26for(i=0;i<N;i++)27}28for(j=0;j<N;j++)29printf("%4d",a[i][j]);30printf("\n");31}32}標(biāo)準(zhǔn)答案:1voidfun(inta[][N],intn)2{3inti,j;4for(i=0;i知識(shí)點(diǎn)解析:首先從數(shù)組中找出要乘以n的元素。這其實(shí)就是找出將被挑出的元素在原數(shù)組中的分布規(guī)律的過程。通過觀察得出,要被處理的元素下標(biāo)的范圍是從每行中第1個(gè)元素開始,直到列數(shù)等于該行行數(shù)為止。即數(shù)組下三角元素的列下標(biāo)(j)小于等于(<=)行下標(biāo)(j)。找到這個(gè)規(guī)律后,依次從數(shù)組中取得符合要求的元素,然后乘以n。國家二級(jí)C語言機(jī)試(操作題)模擬試卷第4套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:調(diào)用隨機(jī)函數(shù)產(chǎn)生20個(gè)互不相同的整數(shù)放在形參a所指數(shù)組中(此數(shù)組在主函數(shù)中已置0)。請?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#include<stdio.h>#defineN20voidfun(int*a){inti,x,n=0;x=rand()%20;/******found******/while(n<___1___){for(i=0;i<n;i++)/******found******/if(x==a[i])___2___;/******found******/if(i==___3___){a[n]=x;n++;}x=rand()%20;}}main(){intx[N]={0},i;fun(x);printf(″Theresult:\n″);for(i=0;i<N;i++){printf(″%4d″,x[i]);if((i+1)%5==0)printf(″\n″);}printf(″\n″);}標(biāo)準(zhǔn)答案:(1)N或20(2)break(3)n知識(shí)點(diǎn)解析:填空1:變量n用于存儲(chǔ)數(shù)組的下標(biāo),要通過while語句對(duì)數(shù)組進(jìn)行賦值,數(shù)組的容量為20,因此循環(huán)條件應(yīng)為n<20填空2:通過一個(gè)for循環(huán)判斷x是否與數(shù)組中已存的元素重復(fù),若重復(fù)則跳出for循環(huán)結(jié)束。填空3:若for循環(huán)是由break語句結(jié)束的,則x與數(shù)組中的元素重復(fù),此時(shí)i必然小于n;若for循環(huán)是因?yàn)檠h(huán)變量i遞增到某值,而不再滿足循環(huán)條件結(jié)束的,說明x的值與數(shù)組中的元素不重復(fù),則此時(shí)i的值等于n。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:輸出M×M整數(shù)方陣,然后求兩條對(duì)角線上元素之和,并作為函數(shù)值返回。請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#defineM5/******found******/intfun(intn,intxx[][]){inti,j,sum=0;printf(″\nThe%dx%dmatrix:\n″,M,M);for(i=0;i<M;i++){for(j=0;j<M;j++)/******found******/printf(″%f″,xx[i][j]);printf(″\n″);}for(i=0;i<n;i++)sum+=xx[i][i]+xx[i][n—i—1];return(sum);}main(){intaa[M][M]={{1,2,3,4,5},{4,3,2,1,0},{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};printf(″\nThesumofallelementson2diagnalsis%d.″,fun(M,aa));}標(biāo)準(zhǔn)答案:(1)intfun(intn,intxx[][M])(2)printf(″%d″,xx[i][j]);知識(shí)點(diǎn)解析:本題考查:函數(shù)定義形式;printf格式輸出函數(shù),注意其函數(shù)形式。(1)當(dāng)用數(shù)組作為函數(shù)的形參時(shí),可以不定義數(shù)組的行數(shù),但一定要定義數(shù)組的列數(shù)。(2)該處錯(cuò)誤比較隱蔽,一般C語言上機(jī)考試很少涉及printf函數(shù)中的錯(cuò)誤,此處只要明白″d″和″f″的區(qū)別就可以了。格式字符d表示以帶符號(hào)的十進(jìn)制形式輸出整數(shù)(正整數(shù)不輸出符號(hào));格式字符f表示以小數(shù)形式輸出單精度、雙精度數(shù)據(jù),隱含輸出6位小數(shù)。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,其功能是:計(jì)算并輸出3~n之間所有素?cái)?shù)的平方根之和。例如,若主函數(shù)從鍵盤給n輸入100后,則輸出為sum=148.874270。注意:n的值要大于2但不大于100。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。試題程序:#include<stdio.h>#include<math.h>doublefun(intn){}main(){intn;doublesum;FILE*out;printf(″Inputn=″);scanf(″%d″,&n);sum=fun(n);printf(″\nsum=%f\n″,sum);/****************/out=fopen(″out.dat″,″w″);fprintf(out,″%f\n″,fun(180));fclose(out);/****************/}標(biāo)準(zhǔn)答案:doublefun(intn){intm,k,i;doubles=0.0;for(m=3;m<=n;m++){k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0)break;if(i>=k+1)s+=sqrt(m);}returns;}知識(shí)點(diǎn)解析:本題考查:素?cái)?shù)的判定方法及求平方根函數(shù)sqrt的使用。首先確定n的范圍,然后確定循環(huán)條件,最后根據(jù)素?cái)?shù)的判定方法確定條件語句。國家二級(jí)C語言機(jī)試(操作題)模擬試卷第5套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:把形參a所指數(shù)組中的偶數(shù)按原順序依次存放到a[0]、a[1]、a[2]……中,把奇數(shù)從數(shù)組中刪除,偶數(shù)的個(gè)數(shù)通過函數(shù)值返回。例如,若a所指數(shù)組中的數(shù)據(jù)最初排列為:9、1、4、2、3、6、5、8、7,刪除奇數(shù)后,a所指數(shù)組中的數(shù)據(jù)為:4、2、6、8,返回值為4。請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并將下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#defineN9intfun(inta[],intn){inti,j;j=0;for(i=0,i<n;i++)/*********found*********/if(【1】==0){/*********found*********/【2】=a[i];j++;}/*********found*********/return【3】;}main(){intb[N]={9,1,4,2,3,6,5,8,7),i,n;printf("\nTheoriginaldata:\n");for(i=0;i<N;i++)printf("%4d",b[i]);printf("\n");n=fun(b,N);printf("\nThenumberofeven:%d\n",n);printf("\nTheeven:\n");for(i=0;i<n;i++)printf("%4d",b[i]);printf("\n");}標(biāo)準(zhǔn)答案:(1)a[i]%2(2)a[j](3)j知識(shí)點(diǎn)解析:填空1:if語句條件表達(dá)式,判斷數(shù)組元素是否為偶數(shù),對(duì)2求余,結(jié)果為0,則為偶數(shù);結(jié)果為1則為奇數(shù)。填空2:如果該數(shù)組元素是偶數(shù),則將其值保存。填空3:最后按要求將偶數(shù)個(gè)數(shù)通過return語句返回給main函數(shù)。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modil中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modil.e。在此程序中,函數(shù)fun的功能是:按以下遞歸公式求函數(shù)的值。例如,當(dāng)給n輸入5時(shí),函數(shù)值為18;當(dāng)給n輸入3時(shí),函數(shù)值為14。請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>/*********found*********/fun(n){intc;/*********found*********/if(n=1)c=10;elsec=fun(n-1)+2;return(c);}main(){intn;printf("Entern:");scanf("%d¨,&n);printf("Theresult:%d\n\n",fun(n));}標(biāo)準(zhǔn)答案:(1)intfun(intn)(2)if(n==1)知識(shí)點(diǎn)解析:(1)定義有參函數(shù)時(shí),形參變量要分別定義其類型,根據(jù)主函數(shù)中的調(diào)用函數(shù)可知,此處形參變量應(yīng)定義為int型。(2)if條件判斷表達(dá)式中,n=1是賦值表達(dá)式,表達(dá)式的值永遠(yuǎn)為真,不能形成判斷條件,應(yīng)將n=1改為n==1。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,規(guī)定輸入的字符串中只包含字母和*號(hào)。請編寫函數(shù)fun,其功能是:使字符串中尾部的木號(hào)不多于n個(gè),若多于n個(gè),則刪除多余的*號(hào);若少于或等于n個(gè),則不做任何操作,字符串中間和前面的*號(hào)不刪除。例如,字符串中的內(nèi)容為“*****A*BC*DEF*G*******”,若n的值為4,刪除后,字符串中的內(nèi)容應(yīng)為“****A*BC*DEF*G****”;若n的值為7,則字符串中的內(nèi)容仍為“****A*BC*DEF*G*******”。n的值在主函數(shù)中輸入。編寫函數(shù)時(shí),不得使用C語言提供的字符串函數(shù)。注意:部分源程序給出如下。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。試題程序:#include<stdio.h>voidfun(char*a,intn){}main(){chars[81];intn;printf("Enterastring:\n");gets(s);printf("Entern:");scanf("%d",&n);fun(s,n);printf("Thestringafterdeleted:\n");puts(s);}標(biāo)準(zhǔn)答案:voidfun(char*a,intn){inti=0,k=0;char*p,*t;p=t=a;/*將指針移動(dòng)到字符串末尾*/while(*t)t++;t--;/*從后往前如果是‘*’則使k++,找到最后一個(gè)*所在的位置,并記錄‘*’的個(gè)數(shù)*/while(*t==’*’)/*指針t指向前一個(gè),同時(shí)標(biāo)量k增加一*/{k++;t--;}/*如果最后*的個(gè)數(shù)大于允許的個(gè)數(shù)*/if(k>n)/*循環(huán)次數(shù)不大于前面的字符與最大允許*的個(gè)數(shù)之和*/{while(*p&&p<t+n+1)/*把字符保存到數(shù)組a中*/{a[i]=*p;i++;p++;}a[i]=’\0’;}}知識(shí)點(diǎn)解析:字符串中尾部*號(hào)不能多于n個(gè),多余的要?jiǎng)h除。首先需要通過while循環(huán)統(tǒng)計(jì)字符串尾部*號(hào),然后通過if條件語句完成尾部木號(hào)數(shù)和n的比較,若尾部木號(hào)數(shù)多于n個(gè),則需要把n個(gè)*號(hào)和其余字符重新保留。國家二級(jí)C語言機(jī)試(操作題)模擬試卷第6套一、程序填空題(本題共1題,每題1.0分,共1分。)1、函數(shù)mn的功能是:將形參a所指數(shù)組中的前半部分元素中的值和后半部分元素中的值對(duì)換,形參n中存放數(shù)組中數(shù)據(jù)的個(gè)數(shù),若n為奇數(shù),則中間的元素不動(dòng)。例如:若a所指數(shù)組中的數(shù)據(jù)依次為:1、2、3、4、5、6、7、8、9,則調(diào)換后為:6、7、8、9、5、1、2、3、4。請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#inolude<stdio.h>#defineN9voidfun(inta[],intn){inti,t,p;/**********found**********/p=(n%2==0)?n/2:n/2+___1___;for(i=0;i<n/2;i++){t=a[i];/**********found**********/a[i]=a[p+___2___];/**********found**********/___3___=t;}}main(){intb[N]={1,2,3,4,5,6,7,8,9},i;printf("\nTheoriginaldata:\n");for(i=0;i<N;i++)printf("%4d",b[i]);printf("\n”");fun(b,N);printf("\nThedataaftermoving:\n");for(i=0;i<N;i++)printf("%4d",b[i]);printf("\n");}標(biāo)準(zhǔn)答案:(1)1(2)i(3)a[p+i]知識(shí)點(diǎn)解析:函數(shù)fun的功能是將形參a所指數(shù)組中的前半部分元素中的值和后半部分元素中的值對(duì)換。第一空:“p(n%2==9)?n/2:n/2+1;”和“a[i]=a[p+___2___];”“n%2==0”判斷是否是偶數(shù),a[i]和a[p+___2___]交換,如果n是偶數(shù),a[0]和a[n/2]交換,如果n是奇數(shù),那么a[0]和a[n/2+1]交換,依此類推,故n為偶數(shù)時(shí)a[i]和a[i+n/2]交換,n為奇數(shù)時(shí)a[i]和a[i+n/2+1]交換。因此,如果n是奇數(shù)的話,p應(yīng)該等于n/2+1,故第一空處應(yīng)為“1”。第二空:由上分析可知,a[i]和a[i+p]交換,故第二空應(yīng)為“i”。第三空:“t=a[i];a[i]=a[p+i];”,故第三處應(yīng)該是把a(bǔ)[i]賦值給a[p+i],a[i]保存在t中,故第三空應(yīng)為“a[p+i]”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:把主函數(shù)中輸入的3個(gè)數(shù),最大的放在a中,最小的放在c中,中間的放在b中。例如,輸入的數(shù)為:551234,輸出結(jié)果應(yīng)當(dāng)是:a=55.0,b=34.0,c=12.0。請改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。#include<stdio.h>voidfun(float*a,float*b,float*c){/**********found**********/float*k;if(*a<*b){k=*a;*a=*b;*b=k;}/**********found**********/if(*a>*c){k=*c,*c=*a;*a=k;}if(*b<*c)(k=*b;*b=*c;*c=k;}}main(){floata,b,c;printf("Inputabc:");scanf("%f%f%f",&a,&b,&c);printf("a=%4.1f,b=%4.1f,c=%4.1f\n\n",a,b,e);fun(&a,&b,&c);printf("a=%4.1f,b=%4.1f,c=%4.1f\n\n",a,b,c);}標(biāo)準(zhǔn)答案:(1)floatk;(2)if(*a<*c)知識(shí)點(diǎn)解析:函數(shù)對(duì)三個(gè)數(shù)進(jìn)行兩兩比較,實(shí)現(xiàn)判斷。(1)第一個(gè)標(biāo)識(shí)下的變量k是在比較過程中,臨時(shí)存放數(shù)據(jù)的變量,因此k不應(yīng)是指針,所以將“float*k;”改為“floatk;”。(2)分析函數(shù)中第一個(gè)if語句,如果主函數(shù)中a<b,則對(duì)調(diào),把大數(shù)放在a中;分析第二個(gè)if語句,如果主函數(shù)中的a>c,則進(jìn)行對(duì)調(diào),又把大數(shù)放在c中,這樣的邏輯顯然是混亂的。因此,第二個(gè)標(biāo)識(shí)下“if(*a>*c)”應(yīng)該改為“if(*a<*c)”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、學(xué)生的記錄由學(xué)號(hào)和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組s中,請編寫函數(shù)fun,它的功能是:把分?jǐn)?shù)最高的學(xué)生數(shù)據(jù)放在h所指的數(shù)組中,注意:分?jǐn)?shù)最高的學(xué)生可能不止一個(gè),函數(shù)返回分?jǐn)?shù)最高的學(xué)生的人數(shù)。注意:部分源程序在文件PROGl.C中。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。#include<stdio.h>#defineN16typedefstruct{charrluIn[10];ints;}STREC;intfun(STREC*a,STREC*b){}main(){STRECs[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87},{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},{"GA011",77},{"GA017",64},{"GA018",64},{"GA016",72}};STRECh[N];inti,n;FILE*ouL;n=fun(s,h);printf("The%dhighestscore:\n",n);for(i=0;i<n;i++)printf("%s%4d\n",h[i].num,h[i].s),printf("\n");out=fopen("out.dat","w");fprintf(out,"%d\n",n);for(i=0;i<n;i++)fprintf(out,"%4d\n",h[i].s);fclose(out);}標(biāo)準(zhǔn)答案:inti,max=a[0].s,n=0;for(i=1;i<N;i++)if(metx<a[i].s)max=a[i].s;/*找出最高成績*/for(i=0;i<N;i++)if(max==a[i].s)b[n++]:a[i];/*找相等的最高成績并存入數(shù)組b中*/returnn;/*返回符合條件的人數(shù)*/知識(shí)點(diǎn)解析:程序功能是把分?jǐn)?shù)最高的學(xué)生數(shù)據(jù)放在h所指的數(shù)組中。(1)要把最高分?jǐn)?shù)的學(xué)生數(shù)據(jù)放在數(shù)組中,首先求出最高分?jǐn)?shù),再使用一個(gè)for循環(huán)把所有的成績進(jìn)行比較,找出最高的分?jǐn)?shù)來。(2)找出所有與最高分?jǐn)?shù)相等的學(xué)生,并將最高分?jǐn)?shù)的人數(shù)累加。國家二級(jí)C語言機(jī)試(操作題)模擬試卷第7套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,函數(shù)fun()的功能是建立一個(gè)N×N的矩陣。矩陣元素的構(gòu)成規(guī)律:最外層元素的值全部為1:從外向內(nèi)第2層元素的值全部為2;第3層元素的值全部為3……依此類推。例如,若N=5,生成的矩陣為請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件blank1.c中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdio.h>2#defineN73/*********found*********/4voidfun(int(*a)<u>【1】</u>)5{inti,j,k,m;6if(N%2==0)m=N/2;7elsem=N/2+1;8for(i=0;i<m;i++){9/*********found*********/10for(j=<u>【2】</u>;j<N-i;j++)11a[i][j]=a[N-i-1][j]=i+1;12for(k=i+1;k<N-i;k++)13/*********found*********/14a[k][i]=a[k][N-i-1]=<u>【3】</u>;15}16}17main()18{intx[N][N]={0},i,j;19fun(x);20printf("\nTheresultis:\n");21for(i=0;i<N;i++)22{for(j=0;j<N;j++)23printf("%3d",x[i][j]);24printf("\n");25}26}標(biāo)準(zhǔn)答案:(1)[N](2);(3)i+1【解題思路l填空1:本題考查了形參的確定。參數(shù)傳遞時(shí)將實(shí)參的值賦給形參,實(shí)參和形參是一一對(duì)應(yīng)的,故空1處應(yīng)該填[N]。填空2:第2個(gè)for循環(huán)中a[i][j]和a[N-i-1][j]表示第1行和最后一行數(shù)組a[N][N]的值,故空2處應(yīng)該填i。填空3:第3個(gè)for循環(huán)代表的是a[N][N]中每一列的值,故空3處應(yīng)該填i+1。知識(shí)點(diǎn)解析:暫無解析二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modi1.c。在此程序中,函數(shù)fun()的功能是將十進(jìn)制正整數(shù)m轉(zhuǎn)換成k(2≤k≤9)進(jìn)制數(shù),并按位輸出。例如,若輸入8和2,則應(yīng)輸出1000(十進(jìn)制數(shù)8轉(zhuǎn)換成二進(jìn)制表示應(yīng)為1000)。請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:部分源程序在文件modi1.c中,不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdio.h>2#include<conio.h>3/*********found*********/4voidfun{intm,intk);5{intaa[20],i;6for(i=0;m;i++)7{8/*********found*********/9aa[i]=m/k;10m/=k;11}12for(;i;i--)13/*********found*********/14printf("%d",aa[i]);15}16main()17{18intb,n;19print:f("\nPleaseenteranumberandabase:\n");20scanf("%d%d",&n,&b);21fun(n,b);22printf("\n");23}標(biāo)準(zhǔn)答案:(1)voidfun(intm,intk)(2)aa[i]=m%k;(3)printf("%d",aa[i-1]);知識(shí)點(diǎn)解析:(1)函數(shù)定義的格式錯(cuò)誤,不應(yīng)帶有";"。(2)將十進(jìn)制正整數(shù)轉(zhuǎn)換為任意進(jìn)制的數(shù)與十進(jìn)制正整數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)的方法是一樣的。從整數(shù)n譯出它的k進(jìn)制數(shù)值,需采用除以k取余的方法,即求n除以k的余數(shù),得到它的k進(jìn)制的個(gè)位數(shù),接著將n除以k。在n不等于0的情況下循環(huán),能順序求出n的k進(jìn)制的各個(gè)位上的數(shù)。(3)在for(i=0;m;i++)循環(huán)結(jié)束時(shí),i已經(jīng)多加了一個(gè)1,所以這里要減去1。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,編寫一個(gè)函數(shù),其功能是從傳人的num個(gè)字符串中找出最長的一個(gè)字符串,并通過形參指針max傳回該字符串的地址(用****作為結(jié)束輸入的標(biāo)識(shí))。注意:部分源程序在文件pmg1.c中。請勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語句。試題程序:1#include<conio.h>2#include<stdio.h>3#include<string.h>4#include<stdlib.h>5char*fun(char(*a)[81],intnum,char*max)6{78}9voidmain()10{11FILE*wf;12charss[10][81],*ps=NULL;13chars[3][81]={"abecd","deg","diegns"},*p=NULL;14inti=0,n;15system("CLS");16printf("輸入若干個(gè)字符串:");17gets(ss[i]);18puts(ss[i]);19while(!strcmp(ss[i],"****")==0)/*用4個(gè)星號(hào)作為結(jié)束輸入的標(biāo)志*/20{21i++;22gets(ss[i]);23puts(ss[i]);24}25n=i;26ps=fun(ss,n,ps);27printf("\nmax=%s\n",ps);28/*********found*********/29wf=fopen("out.dat","w");30p=fun(s,3,p);31fprintf(wf,"%s",p);32fclose(wf);33/*********found*********/34}標(biāo)準(zhǔn)答案:1char*fun(char(*a)[81],intnum,char*max)2{3inti=0;4max=a[0];5for(i=0;i<num;i++)/*找出最長的一個(gè)字符串*/6if(strlen(max)<strlen(a[i]))7max=a[i];8returnmax;/*傳回最長字符串的地址*/9}知識(shí)點(diǎn)解析:解答本題之前,首先應(yīng)該明白ss是數(shù)組名,是指數(shù)組首元素的地址。max是字符指針變量,可以指向一個(gè)字符串。假定max指向數(shù)組中第1個(gè)字符串,它的長度最長。先使用循環(huán)語句遍歷字符串?dāng)?shù)組,再使用條件語句判斷該字符串的長度是否大于max指向的字符串的長度,如大于,則max指向該字符串。保證max指向的字符串最長,并將其作為函數(shù)值返回。國家二級(jí)C語言機(jī)試(操作題)模擬試卷第8套一、程序填空題(本題共1題,每題1.0分,共1分。)1、下列給定程序中,函數(shù)fun的功能是:將N×N矩陣主對(duì)角線元素的值與反向?qū)蔷€對(duì)應(yīng)位置上元素的值進(jìn)行交換。例如,若N=3,有下列矩陣:123456789交換后為:321456987請?jiān)谙庐嬀€處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#defineN4/******found******/voidfun(int____1____,intn)inti,s:/******found******/for(____2____;i++){s=t[i][i];t[i][i]=t[i][n—i—1];/******found******/t[i][n—1—i]=____3____;}}main(){intt[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j;printf(″\nTheoriginaarray:\n″);for(i=0;i<N;i++)for(j=0;j<N;j++)printf(″%d″,t[i][j]);printf(″\n″);}fun(t,N);printf(″\nTheresultis:\n″);for(i=0;i<N;i++){for(j=0;j<N;j++)printf(″%d″,t[i][j]);printf(″\n″);}標(biāo)準(zhǔn)答案:(1)t[][N](2)i=0;i<N(3)s知識(shí)點(diǎn)解析:本題考查:函數(shù)定義;for循環(huán)語句;數(shù)組元素的引用和賦值;變量值交換算法。填空1:根據(jù)main函數(shù)中的函數(shù)調(diào)用語句,可以填寫fun函數(shù)定義中的形參內(nèi)容。填空2:由于是N×N矩陣,所以for語句中循環(huán)變量i的取值范圍是0到N。填空3:for循環(huán)體中是變量值交換算法。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:讀入一個(gè)字符串(長度<20),將該字符串中的所有字符按ASCⅡ碼值升序排序后輸出。例如,若輸入″e(cuò)dcba″,則應(yīng)輸出″abcde″。請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<string.h>#include<stdio.h>voidfun(chart[]){charc;inti,j;/******found******/for(i=strlen(t);i;i——)for(j=0;j<i;j++)/******found******/if(t[j]<t[j+1]){c=t[j];t[j]=t[j+1];t[j+1]=c;}}main(){chars[81];printf(″\nPleaseenteracharacterstring:″);gets(s);printf(″\n\nBeforesorting:\n%s″,s);fun(s);printf(″\nAftersortingdecendingly:\n%s″,s);}標(biāo)準(zhǔn)答案:(1)for(i=strlen(t)—1;i;i——)或for(i=strlen(1)—1;i>0;i——)(2)if(t[j]>t[j+1])知識(shí)點(diǎn)解析:(1)本題是利用選擇法對(duì)數(shù)組元素進(jìn)行比較排序。所謂選擇法,是依次用當(dāng)前取得的元素和其后面的元素進(jìn)行比較,在第一個(gè)元素和其后面的元素順次比較時(shí),可以借助中間變量來對(duì)兩個(gè)數(shù)進(jìn)行交換,要保證第一個(gè)元素始終存放數(shù)組中的最大數(shù),以后依次挑選出次大數(shù),這樣最終的數(shù)組就是有序的。strlen函數(shù)所求得的字符串長度包括字符串結(jié)束符,所以要減1。(2)這里是一個(gè)分析邏輯錯(cuò)誤,題中要求按升序排序,所以應(yīng)改為if(f[j]>t[j+1])。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,該函數(shù)的功能是:刪除一維數(shù)組中所有相同的數(shù),使之只剩一個(gè)。數(shù)組中的數(shù)已按由小到大的順序排列,函數(shù)返回刪除后數(shù)組中數(shù)據(jù)的個(gè)數(shù)。例如,若一維數(shù)組中的數(shù)據(jù)是:2223445666677899101010刪除后,數(shù)組中的內(nèi)容應(yīng)該是:2345678910注意:請勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫的若干語句。試題程序:#include<stdio.h>#defineN80intfun(inta[],intn){}voidmain(){FILE*wf;inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10},i,n=20;printf(″Theoriginaldata:\n″);for(i=0;i<n;i++)printf(″%3d″,a[i]);n=fun(a,n);printf(″\nThedataafterdeleted:\n″);for(i=0;i<n;i++)printf(″%3d″,a[i]);printf(″\n″);/****************/wf=fopen(″out.dat″,″w″);for(i=0;i<n;i++)fprintf(wf,″%3d″,a[i]);fclose(wf);/****************/}標(biāo)準(zhǔn)答案:intfun(inta[],intn){inti,j=1;for(i=1;i<n;i++)if(a[j—1]!=a[i])/*若該數(shù)與前一個(gè)數(shù)不相同,則要保留*/a[j++]=a[i];returnj;/*返回不相同數(shù)的個(gè)數(shù)*/}知識(shí)點(diǎn)解析:該程序的流程是:定義變量i和j,其中j用于控制刪除后剩下的數(shù)在數(shù)組中的下標(biāo),i用于搜索原數(shù)組中的元素。j始終是新數(shù)組中最后一個(gè)元素的下一個(gè)元素的下標(biāo),所以if語句中的條件是a[j—1]!=a[i],其中a[j—1]就是新數(shù)組中的最后一個(gè)元素,若條件成立,則表示出現(xiàn)了不同的值,所以a[i]要保留到新數(shù)組中。注意:本題中i和j的初值都要從1開始,該算法只能用于數(shù)組已排序的題目中。國家二級(jí)C語言機(jī)試(操作題)模擬試卷第9套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:判斷形參S所指字符串是否是“回文”(Palindrome),若是,函數(shù)返回值為1;不是,函數(shù)返回值為0。“回文”是正讀和反讀都一樣的字符串(不區(qū)分大小寫字母)。例如,LEVEL和Level是“回文”,而LEVLEV不是。請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>@include<string.h>#include<ctype.h>intfun(char*s){char*lp,*rp;/**********found**********/lp___1___;rp=s+strlen(s)-1;while((toupper(*lp)==toupper(*rp))&&(ip<rp)){/**********found**********/lp++;rp___2___;}/**********found*******
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度混凝土攪拌機(jī)租賃與環(huán)保監(jiān)測服務(wù)合同
- 2025年度知識(shí)產(chǎn)權(quán)評(píng)估與價(jià)值分析合同模板
- 2025年度教育機(jī)構(gòu)兼職教師培訓(xùn)合同
- 2025年度智慧城市建設(shè)土地抵押借款合同
- 2025年度股權(quán)并購重組咨詢服務(wù)合同
- 2025年度租車行業(yè)綠色出行推廣合作合同
- 2025年度進(jìn)出口合同履行中的海關(guān)申報(bào)與通關(guān)流程
- 2025年度綠色能源光伏發(fā)電項(xiàng)目投資合同
- 2025年度攪拌站砂石料智能化生產(chǎn)與加工合同范本
- 2025年度化肥產(chǎn)品代理銷售合同范本
- 2023年春節(jié)后建筑施工復(fù)工復(fù)產(chǎn)專項(xiàng)方案
- 污水處理廠化驗(yàn)管理手冊
- 電梯設(shè)備維護(hù)保養(yǎng)合同模板范本
- 叉車操作規(guī)程
- 土建工程技術(shù)標(biāo)范本(DOC167頁)
- 注塑參數(shù)DOE分析范例
- 綜合布線類項(xiàng)目施工圖解(共21頁)
- 圓錐曲線方程復(fù)習(xí)
- 教科版九年級(jí)物理上冊期末考試(真題)
- (完整版)初中地理課程標(biāo)準(zhǔn)-人教版
- 稻茬小麥高產(chǎn)、超高產(chǎn)栽培綜合技術(shù)
評(píng)論
0/150
提交評(píng)論