版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
國家二級C語言機(jī)試(操作題)模擬試卷22(共9套)(共27題)國家二級C語言機(jī)試(操作題)模擬試卷第1套一、程序填空題(本題共1題,每題1.0分,共1分。)1、下列給定程序中,函數(shù)fun的功能是:計(jì)算如下公式直到≤10一3,并且把計(jì)算結(jié)果作為函數(shù)值返回。例如,若形參e的值為1e一3,則函數(shù)返回值為0.551690。請?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>doublefun(doublee){inti,k;doubles,t,x;s=0;k=1;i=2;/*********found*********/x=【1】/4;/*********found*********/while(x【2】e){s=s+k*x;k=k*(一1);t=2*i;/*********found*********/X=【3】/(t*t);i++;}returns;}main(){doublee=1e一3;printf("\nTheresultis:%f\n",fun(e));}標(biāo)準(zhǔn)答案:(1)3.0或(double)3(2)>(3)(t+1)知識點(diǎn)解析:本題考查:基本算術(shù)運(yùn)算的類型轉(zhuǎn)換。其轉(zhuǎn)換規(guī)則如下:如果雙目運(yùn)算符兩邊運(yùn)算數(shù)的類型一致,則所得結(jié)果的類型與運(yùn)算數(shù)的類型一致。如果雙目運(yùn)算符兩邊運(yùn)算數(shù)的類型不一致,系統(tǒng)將自動進(jìn)行類型轉(zhuǎn)換,使運(yùn)算符兩邊運(yùn)算數(shù)的類型達(dá)到一致后,再進(jìn)行運(yùn)算。其類型轉(zhuǎn)換規(guī)律見下表。while循環(huán)語句,一般考查如何根據(jù)題意確定循環(huán)條件,以及如何通過循環(huán)變量的變化實(shí)現(xiàn)循環(huán)操作。填空1:變量x定義為double類型,而運(yùn)算符“/”后面是整型數(shù),因此給x賦值時(shí),需要注意數(shù)據(jù)類型,此處不能將3.0寫成3。填空2:while循環(huán)語句的循環(huán)條件。根據(jù)題意確定循環(huán)變量應(yīng)大于le一3,因此此處應(yīng)填“>”。填空3:表達(dá)式的通項(xiàng)是(2*1+1)/(2*i)2,由于程序中已定義t=2*i,所以此處應(yīng)該填寫(t+1)。本題填空1還可以運(yùn)用強(qiáng)制類型轉(zhuǎn)換來實(shí)現(xiàn)。強(qiáng)制類型轉(zhuǎn)換是通過類型轉(zhuǎn)換運(yùn)算來實(shí)現(xiàn)的,其一般形式為“(類型說明符)(表達(dá)式)”。其功能是:把表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成類型說明符所表示的類型。例如:(float)a把a(bǔ)轉(zhuǎn)換為實(shí)型(int)(x+y)把x+y的結(jié)果轉(zhuǎn)換為整型二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:求出如下分?jǐn)?shù)序列的前n項(xiàng)之和,和值通過函數(shù)值返回。例如,若n=5,則應(yīng)輸出8.391667。請改正程序中的錯(cuò)誤,使其得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stcllib.h>#include<conio.h>#include<stdio.h>/*********found*********/voidfun(intn){inta=2,b=1,c,k;doubles=0.0;for(k=1;k<=n;k++){/*********found*********/s=s+(Double)a/b;c=a;a=a+b;b=c;}return(s);}voidmain(){intn=5;system("CLS");printf("\nThevalueoffunctionis:%1f\n",fun(n));}標(biāo)準(zhǔn)答案:(1)doublefun(intn)(2)s=s+(double)a/b;知識點(diǎn)解析:本題考查:函數(shù)定義,函數(shù)定義的一般形式為“類型標(biāo)識符函數(shù)名(形式參數(shù)表列)”,其中類型標(biāo)識符用來說明函數(shù)值的類型,函數(shù)的類型實(shí)際上是函數(shù)返回值的類型。(1)由語句“return(s);”和變量s定義為double型可知,該函數(shù)定義時(shí)其類型標(biāo)識符為double類型。(2)注意數(shù)據(jù)類型double的書寫格式。確定函數(shù)類型標(biāo)識符在填空和改錯(cuò)題中經(jīng)常考到,如果函數(shù)沒有返回值,則函數(shù)定義為void型;如果函數(shù)有返回值,則函數(shù)類型應(yīng)與返回值類型一致;如果不定義函數(shù)類型標(biāo)識符,則系統(tǒng)默認(rèn)為int型。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,其功能是:找出2×M整型二維數(shù)組中最大元素的值,并將此值返回調(diào)用函數(shù)。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#defineM4#include<stdio.h>intfun(inta[][M]){}voidmain(){intarr[2][M]={5,8,3,45,76,一4,12,82};printf("max=%d\n",fun(arr));}標(biāo)準(zhǔn)答案:intfun(inta[][M]){inti,j,max=a[0l[0];/*對二維數(shù)組進(jìn)行遍歷*/for(i=0;i<2;i++)for(j=0;j<M;j++)if(max<a[i][j])/*將最大值保存在max中*/max=a[i][j];returnmax;}知識點(diǎn)解析:本題考查:求數(shù)組的最大值,需運(yùn)用循環(huán)語句。因?yàn)閿?shù)組是二維數(shù)值,所以應(yīng)使用二層加for循環(huán)嵌套。使用for循環(huán)語句時(shí)需注意循環(huán)變量的取值范圍。此類求最大值或最小值的問題,可以采用逐個(gè)比較的方式,對數(shù)組中所有元素遍歷一遍,從中找出數(shù)組最大值或最小值。首先定義變量max用來存放數(shù)組的第一個(gè)元素的值,然后利用for循環(huán)逐個(gè)找出數(shù)組中的元素,并與max比較,如果元素值大于max,則將該值賦予max,循環(huán)結(jié)束后max的值即為數(shù)組最大值,最后將該值返回。該類題目考查較多,需要掌握逐個(gè)比較的方法。對于m*n=維數(shù)組,如果采用逐個(gè)查找方法,代碼實(shí)現(xiàn)如下:for(i=0;i<m;i++)for(j=0;j<n;j++)國家二級C語言機(jī)試(操作題)模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:將形參指針?biāo)附Y(jié)構(gòu)體數(shù)組中的三個(gè)元素按num成員進(jìn)行升序排列。請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includetypedefstruer{intnum;charname[10];}PERSON;/**********found***********/voidfun(PERSON___1___){/**********found***********/____2___temp;if(std[0].num>std[1].num){temp=std[0];std[0]=std[1];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].hum){temp=std[1];std[1]=std[2];sLd[2]=temp;}}main(){PERSONsLd[]={5,“Zhanghu”,2,“WangLi”,6,“LinNin”};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知識點(diǎn)解析:fun函數(shù)的功能是將形參指針?biāo)附Y(jié)構(gòu)體數(shù)組中的三個(gè)元素進(jìn)行排序。第一空:fun函數(shù)的參數(shù)是指針,由“if(std[0].num>std[1].num)”可知形參名為std,故第一空處應(yīng)為“voidfun(PER.SON*std)”。第二空:temp變量用來進(jìn)行交換時(shí)臨時(shí)保存變量值,由“temp=std[0];”可知temp是PERSON結(jié)構(gòu)體變量,故第二空處的temp結(jié)構(gòu)體定義應(yīng)為“PERSONtemp;”。第三空:這里是調(diào)用fun函數(shù),fun函數(shù)的參數(shù)是結(jié)構(gòu)體變量指針,std是結(jié)構(gòu)體數(shù)組,數(shù)組名相當(dāng)于數(shù)組的首地址,故第三空處應(yīng)為“fun(std):”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:計(jì)算函數(shù)(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y的值不等,z和y的值不等。例如,當(dāng)X的值為9、y的值為11、Z的值為15時(shí),函數(shù)值為-3.50。請改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。#include#include#include/**********found***********/#defineFU(m,n)(m/n)floatfun(floata,floatb,floatc){floatvalue;value=FU(a+b,a—b)+FU(c+b,c—b);/**********found***********/Return(Value);}main(){floatx,y,Z,sum;printf(“InputxyZ:”);scanf(“%f%f%f”,&x,&y,&z);printf(“x=%f,y=%f,z=%f\n”,x,y,Z);if(x==y||y==Z)(Printf(“Dataerror!\n”);exit(0);)sum=fun(X,y,z);printf(“TheresultiS:%5.2f\n”,sum);}標(biāo)準(zhǔn)答案:(1)#defineFu(m,n)((m)/(n))(2)return(value);知識點(diǎn)解析:本題中函數(shù)的功能是計(jì)算題干中給出的公式值。本題的解題過程是利用了定義的宏FU,實(shí)現(xiàn)了函數(shù)中給出的公式的求值。[解題思路](1)函數(shù)fun兩次調(diào)用宏FU來計(jì)算“value=FU(a+b,a-b)+Fu(c+b,c-b);”。檢查宏的定義是否正確,可以用實(shí)參代入宏進(jìn)行展開:(a+b/a-b),由此看到,F(xiàn)U(a+b,a-b)進(jìn)行的計(jì)算不是(a+b)/(a_b),而是(a+b/a_b),因?yàn)椤埃钡膬?yōu)先級高于“+”或“.”,所以要使用括號限定計(jì)算優(yōu)先順序。所以將“#defineFU(m,n)(m/n)”改為“#defineFU(m,n)((m)/(n))”。(2)第二個(gè)標(biāo)識下返回語句的關(guān)鍵字有誤。所以,第二個(gè)標(biāo)識下“Returll(value);”應(yīng)該改為“return(value);”,C語言中沒有“Return”這個(gè)關(guān)鍵字。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,函數(shù)的功能是求出二維數(shù)組周邊元素之和,作為函數(shù)值返回。二維數(shù)組中的值在主函數(shù)中賦予。例如:二維數(shù)組中的值為:13579299946999813570則函數(shù)值為61。注意:部分源程序存在文件PROG1.C文件中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#inciude#defineM4#defineN5intfun(inta[M][N]){}msin(){intaa[M][N]={{1,3,5,7,9),{2,9,9,9,4),{6,9,9,9,8),{1,3,5,7,0));inti,j,y;voidNONO();printf(“Theoriginaldatais:\n”);for(i=0;i標(biāo)準(zhǔn)答案:inttot=0,i,j;for(i=0;i知識點(diǎn)解析:該程序功能是求出二維數(shù)組周邊元素之和。其中周邊元素是指數(shù)組的最上和最下的兩行,最左和最右的兩列。數(shù)組第一行元素的行下標(biāo)為0,最后一行元素的行下標(biāo)為M-1,第一列的列下標(biāo)為0,最后一列的列下標(biāo)為N-1。[解題思路]進(jìn)入fun函數(shù),根據(jù)前面的分析:求周邊元素的和,可以采用兩個(gè)循環(huán)分別把行元素和列元素相加。但要避免把周邊元素重復(fù)相加。國家二級C語言機(jī)試(操作題)模擬試卷第3套一、程序填空題(本題共1題,每題1.0分,共1分。)1、程序通過定義學(xué)生結(jié)構(gòu)體變量,存儲了學(xué)生的學(xué)號、姓名和三門課的成績。所有學(xué)生數(shù)據(jù)均以二進(jìn)制方式輸出到文件中。函數(shù)fun的功能是從形參filename所指的文件中讀入學(xué)生數(shù)據(jù),并按照學(xué)號從小到大排序后,再用二進(jìn)制方式把排序后的學(xué)生數(shù)據(jù)輸出到filename所指的文件中,覆蓋原來的文件內(nèi)容。請?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#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),Nffp);fclose(fp);for(i=0;i<N一1;1++)for(j一i+l;j<N;j++)/*********found*********/if(s[i].sno【2】s[j].sno)fp=fopen(filename,"wb");/*********found*********/【3】(s,sizeof(STU),N,fp);fclose(fp);}main(){STUt[N]={{10005,"ZhangSan",95,80,88},{10003,"LiSi",85,70,78},{10002,"CaoKai",75,60,88},{10004f"FangFang",90,82,87J,{10001,"MaChao",91,92,77}},ss[N];inti,j;FILE*fp;fp=fopen("student.dat","wb");fwrite(t,sizeof(STU),5,fp);fclose(fp);printf("\n\nTheoriginaldata:\n\n");{printf("\nNo:%ldName:%一8sscores:",t[j].sno,t[j].name);for(i=0;i<3;i++)printf("%6.2f",t[j].score[i]);printf("\n");}fun("student.dat");printf("\n\nThedataaftersorting:\n\n");fp=fopen("student.dat","rb");fread(ss,sizeof(STU),5,fp);fclose(fp);for(j=0;j<N;j++){printf("\nNo:%ldName:%一8sScores:",ss[j].sno,ss[j].name);for(i=0;i<3,i++)printf("%6.2f",ss[j].score[i]);printf("\n"):}}標(biāo)準(zhǔn)答案:(1)"rb"(2)>(3)fwrite知識點(diǎn)解析:填空1:題目中要求從形參filename所指的文件中讀入學(xué)生的數(shù)據(jù),以此可以看出本空應(yīng)該填寫”rb”。填空2:此處的if語句是比較學(xué)號的大小,如果學(xué)號大就和學(xué)號小的換位,以此本空填寫>。填空3:題目要求所有的學(xué)生數(shù)據(jù)均以二進(jìn)制方式輸出到文件中,因此本空填寫fwrite。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中函數(shù)fun的功能是:在字符串的最前端加入n個(gè)*號,形成新串,并且覆蓋原串。字符串的長度最長允許為79。請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<string.h>voidfun(chars[],intn){chara[80],*p;inti;/*********found*********/s=p;for(i=0;i<n;i++)a[i]=’*’;do{a[i]=*p;i++;}/*********found*********/while(*p++)strcpy(s,a);}main(){intn;chars[80];printf("\nEnterastring:");gets(s);printf("\nThestring\"%sV’\n",s);printf("\nEntern(numberof*):");fun(s,n);printf("\nThestringafterinsert:\"%s\"\n",s);}標(biāo)準(zhǔn)答案:(1)p=s;(2)while(*p++);知識點(diǎn)解析:(1)指針p應(yīng)指向s,所以應(yīng)改為p=s;。(2)循環(huán)等待,當(dāng)while循環(huán)執(zhí)行一次,臨時(shí)變量p應(yīng)該指向字符串的下一位置,所以應(yīng)改為while(*p++);。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,該函數(shù)的功能是:統(tǒng)計(jì)各年齡段的人數(shù)。N個(gè)年齡通過調(diào)用隨機(jī)函數(shù)獲得,并放入主函數(shù)的age數(shù)組中。要求函數(shù)把0一9歲年齡段的人數(shù)放在d[0]中,把10N19歲年齡段的人數(shù)放在d[1]中,把20一29歲年齡段的人數(shù)放在d[2]中,依此類推,把100歲(含100歲)以上年齡的人數(shù)都放在d[10]中。結(jié)果在主函數(shù)中輸出。注意:部分源程序在文件PROG1.C中。請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#defineN50#define,M11voidfun(int*a,int*b){doublernd(){statict=29,c=217,m=1024,r=0;return((double)r/m),*}voidmain(){FILE*wf,intage[N],i,d[M];intb[N]={32,45,15,12,86,49,97,3,44,52,17,95,63};age[i]=(int)(115*rnd());printf("Theoriginaldata:\n");4d",age[i]);/*每行輸出10個(gè)數(shù)*/printf("\n\n");fun(age,d);for(1=0;i<10;1++)printf("%4d一一一%4d:%4d\n",i*l0,1*10+9,d[i]);printf("Over100:%4d\n",d[10]);/******************/wf=fopen("out.dat","w");fun(b,d);for(i=0;1<10;1++)fprintf(wf,"%4d—o04d:%4d\n",ifprintf(wf,"Over100:%4d",d[10]);fclose(wf);/******************/}標(biāo)準(zhǔn)答案:voidfun(int*a,int*b){inti,j;for(j=0;j<M;j++)b[j]=0;/*數(shù)組b初始化為0*/for(i=0;i<N;i++)if(a[i]>=100)b[10]++;/*如果年齡大于等于100,b[10]自增1*/elseb[a[i]/10]++;/*如果年齡小于100,則將其分別統(tǒng)計(jì)到b[a[i]/10]中*/}知識點(diǎn)解析:本題是一個(gè)分段函數(shù)的問題,用兩個(gè)循環(huán)來完成。第1個(gè)循環(huán)的作用是使b中的所有元素值都為0。這個(gè)循環(huán)不能省略,因?yàn)槿粑磳中的元素賦初值,則它們的值是不可預(yù)測的。第2個(gè)循環(huán)的作用是分別統(tǒng)計(jì)a中各年齡段的人數(shù)。當(dāng)a[i]≥100時(shí),按題意要將其統(tǒng)計(jì)到b[10]中。else的作用是如果年齡小于100,則將其分別統(tǒng)計(jì)到b[a[i]/10]中。由運(yùn)算優(yōu)先級可知先進(jìn)行a[i]/10的運(yùn)算,所得結(jié)果作為b的下標(biāo)。若a[i]為0—9時(shí),a[i]/10的值為0,且0—9歲的人數(shù)正好要存入b[0]中。若a[i]為10一19時(shí),a[i]/10的值為1,且10一19歲的人數(shù)正好要存入b[1]中,依此類推。國家二級C語言機(jī)試(操作題)模擬試卷第4套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序的主函數(shù)中,已給出由結(jié)構(gòu)體構(gòu)成的鏈表結(jié)點(diǎn)a、b、c,各結(jié)點(diǎn)的數(shù)據(jù)域中均存入字符,函數(shù)fun()的作用是:將a、b、c三個(gè)結(jié)點(diǎn)鏈接成一個(gè)單向鏈表,并輸出鏈表結(jié)點(diǎn)中的數(shù)據(jù)。請?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdio.h>2typedefstructlist3{chardata;4structlist*next;5}Q;6voidfun(Q*pa,Q*pb,Q*pc)7{Q*p;8/*********found*********/9pa->next=【1】;10pb->next=pc;11p=pa;12while(p)13{14/*********found*********/15printf(’’%c’’,【2】);16/*********found*********/17p=【3】;18}19printf(’’\n’’);20}21main()22(Qa,b,c;23a.data=’E’;b.data=’F’;24c.data=’G’;c.next=NULL;25fun(&a,&b,&c);26}標(biāo)準(zhǔn)答案:(1)pb(2)p->data(3)p->next知識點(diǎn)解析:填空1:將三個(gè)結(jié)點(diǎn)連接起來,即將pa的指針域指向pb,pb的指針域指向pc。填空2:輸出鏈表結(jié)點(diǎn)中的數(shù)據(jù),表示為p->data。填空3:指針后移,指向下一個(gè)結(jié)點(diǎn),即p=p->next。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中,函數(shù)fun的功能是求矩陣(二維數(shù)組)a[N][N]中每行的最小值,結(jié)果存放到數(shù)組b中。假如:若a=則結(jié)果應(yīng)為1,5,9,13,請改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:1#include<stdio.h>2#defineN43voidfun(inta[][N],[ntb[])4{inti,j;5for(i=0;i<N;i++)6{7/*********found*********/8b[i]=a[0][0];9/*********found*********/10for(j=1;j<N-1;j++)11/*********found*********/12if(b[i]<a[i][j])13b[i]=a[i][j];14}15}16main()17{inta[N][N]=f{1,4,3,2),{8,6,5,7),{11,10,12,9},{13,16,14,15}},b[N];18inti;19fun(a,b);20for(i=0;i<N;i++)21printf(’’%d,’’,b[i]);22printf(’’\n’’);23}標(biāo)準(zhǔn)答案:(1)b[i]=a[i][0];(2)for(j=1;ja[i][j])知識點(diǎn)解析:數(shù)組b存放每行的最小值,針對二維數(shù)組使用二層循環(huán),在第一層循環(huán)的開始將每行的第1個(gè)數(shù)賦給數(shù)組b相應(yīng)的元素,在第二層循環(huán)中,數(shù)組b中的元素依次與本行中的每個(gè)元素進(jìn)行比較,找到一行中的最小值存人數(shù)組b。(1)b[i]存放二級數(shù)組a每一行中第1個(gè)元素值,表示為a[i][0]。(2)每行元素的第1個(gè)值要和這一行中的每個(gè)元素進(jìn)行比較,條件j三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,該函數(shù)的功能是:判斷字符串是否為回文,若是,則函數(shù)返回1,主函數(shù)中輸出”YES”,否則返回0,主函數(shù)中輸出”NO”?;匚氖侵疙樧x和倒讀都一樣的字符串。例如,字符串LEVEL是回文,而字符串123312就不是回文。注意:部分源程序在文件PROG1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:1#include<stdio.h>2#defineN803intfun(char*str)4{56}7main()8{9chars[N];10FILE*out;11char*test[]={’’1234321’’,’’123421’’,’’123321’’,’’abcdCBA’’};12inti;13printf(’’Enterastring:’’);14gets(s);15printf(’’\n\n’’);16puts(s);17if(fun(s))18printf(’’YES\n’’);19else20printf(’’NO\n’’);21/*****************/22out=fopen(’’out.dat’’,’’w’’);23for(i=0;i<4;i++)24if(fun(test[i]))25fprintf(out,’’YES\n’’);26else27fprintf(out,’’NO\n’’);28fclose(out);29/*****************/30}標(biāo)準(zhǔn)答案:1intfun(char*str)2{3inti,n=0,fg=1;4char*p=str;5while(*p)/*將指針p置位到字符串末尾,并統(tǒng)計(jì)字符數(shù)*/6{7n++;8p++;9}10for(i=0;i知識點(diǎn)解析:判斷回文就是將第一個(gè)字符與最后一個(gè)字符比較,第二個(gè)字符與倒數(shù)第二個(gè)字符進(jìn)行比較,依此類推,直到中間的字符,如果比較的結(jié)果都相同,那么這個(gè)字符串就是回文,否則不是。程序中循環(huán)語句用來遍歷字符串,條件語句用來判斷當(dāng)前字符與對應(yīng)位置的字符是否相同。國家二級C語言機(jī)試(操作題)模擬試卷第5套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:統(tǒng)計(jì)形參S所指的字符串中數(shù)字字符出現(xiàn)的次數(shù),并存放在形參t所指的變量中,最后在主函數(shù)中輸出。例如,若形參s所指的字符串為“abcdef35adgh3kjsdf7”,則輸出結(jié)果為4。請?jiān)诔绦虻南庐嬀€處填入正確內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>voidfun(char*s,int*t){inti,n;n=0;/*********found*********/for(i=0;【1】!=0;i++)/*********found*********/if(s[i]>=’0’&&s[i]<=【2】)n++;/*********found*********/【3】;}main(){chars[80]="abcdef35adgh3kjsdf7";intt;printf("\nTheoriginalstringis:%s\n",s);fun(s,&t);printf("\nTheresultis:%d\n",t);}標(biāo)準(zhǔn)答案:(1)s[i](2)’9’(3)*t=n知識點(diǎn)解析:填空1:通過for循環(huán)語句來判斷是否到字符型結(jié)尾,變量i用來存放字符型數(shù)組下標(biāo),則應(yīng)填入s[i]。填空2:題目要求判斷數(shù)字字符,所以此處應(yīng)填入‘9’。填空3:將數(shù)字字符個(gè)數(shù)存入變量t中,此處需注意變量t是指針變量。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modi1.c。在此程序中,函數(shù)fun的功能是:判斷一個(gè)整數(shù)是否為素?cái)?shù),若是素?cái)?shù)返回1,否則返回0。在main函數(shù)中,若fun返回1輸出YES,若fun返回0輸出NO!。請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stallib.h>#include<conio.h>#include<stdio.h>intfun(intm){intk=2;while(k<=m&&(m%k))/*********found*********/k++/*********found*********/if(m=k)return1;elsereturn0;}voidmain(){intn;system("CLS");printf("\nPleaseentern:");scanf("%d",&n);if(fun(n))printf("YES\n");elseprintf("NO!\n");}標(biāo)準(zhǔn)答案:(1)k++;(2)if(m==k)知識點(diǎn)解析:函數(shù)fun的功能是判斷m是否為素?cái)?shù):m從2開始作為除數(shù),并對m取余,若不存在一個(gè)數(shù)使得余數(shù)為0,則m為素?cái)?shù),程序的錯(cuò)誤在于if(m=k)語句中的邏輯表達(dá)式寫成了賦值語句。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請編寫函數(shù)fun,其功能是:計(jì)算并輸出下列多項(xiàng)式的值。例如,當(dāng)n=10時(shí),函數(shù)值為0.909091。注意:部分源程序在文件PROG1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>#include<stdlib.h>doublefun(intn){}voidmain(){FILE*wf;system("CLS");printf("%f\n",fun(10));/*********found*********/wf=fopen("out.dat","w");fprintf(wf,"%f",fun(10));fclose(wf);/*********found*********/}標(biāo)準(zhǔn)答案:doublefun(intn){inti;doubles=0.0;for(i=1;i<=n;i++)s=s+1.0/(i*(i+1));/*求級數(shù)的和*/returns;}知識點(diǎn)解析:本題要求級數(shù)的和,由多項(xiàng)式的形式可知,應(yīng)使用循環(huán)語句實(shí)現(xiàn),循環(huán)的通項(xiàng)為1/n(n+1)。本程序首先定義了和變量及循環(huán)變量,然后運(yùn)用一個(gè)for語句求出級數(shù)的和,最后將和變量s返回。國家二級C語言機(jī)試(操作題)模擬試卷第6套一、程序填空題(本題共1題,每題1.0分,共1分。)1、函數(shù)fun的功能是:根據(jù)所給的年、月、日,計(jì)算出該日是這一年的第幾天,并作為函數(shù)值返回。其中函數(shù)isleap用來判別某一年是否為閏年。例如,若輸入:200851,則程序輸出:2008年5月1日是該年的第122天。請?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容,并把下畫線刪除,使程序得出正確的結(jié)果。注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>intisleap(intyear){intleap;leap=(year%4==0&&year%100!=0||year%400==0);return___1___;}intfun(intyear,intmonth,intday){inttable[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};intdays=0,i;for(i=1;i<month;i++)days=days+table[i];/******found******/days=days+___2___;if(isleap(year)&&month>2)/******found******/days=days+___3___;returndays;}main(){intyear,month,day,days;printf("請輸入年、月、日:");scanf("%d%d%d",&year,&month,&day);days=fun(year,month,day);printf("%d年%d月%d日是該年的第%d天\n",year,month,day,days);}標(biāo)準(zhǔn)答案:(1)leap(2)day(3)1知識點(diǎn)解析:本題考查:對循環(huán)結(jié)構(gòu)的理解和掌握。填空1:leapisleap()函數(shù)判斷是否是閏年,由于初始化2月為28天,但是閏年是29,所以閏年要多加1天,isleap()應(yīng)該返回0或者1,leap的表達(dá)式為邏輯運(yùn)算,得到的結(jié)果剛好是0或1。填空2:day前面累加了平年月份的天數(shù),還需要加上日的天數(shù)。填空3:如果是閏年并且累加月份大于2月,需要多加1天。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:計(jì)算函數(shù)F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y的值不相等,z和y的值不相等。例如,當(dāng)x的值為9,y的值為11,Z的值為15時(shí),函數(shù)值為-3.50。請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<math.h>#include<stdlib.h>/******found******/#defineFU(m,n)((m/n))floatfun(floata,floatb,floatc){floatvalue;value=FU(a+b,a-b)+FU(c+b,c-b);/******found******/Return(Value);}main(){floatx,y,z,sum;printf("Inputxyz:");scanf("%f%f%f",&x,&y,&z);printf("x=%f,y=%f,z=%f\n",x,y,z);if(x==y||y==z){printf("Dataerror!\n");exit(0);}sum=fun(x,y,z);printf("Theresultis:%5.2f\n",sum);}標(biāo)準(zhǔn)答案:(1)#defineFU(m,n)(m)/(n)(2)return(value);知識點(diǎn)解析:本題考查:C語言宏定義;函數(shù)返回值。本題考查C語言的宏定義,其格式為:#de6ne標(biāo)識符字符串,中間要用空格分開。在該題中,標(biāo)識符為Fu(m,n),字符串為(m/n),由題干信息可知,m、n均為表達(dá)式,且先進(jìn)行表達(dá)式運(yùn)算,再進(jìn)行除法運(yùn)算,因此此處應(yīng)為(m)/(n)。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、編寫函數(shù)voidfun(char*tt,intpp[]),統(tǒng)計(jì)在tt所指的字符串中’a’到’z’26個(gè)小寫字母各自出現(xiàn)的次數(shù),并依次放在pp所指的數(shù)組中。例如,當(dāng)輸入字符串"abcdefgabcdeab"后,程序的輸出結(jié)果應(yīng)該是:33322110000000000000000000注意:請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#include<string.h>voidfun(char*tt,intp[]){}main(){charaa[1000];intbb[26],k;voidNONO();printf("\nPleaseenteracharstring:");scanf("%s",aa);fun(aa,bb);for(k=0;k<26;k++)printf("%d",bb[k]);printf("\n");NONO();}voidNONO()/*本函數(shù)用于打開文件,輸入測試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/{charaa[1000];intbb[26],k,i;FILE*rf,*wf;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%s",aa);fun(aa,bb);for(k=0;k<26;k++)fprintf(wf,"%d",bb[k]);fprintf(wf,"\n");}felose(rf);fclose(wf);}標(biāo)準(zhǔn)答案:voidfun(char*tt,intpp[]){inti:for(i=0;i<26;i++)pp[i]=0;/*初始化pp數(shù)組各元素為0*/for(;*tt!=’\0’;tt++)if(*tt>=’a’&&*tt<=’’z’)pp[*tt-’a’]++;}知識點(diǎn)解析:本題考查:for循環(huán)語句,注意循環(huán)變量取值范圍以及循環(huán)體語句作用;數(shù)組元素初始化和賦值操作;if語句條件表達(dá)式,需注意條件表達(dá)式的邏輯運(yùn)算;字符串結(jié)束標(biāo)識’\0’。要求統(tǒng)計(jì)在tt所指字符串中a~z共26個(gè)小寫母各自出現(xiàn)的次數(shù),并依次放在pp所指數(shù)組中。首先使用for循環(huán)語句初始化pp數(shù)組中分別用來統(tǒng)計(jì)26個(gè)字母的個(gè)數(shù),再使用循環(huán)判斷語句對tt所指字符串中的字符進(jìn)行逐一比較操作,同時(shí)存入相對應(yīng)的pp數(shù)組中。國家二級C語言機(jī)試(操作題)模擬試卷第7套一、程序填空題(本題共1題,每題1.0分,共1分。)1、函數(shù)fun的功能是:在有n個(gè)元素的結(jié)構(gòu)體數(shù)組std中,查找有不及格科目的學(xué)生,找到后輸出學(xué)生的學(xué)號;函數(shù)的返回值是有不及格科目的學(xué)生人數(shù)。例如,主函數(shù)中給出了4名學(xué)生的數(shù)據(jù),則程序運(yùn)行的結(jié)果為:學(xué)號:N1002學(xué)號:N1006共有2位學(xué)生有不及格科目請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容,并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!1#include<stdio.h>2typedefstruct3{charnum[8];4doublescore[2];5/**********found**********/6}_(1)__;7intfun(STUstd[],intn)8{inti,k=0;9for(i=0;i<n;i++)10/**********found**********/11if(std[i].score[0]<60__(2)__std[i].score[1]<60)12{k++;printf(’’學(xué)號:%s’’,std[i].num);}13/**********found**********/14return__(3)__;15}16main()17{STUstd[4]={’’N1001’’,76.5,82.0,’’N1002’’,53.5,73.0,’’N1005’’,80.5,66.0,’’N1006’’,81.0,56.0};18printf(’’\n共有%d位學(xué)生有不及格科目\n’’,fun(std,4)};19}標(biāo)準(zhǔn)答案:(1)STU(2)‖(3)k知識點(diǎn)解析:第一空:“{……}(1);”這一空出現(xiàn)在定義結(jié)構(gòu)體時(shí),這里使用了typedef就是很明顯地要聲明結(jié)構(gòu)體類型,而這里則是要填寫結(jié)構(gòu)體類型名。這里就要知道typedef的作用了,typedef是用來命名已有類型的,相當(dāng)于給已經(jīng)知道的類型(如intfloat)一個(gè)新的類型名,而這里命名的是一個(gè)結(jié)構(gòu)體,這不同于結(jié)構(gòu)體的類型定義,大括號后面填寫的不是變量名表列,而是結(jié)構(gòu)體類型名,相當(dāng)于給一個(gè)名稱或者一種新的類型。而根據(jù)后面程序己給出的部分,我們能清楚的看到定義的結(jié)構(gòu)體類型名是STU,所以這一空應(yīng)該填的是“STU”。第二空:“if(std[i].score[0]<60__(2)__std[i].score[1]<60);”這一空出現(xiàn)在fun函數(shù)中的if條件語句中,根據(jù)if后面的執(zhí)行語句我們可以看到執(zhí)行的人數(shù)的統(tǒng)計(jì),所以這里應(yīng)該就是在判斷學(xué)生學(xué)科分?jǐn)?shù)是否及格的條件語句。對于一開始的結(jié)構(gòu)體定義我們能夠發(fā)現(xiàn)成員score是長度為2的數(shù)組,所以每個(gè)學(xué)生應(yīng)該是有兩門學(xué)科的分?jǐn)?shù)需要來判定和統(tǒng)計(jì)的,而這兩門學(xué)科中任意一門分?jǐn)?shù)不夠的話都定義為不及格,然后統(tǒng)計(jì)進(jìn)入人數(shù)中,這里所填空的兩邊是兩門學(xué)科的分?jǐn)?shù)低于60分,既然前面說了是任意一門低于60即進(jìn)入統(tǒng)計(jì),那這里就應(yīng)該是“或”符號才符合要求,所以這一空應(yīng)該填“‖”。第三空:“return__(3)__;”這一空出現(xiàn)在fun函數(shù)中,這里要填寫的是fun函數(shù)執(zhí)行后的返回值。根據(jù)題目的要求函數(shù)是要查找不及格的科目的學(xué)生,找到學(xué)生學(xué)號,然后返回學(xué)生的人數(shù),這一空前面已經(jīng)執(zhí)行了查找,統(tǒng)計(jì)人數(shù)和學(xué)號的輸出,所以這里應(yīng)該返回的就是不及格學(xué)生的人數(shù)。而根據(jù)前面的定義,人數(shù)統(tǒng)計(jì)的變量名應(yīng)該是k,所以這一空應(yīng)該要填寫的是“k”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:應(yīng)用遞歸算法求形參a的平方根。求平方根的迭代公式如下:例如,a為2時(shí),平方根值為:1.414214。請改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。1#include<stdio.h>2#include<math.h>3/**********found**********/4doublefun(doublea,dounlex0)5{doublexl,y;6x1=(x0+a/x0)/2.0;7/**********found**********/8if(fabs(x1-x0)>0.00001)9y=fun(a,x1);10elsey=x1;11returny;12}13main()14{doublex;15printf(’’Enterx:’’);scanf(’’%1f’’,&x);16printf(’’Thesquarerootof%1fis%if\n’’,x,fun(X,1.0));17}標(biāo)準(zhǔn)答案:(1)doublefun(doublea,doublex0)(2)if(fabs(x1-x0)>0.00001)知識點(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)識下“dotmle”不是C語言關(guān)鍵字,所以應(yīng)將“doublefun(doublea,dounlex0)”改為“doublefun(doublea,doublex0)”。(2)第二個(gè)標(biāo)識下的if語句是判斷進(jìn)行遞歸運(yùn)算的條件,第二標(biāo)識下變量x0沒有定義,根據(jù)題意,這里是判斷x1和x0的差值的絕對值是否比0.00001大,所以第二個(gè)標(biāo)識下“if(fabs(x1-x0)>0.000011”改為“if(fabs(x1-x0)>0.00001)”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,函數(shù)的功能是:判斷字符串是否為回文?若是,函數(shù)返回1,主函數(shù)中輸出:YES;否則返回0,主函數(shù)中輸出NO。回文是指順讀和倒讀都一樣的字符串。例如,字符串LEVEL是回文,而字符串123312就不是回文。注意:部分源程序在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。1#include<stdio.h>2#include<string.h>3#defineN804intfun(char*str)5{6}7main()8{chars[N];voidNONO();9printf(’’Enterastring:’’);gets(s);10printf(’’\n\n’’);puts(s);11if(fun(s))printf(’’YES\n’’);12elseprintf(’’NO\n’’);13NONO();}14voidNONO()15{/*請?jiān)诖撕瘮?shù)內(nèi)打開文件,輸入測試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/16FILE*rf,*wf;17inti;chars[N];18rf=fopen(’’in.dat’’,’’r’’);19wf=fopen(’’out.dat’’,’w’’);20for(i=0;i<10;i++){21fscanf(rf,’’%s’’,s);22if(fun(s))fprintf(wf,’’%sYES\n’’,s);23elsefprintf(wf,’’%sNO\n’’,s);24}25fclose(rf);fclose(wf);}標(biāo)準(zhǔn)答案:1inti,n=0,flag=1;//初始設(shè)置標(biāo)識位2char*p=str;//設(shè)置工作指針3while(*p)//取字符串大小4{n++;5p++;6}7for(i=0;i<n/2;i++)8//循環(huán)判斷字符串s是否為回文9if(str[i]==str[n-1-i]);10//設(shè)置比較位j為n-1-i11else12//若不符合條件,標(biāo)識位設(shè)為0,跳出循環(huán)13{flag=0;14break;15}16returnflag;知識點(diǎn)解析:進(jìn)入fun函數(shù),根據(jù)前面的分析主要思路是:(1)首先用整型變量i表示所判斷的字符串中前面對應(yīng)元素的下標(biāo)。i初值為0,n是字符串的長度,通過循環(huán)來求得n。(2)然后,把下標(biāo)為i的字符與下標(biāo)為“n-1-i”的字符比較,如果相同,i加1,繼續(xù)進(jìn)行一對一的字符比較。不斷重復(fù)此過程,直到i≥n/2為止。在此過程中,如果下標(biāo)為i的字符與下標(biāo)為“n-1-i”的字符不相同,則可以斷定字符串不是回文,立即退出函數(shù)。(3)如果正常結(jié)束循環(huán),就說明字符串符合回文條件。國家二級C語言機(jī)試(操作題)模擬試卷第8套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:在形參ss所指字符串?dāng)?shù)組中,刪除所有串長超過k的字符串,函數(shù)返回所剩字符串的個(gè)數(shù)。ss所指字符串?dāng)?shù)組中共有N個(gè)字符串,且串長小于M。請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!1#include<stdio.h>2#include<string.h>3#defineN54#defineM105intfun(char(*ss)[M],intk)6{inti,j=0,len;7/**********found**********/8for(i=0;i<_1_;i++)9{len=strlen(ss[i]);10/**********found**********/11if(len<=__2__)12/**********found***********/13strcpy(ss[j++],__3___);}14returnj;}15main()16{charx[N][M]={’’Beijing’’,’’Shanghai’’,’’Tianjing’’,’’Nanjing’’,’’Wuhan’’};17inti,f;18printf(’’\nTheoriginalstring\n\n’’);19for(i=0;i<N;i++)puts(x[i]);20printf(’’\n’’);21f=fun(x,7);22printf(’’Thestringwitchlengthislessthanorequalto7:\n’’);23for(i=0;i<f;i++)puts(x[i]);24printf(’’\n’’);}標(biāo)準(zhǔn)答案:(1)N(2)k(3)ss[i]知識點(diǎn)解析:第一空:“for(i=0;i<1;i++)”,這一空部分出現(xiàn)在fun函數(shù)中的for循環(huán)條件中,在定義了i之后i的條件。根據(jù)for后面的語句我們可以看出,這里是要進(jìn)行比較,比較對象是ss所指字符串?dāng)?shù)組的所有字符串,所以這里循環(huán)要進(jìn)行整改字符串?dāng)?shù)組的長度,相應(yīng)的,這里for循環(huán)的循環(huán)條件就要是i小于字符串長度,而字符串長度開始就有定義,為N,所以這里應(yīng)該是i<N,這一空應(yīng)該填N。第二空:“if(len<=2)”,這一空部分出現(xiàn)在fun函數(shù)中,是for循環(huán)中if條件語句的條件,這根據(jù)if條件語句后面的語句我們可以知道,這里的條件語句是后面strcpy的執(zhí)行條件,而strcpy要執(zhí)行,根據(jù)題目給出的條件我們可以知道是要字符串長度小于等于k才能保留,所以這里的if條件語句中的條件應(yīng)該是字符串長度小于k,所以這一空應(yīng)該填k。第三空:“strcpy(ss[j++],__3__);”這一空部分出現(xiàn)在strcpy函數(shù)中,此函數(shù)為字符串復(fù)制函數(shù),是將后面的一個(gè)字符串復(fù)制到前面一個(gè)字符數(shù)組中去,根據(jù)題意和前面的條件語句,這一行語句是要將符合條件的字符串重新組成一個(gè)新的字符串?dāng)?shù)組,然后返回新數(shù)組的長度,這樣的話就能知道ss[j]為新字符串?dāng)?shù)組,而這里要復(fù)制的就是原字符串?dāng)?shù)組中符合條件的字符串,所以這里要填就是前面符合條件的i所對應(yīng)的字符串,所以這一空應(yīng)該填ss[i]。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:按以下遞歸公式求函數(shù)值。例如,當(dāng)給n輸入5時(shí),函數(shù)值為18;當(dāng)給n輸入3時(shí),函數(shù)值為14。請改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。1#include<stdio.h>2/**********found**********/3intfun(n)4{intc;5/**********found**********/6if(n=1)7c=10;8else9c=fun(n-1)+2;10return(c);11}12main()13{intn;14printf(’’Entern:’’);scanf(’’%d’’,&n);15printf(’’Theresult:%d\n\n’’,fun(n));16}標(biāo)準(zhǔn)答案:(1)intfun(intn)(2)if(n==1)知識點(diǎn)解析:函數(shù)功能是按題目中給出的遞歸公式求函數(shù)值。(1)定義函數(shù)fun時(shí),形參n并沒有指定參數(shù)類型,因此,“intfun(n)”改為“intfun(intn)”。(2)根據(jù)題目要求,原題中的“if(n=1)”應(yīng)該是用于判斷n是否等于1,但是被錯(cuò)誤表示成賦值表達(dá)式。因此,“if(n=1)”應(yīng)該改為“if(n==1)”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、規(guī)定輸入的字符串只包含字母和*號。請編寫函數(shù)fun,它的功能是:將字符串中的前導(dǎo)*號全部刪除,中間和尾部的*號不刪除。例如,字符串中的內(nèi)容為:*******A*BC*DEF*G****,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:A*BC*DEF*G****。在編寫函數(shù)時(shí),不得使用C語言提供的字符串函數(shù)。注意:部分源程序在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。1#include<stdio.h>2voidfun(char*a)3{4}5main()6{chars[81];7voidNONO();8printf(’’Enterastring:\n’’);gets(s);9fun(s);10prLntf(’’Thestringafterdeleted:\n’’);puts(s);11NONO();12}13voidNONO()14{/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/15FILE*in,*out;16inti;chars[81];17in=fopen(’’in.dat’’,’’r’’);18out=fopen(’’out.dat’’,’’w’’);19for(i=0;i<10;i++){20fScanf(in,’’%s’’,s);21fun(s);22fprintf(out,’’%s\n’’,s);23}24fclose(in);25fclose(out);}標(biāo)準(zhǔn)答案:1intj=0;2char*p=a;3while(*p==’*’)p++;4while(*p){5a[j++]=*p;6p++;}7a[j]=’\0’;知識點(diǎn)解析:(1)首先,使用一個(gè)指針p指向串的起始位置,然后對指針p指向的字符進(jìn)行判斷,并且如果是“*”,那么跳過該字符,這樣確定了由頭開始的第一個(gè)非“*”的位置。(2)然后,在循環(huán)過程中將第一個(gè)非“*”字符起始到串尾的字符拷貝到字符串a(chǎn)。(3)最后,在新生成的字符串尾加\0’。國家二級C語言機(jī)試(操作題)模擬試卷第9套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(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
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度商鋪物業(yè)管理服務(wù)合同參考2篇
- 偵探柯南介紹
- 二零二五年度婚介公司婚姻法律援助合同3篇
- 山東省棗莊市市中區(qū)2024-2025學(xué)年八年級上學(xué)期期末生物試題(含答案)
- 二零二五年度單車租賃與保險(xiǎn)合作合同2篇
- Unit 6 Exploring the Topic Grammar in Use說課稿 -2024-2025學(xué)年仁愛科普版七年級英語上冊
- 江蘇省蘇州市姑蘇區(qū)2024-2025學(xué)年七年級上學(xué)期期末質(zhì)量監(jiān)測歷史卷(含答案)
- 黑龍江牡丹江市(2024年-2025年小學(xué)六年級語文)統(tǒng)編版能力評測(下學(xué)期)試卷及答案
- 貴州盛華職業(yè)學(xué)院《影視動畫制作》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴州黔南經(jīng)濟(jì)學(xué)院《產(chǎn)品符號與語意》2023-2024學(xué)年第一學(xué)期期末試卷
- 【MOOC】思辨式英文寫作-南開大學(xué) 中國大學(xué)慕課MOOC答案
- 期末測試卷(試題)-2024-2025學(xué)年五年級上冊數(shù)學(xué)北師大版
- 2024年下半年中國石油大連石化分公司招聘30人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 國有企業(yè)品牌建設(shè)策略方案
- 家政培訓(xùn)講師課件
- 廣東省深圳市龍華區(qū)2023-2024學(xué)年八年級下學(xué)期期中數(shù)學(xué)試題
- 視頻監(jiān)控方案-高空瞭望解決方案
- 完整液壓系統(tǒng)課件
- 2024-2030年中國通信工程行業(yè)發(fā)展分析及發(fā)展前景與趨勢預(yù)測研究報(bào)告
- 雙梁橋式起重機(jī)小車改造方案
- 2022年福建省職業(yè)院校技能大賽中職組“現(xiàn)代物流綜合作業(yè)”賽項(xiàng)規(guī)程
評論
0/150
提交評論