版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
國家二級(C語言)機(jī)試模擬試卷33(共9套)(共26題)國家二級(C語言)機(jī)試模擬試卷第1套一、程序填空題(本題共1題,每題1.0分,共1分。)1、函數(shù)fun的功能是:計(jì)算的前n項(xiàng)之和。若x=2.5,n=15時(shí),函數(shù)值為:1.917914。請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#inolude#inoludedoublefun(doublex,intn){doublef,t,inti;/*****************found******************/f=【1】;t=一1;for(i=1;i標(biāo)準(zhǔn)答案:(1)1(2)一1(3)t知識點(diǎn)解析:第一空:由“retumf;"可知f是級數(shù)和,由審題分析可知,級數(shù)從第二項(xiàng)開始規(guī)律變化,因此循環(huán)從第二項(xiàng)開始計(jì)算,故f初始化應(yīng)為第一項(xiàng)的值,故第一空應(yīng)為“1"。第二空:由審題分析可知,級數(shù)的后一項(xiàng)在前一項(xiàng)的基礎(chǔ)上乘以(-1)*x,除以n,故第二空處應(yīng)為“-1"。第三空:t是級數(shù)項(xiàng),f把各個(gè)級數(shù)項(xiàng)累加起來,故第三空處應(yīng)為“t"。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:統(tǒng)計(jì)一個(gè)無符號整數(shù)中各位數(shù)字值為零的個(gè)數(shù),通過形參傳回主函數(shù);并把該整數(shù)中各位上最大的數(shù)字值作為函數(shù)值返回。例如,若輸入無符號整數(shù)30800,則數(shù)字值為零的個(gè)數(shù)為3,各位上數(shù)字值最大的是8。請改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includeintfun(unsignedn,int*zero){intcount=0,max=0,t;do{t=n%10;/***************found********************/if(t=0)count++;if(max標(biāo)準(zhǔn)答案:(1)if(t==0)(2)*zero=count;知識點(diǎn)解析:(1)第一個(gè)標(biāo)識下的if語句是判斷t是否為0,而原題給出的“if(t=0)"是將0賦值給t,所以將第一個(gè)標(biāo)識下的“if(t=0)"改為“if(t==0)"。(2)第二個(gè)標(biāo)識下的“zero=count;"語句,根據(jù)fun函數(shù)中zero的定義為指針型。所以,第二個(gè)標(biāo)識下“zero=count;"應(yīng)該改為“*zero=count;"。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、函數(shù)fun的功能是:將a、b中的兩個(gè)兩位正整數(shù)合并形成一個(gè)新的整數(shù)放在c中。合并的方式是:將a中的十位和個(gè)位數(shù)依次放在變量c的百位和個(gè)位上,b中的十位和個(gè)位數(shù)依次放在變量C的千位和十位上。例如,當(dāng)a=45,b=12。調(diào)用該函數(shù)后,c=1425。注意:部分源程序存在文件PROGl.C中。數(shù)據(jù)文件in.dat中的數(shù)據(jù)不得修改。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#includevoidfun(inta,intb,long*c){}main()/*主函數(shù)*/{inta,b;longc;voidNONO();printf("Inputa,b:");scanf("%d%d",&a,&b);fun(a,b,&c);printf("Theresultis:%ld\n",c);NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*rf,*wf;inti,a,b;longc;rf=fopen("in.daL","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%d,%d",&a,&b);fun(a,b,&c);fprintf(wf,"a=%d,b=%d,c=%ld\n",a,b,c);}fclose(rf);fclose(wf);}標(biāo)準(zhǔn)答案:*c=(b/10)*1000+(a/10)*100+(b%10)*10+(a%10);知識點(diǎn)解析:(1)分解兩位數(shù)的正整數(shù)n的個(gè)位和十位數(shù),可用n%10和n/10實(shí)現(xiàn)。(2)設(shè)x0、x1、x2、x3為一位數(shù),則x0、x1×10、x2×100、x3×1000,可以分別使xO、xl、x2、x3構(gòu)成個(gè)、十、百、千帶權(quán)數(shù),而x0+x1×10+x2×100+x3×1000構(gòu)成四位數(shù)。本題最多只考慮四位數(shù)。國家二級(C語言)機(jī)試模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、請補(bǔ)充main函數(shù),該函數(shù)的功能是:輸出一個(gè)3×3的矩陣,要求必須使用行指針表示輸出變量。注意;部分源程序給出如下.請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在main函數(shù)的橫線上填入所編寫的若干表達(dá)式或語句。試題程序:#include<stdio.h>main(){staticintarray[3][3]={{9,8,7},{6,5,4},(3,2,1}};iht(*p)[3],j,i;p=【】clrscr();for(i=0;i<3;i++){printf("\n\n");for(j=0;j<3;j++)printf("%4d",【】);}}標(biāo)準(zhǔn)答案:array*(*(p+i)+j)知識點(diǎn)解析:第一空:p是一個(gè)指針,指向大小為3的一維數(shù)組。首先要使指針p指向數(shù)組array的首地址,而數(shù)組名array即表示數(shù)組slray的首地址,所以將array賦給p。第二空:*(*(p+i+j)表示數(shù)組的第i行第j列元素,即array[i][j]。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun()的功能是:根據(jù)整型形參n,計(jì)算如下公式的值。A1=1,A2=1/(1+A1),A3=1/(1+A2),…,An=(1/(1+A(n-1))例如,若p=10,則應(yīng)輸出0.617977。請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)mah函數(shù),不得增行或刪行,也不得更改程序的蛄構(gòu).試題程序:#include<conio.h>#include<stdio.h>/**************found********************/ihtfun(ihtn){floatA=l;inti;/**************foudn********************/for(i=2;i<n;i++)A=1.0/(i+A);returnA;}main(){intn;clrscr();printf("\nPleaseentern:");$canf("%d",&n);printf("A%d=%lf\n",n,fun(n));}標(biāo)準(zhǔn)答案:(1)錯(cuò)誤:intfun(intn)正確:floatfun(intn)(2)錯(cuò)誤:for(i=2;i<n;i++)正確:for(i=2;i<=n;i++)知識點(diǎn)解析:該題中fun()函數(shù)的作用是計(jì)算數(shù)列前n項(xiàng)的和,而數(shù)列的組成方式是:第n項(xiàng)的分母是功口第n-1項(xiàng)的值,分子為1,如果循環(huán)累加按for(i=2;i<n;i++)執(zhí)行的話,當(dāng)我們輸入n=2的時(shí)候會是什么結(jié)果?循環(huán)會怎么執(zhí)行呢?循環(huán)不能執(zhí)行,但數(shù)學(xué)思路絕對正確,這就矛盾了,所以循環(huán)條件應(yīng)該是for(i=2;i<n;i++)。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun(),其功能是:計(jì)算并輸出給定10個(gè)數(shù)的方差。其中例如,給定的10個(gè)數(shù)為95.0,89.0,76.0,65.0,88.0,72.0,85.0,81.0,90.0,56.0,則輸出為S=11.730729。注意;部分源程序給出如下.請勿改動(dòng)主函數(shù)mam和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。試題程序:#include<math.h>#include<stdio.h>doublefun(doublex[10]){}main(){doubles,x[i0]={95.0,89.0,76.0,65.0,88.0,72.0,85.0,81.0,90.0,56.0};inti;printf("\nTheoriginaldatais:\n");for(i=0;i<10;i++)printf("%6.1f",x[i]);printf("\n\n");s=fun(x);printf("s=%f\n\n",s);}標(biāo)準(zhǔn)答案:doublefun(doublex[10]){doublexl=0.0,s=0.0;inti;for(i=0;i<10;i++)xl=xl+x[i];xl-xl/10;/*求10個(gè)數(shù)的平均值*/for(i=0;i<l0;i++)s=s+(x[i]-xl)*(x[i]-x1);returnsqrt(s/l0);/*求10個(gè)數(shù)的方差*/}知識點(diǎn)解析:又是一道算式表達(dá)題,程序中用第1個(gè)循環(huán)來完成求10個(gè)數(shù)的總和,接著再用x1=x1/10來求出平均值。國家二級(C語言)機(jī)試模擬試卷第3套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中已建立一個(gè)帶有頭結(jié)點(diǎn)的單向鏈表,在main函數(shù)中將多次調(diào)用fun函數(shù),每調(diào)用一次fun函數(shù),輸出鏈表尾部結(jié)點(diǎn)中的數(shù)據(jù),并釋放該結(jié)點(diǎn),使鏈表縮短。請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!標(biāo)準(zhǔn)答案:(1)next(2)t->data(3)t知識點(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)。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定的程序中,函數(shù)fun()的功能是:計(jì)算并輸出k以內(nèi)最大的10個(gè)能被13或17整除的自然數(shù)之和。K的值由主函數(shù)傳入,若k的值為500,則函數(shù)的值為4622。請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<stdio.h>#include<conio.h>intfun(intk){intm=0,mc=0,j;while((k>=2)&&(mc<10)){/*************found**************/if((k%13=0)||(k%17=0)){m=m+k;mc++;}k--;/*************found**************/returnm;}main(){clrscr();printf("%d\n",fun(500));}標(biāo)準(zhǔn)答案:(1)錯(cuò)誤:if((k%13=0)||(k%17=0))正確:if(k%13=0)||(k%17==0))(2)錯(cuò)誤:缺少大括號正確:加}知識點(diǎn)解析:能被某個(gè)數(shù)整除的表示方法是x%y==0,而并非像題目中所表示的if((k%13=0)||(k%17=0)),所以,if((k%13=0)||(k%17=0))修改后的結(jié)果應(yīng)該是答案所示信息,(2)中缺少程序完整所需的“}”,此類信息在做題時(shí)一定注意,我們可以在上機(jī)考試的時(shí)候先運(yùn)行一下程序,這樣明顯的錯(cuò)誤一般都會有錯(cuò)誤信息顯示出來,比如丟失“}”的錯(cuò)誤信息是“Compoundstatementmissing}infunctionfun”,并在當(dāng)前錯(cuò)誤處停止光標(biāo),我們只要按回車鍵進(jìn)行編輯就可以了。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun(),它的功能是:判斷字符串是否是回文?若是,函數(shù)返回1,主函數(shù)中輸出:YES,否則返回0,主函數(shù)輸出NO?;匚氖侵疙樧x和倒讀都一樣的字符串。例如,字符串LEVEL是回文,而字符串12312就不是回文。[注意]部分源程序給出如下。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。[試題源程序]#include<stdio.h>#defineN80intfun(char*str){}main(){chars[N];printf("Enterastring:")"gets(s);printf("\n\n");puts(s);if(fun(s))printf("YES\n");elseprintf("NO\n");NONO();}NONO(){/*請?jiān)诖撕瘮?shù)內(nèi)打開文件,輸入測試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*rf,*wf;inti;chars[N];rf=fopen("K:\\k06\\24010001\\in.dat","r");wf=fopen("K:\\k06\\24010001\\out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%s",s);if(fun(S))fprintf(wf,"%sYES\n",s);elsefprintf(wf,"%sNO\n",s);}fclose(rf);fclose(wf);}標(biāo)準(zhǔn)答案:intfun(char*str){inti,n=0,fg=1;char*p=str;while(*p){n++;P++;}for(i=0;i<n/2;i++)if(str[i]==str[n-1-i]);else{fg=0;break;}returnfg;}知識點(diǎn)解析:本題的設(shè)計(jì)思路是:(1)定義一個(gè)int型變量flag用做返回值,定義一個(gè)字符指針代替原串遍歷,求字符串的長度;(2)利用循環(huán)及if條件語句判斷字符串首尾對應(yīng)字符是否相等;(3)如果為回文數(shù),修改flag的值;(4)返回flag國家二級(C語言)機(jī)試模擬試卷第4套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(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。請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#defineN6typeclefstructnode{intdata;structnode*next;}NODE;voidfun(NODE*h){NODE*p,*q,intt;p=n;while(p){/**************found***************/q=【1】;/**************found***************/while(【2】){if(P一>data>q一>data){t=P一>data;P->data=q->data;q一>data=t;)q=q一>next;}/**************found***************/P=【3】;}}NODE*creatlist(inta[]){NODE*h,*p,*q;*nti;h=NULL;for(i=0;idata=a[i];q一>next=NULL;if(h==NULL)h=P=q;else{p一>next=q;p=q;}}returnh;}voidoutlist(NODE*h){NODE*p;p=h;if(p==NULL)printf(”TheListisNULL!\n”);else(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,8,6};head=creatliSt(a);printf(”\nTheoriginallist:\n”);outlist(head);fun(head);printf("\nThelistafterinverting:\n”);outlist(head);}標(biāo)準(zhǔn)答案:(1)p一>next(2)q(3)p一>next知識點(diǎn)解析:第一空:由審題分析可知,q從p的下一個(gè)元素開始尋找最小值,故第一空為"p->next"。第二空:由審題分析可知,“while(【2】)"是在剩下的元素當(dāng)中找最小值,剩下的結(jié)點(diǎn)是由q指向的鏈表,故第二空處的循環(huán)條件足q不為NULL鏈表就存在元素繼續(xù)往后搜索,故第二空處為“q"。第三空:由審題分析可知。q指向p的下一個(gè)結(jié)點(diǎn),下次外循環(huán)進(jìn)入的繼續(xù)尋找剩余結(jié)點(diǎn)的最小值,故第三空處應(yīng)為“p->next"。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODII.C中函數(shù)fun的功能是:計(jì)算小于形參k的最大的10個(gè)能被13或17整除的自然數(shù)之和。k的值由主函數(shù)傳入,若k的值為500,則函數(shù)值為4622。請改正程序中的錯(cuò)誤,使程序能輸出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includeintfun(intk){intm=0,mc=0;while((k>=2)&&(mc<10)){/************found************/if((k%n=0)||(k%17=0)){m=m+ktmc++;}k--;}returnm;/************found************/main(){printf("%d\n",fun(500));}標(biāo)準(zhǔn)答案:(1)if((k%13==0)||(k%17==0))(2)}知識點(diǎn)解析:(1)第一個(gè)標(biāo)識下的“if((k%13=0)||(k%17=0))"語句應(yīng)該是判斷k是否能被13或17整除,所以應(yīng)該用邏輯符號“=="而不是賦值符號“=",即“if((k%13==0)||(k%17==0))"。(2)第二個(gè)標(biāo)識下,“_______"明顯沒有函數(shù)結(jié)束括號,所以這里應(yīng)該填“}"。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、函數(shù)fun的功能是;將s所指字符串中除了下標(biāo)為偶數(shù)、同時(shí)ASCⅡ值也為偶數(shù)的字符外,其余的全都刪除:串中剩余字符所形成的一個(gè)新串放在t所指的數(shù)組中。例如,若s所指字符串中的內(nèi)容為:"ABCDEFGl23456",其中字符A的ASCⅡ碼值為奇數(shù),因此應(yīng)當(dāng)刪除;其中字符B的ASCⅡ碼值為偶數(shù),但在數(shù)組中的下標(biāo)為奇數(shù),因此也應(yīng)當(dāng)刪除;而字符2的ASCⅡ碼值為偶數(shù),所在數(shù)組中的下標(biāo)也為偶數(shù),因此不應(yīng)當(dāng)刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是:"246"。注意:部分源程序存在文件PROGl.C中。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容。僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include#includevoidfun(char*s,chart[]){}main(){chars[100],t[100];voidNONO();printf("\nPleaseenterstringS:"),scanf("%s",S);fun(s,t);printf("\nTheresultis:%s\n",t);NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/chars[100],t[100];FILE*rf,*wf;inti;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%s",s);fun(s,t);fprintf(wf,"%s\n",t);}fclose(rf);fclose(wf);}標(biāo)準(zhǔn)答案:inti,j=0;for(i=0;i知識點(diǎn)解析:(1)判斷一個(gè)字符串中的某一字符下標(biāo)i是否為偶數(shù),可用“i%2==0"來判斷;也可以從下標(biāo)0開始,每次增2。判斷字符中的ASCII碼值是否為偶數(shù),則可用"s[i]%2==0"來判定。(2)對串s中下標(biāo)為偶數(shù)的字符進(jìn)行考查,滿足ASCⅡ碼值是偶數(shù)條件的字符就順序放在新串s中,否則就不存放。(3)所有字符處理完后,記得在新串s的末尾加上結(jié)束符"’\0’"。國家二級(C語言)機(jī)試模擬試卷第5套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:計(jì)算x所指數(shù)組中N個(gè)數(shù)的平均值(規(guī)定所有數(shù)均為正數(shù)),平均值通過形參返回主函數(shù),將小于平均值且最接近平均值的數(shù)作為函數(shù)值返回,在主函數(shù)中輸出。例如,有10個(gè)正數(shù):4630324061745154826,平均值為:30.500000主函數(shù)中輸出:m=30.0請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKI.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#defineN10doublefun(doublex[],double*av){inti,j;doubled,s;s=0;for(i=0,i標(biāo)準(zhǔn)答案:(1)*av(2)i(3)x[j]或(1)*av(2)x[i](3)j知識點(diǎn)解析:第一空:由“if(x[i]<*ava&*av.x[i]<=d)"可知,*av:是數(shù)組元素的平均值,故第一空處應(yīng)為"*av"。第二空:“d=*av-x[i];j=【2】;"d是平均值和元素x[i]的差值,j在這里保存這個(gè)最接近平均值的元素,因此j可以保存x[i]的值或x[i]的下標(biāo)均可。第三空:當(dāng)j保存的是x[i]的下標(biāo)時(shí),返回值是x[j];如果j保存的x[i],那么函數(shù)返回j。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:統(tǒng)計(jì)字符串中各元音字母(即:A、E、I、O、U)的個(gè)數(shù)。注意:字母不分大、小寫。例如:若輸入;THIsisaboot,則輸出應(yīng)該是:1、0、2、2、0。請改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)mam函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includevoidfun(char*s,intnum[5]){intk,i=5;for(k=0;k=0)num[i]++;}}main(){chars1[81];intnuml[5],i;printf("\nPleaseenterastring:");gets(81);fun(s1,num1);for(i=0;i<5;i++)printf("%d",num1[i]),printf("\n");}標(biāo)準(zhǔn)答案:(1)num[k]=0;(2)SWitch(*s)知識點(diǎn)解析:(1)第一個(gè)標(biāo)識下的for循環(huán)過程是將num數(shù)組中的變量初始值設(shè)置為0,用來統(tǒng)計(jì)每一個(gè)元音字母出現(xiàn)的個(gè)數(shù),for循環(huán)中的循環(huán)條件表達(dá)式中的變量是k,所以第二個(gè)標(biāo)識下“num[i]=0;"改為“num[k]=0;"。(2)第二個(gè)標(biāo)識下的switch.case條件選擇的功能應(yīng)該是對s指針指向的字符串中的每一個(gè)字符進(jìn)行判斷,不應(yīng)該是s的數(shù)組名,所以第三個(gè)標(biāo)識下“switch(s)"改為“switch(*s)"。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、函數(shù)fun的功能是:將s所指字符串中除了下標(biāo)為奇數(shù)、同時(shí)ASCⅡ值也為奇數(shù)的字符之外,其余的所有字符都刪除,串中剩余字符所形成的一個(gè)新串放在t所指的數(shù)組中。例如,若S所指字符串中的內(nèi)容為:"ABCDEFGl2345",其中字符A的ASCⅡ碼值雖為奇數(shù),但所在元素的下標(biāo)為偶數(shù),因此必需刪除;而字符1的ASCⅡ碼值為奇數(shù),所在數(shù)組中的下標(biāo)也為奇數(shù),因此不應(yīng)當(dāng)刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是:"135"。注意:部分源程序存在文件PROGl.C中。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include#includevoidfun(char*s,chart[]){}main(){chars[100],t[100];voidNONO();printf("\nPleaseenterstrings:");scarlf("%s",s);fun(s,t);printf("\nTheresultis:%s\n",t);NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/chars[100],t[100];FTLE*rf,*wf;inti;rf=fopen("in.dat","r"),wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%s",s);fun(s,t);fprintf(wf,"%s\n",t);}fclose(rf);fclose(wf);}標(biāo)準(zhǔn)答案:inti,j=0;for(i=1,i知識點(diǎn)解析:(1)判斷一個(gè)字符串中的某一字符下標(biāo)i是否為奇數(shù),可用“i%2!=0"來判斷,也可以從下標(biāo)1開始,每次移動(dòng)2個(gè)位置;而判斷字符的ASCⅡ碼值是否為奇數(shù),則可用“s[i]%2!=0"來判定。(2)對串s中各個(gè)字符串逐個(gè)進(jìn)行考查,滿足條件的字符就順序放在新串t中,否則就不存放。(3)所有字符處理完后,記得在新串t的末尾加上結(jié)束符"’\0’"。國家二級(C語言)機(jī)試模擬試卷第6套一、程序填空題(本題共1題,每題1.0分,共1分。)1、人員的記錄由編號和出生年、月、日組成,N名人員的數(shù)據(jù)已在主函數(shù)中存入結(jié)構(gòu)體數(shù)組std中,且編號惟一。函數(shù)fun的功能是:找出指定編號人員的數(shù)據(jù),作為函數(shù)值返回,由主函數(shù)輸出,若指定編號不存在,返回?cái)?shù)據(jù)中的編號為空串。請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKI.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#defineN8typedefstruct{charnum[10];intyear,month,day;}STU;/**********found**********/【1】fun(STU*std,char*num){inti;STUa={"",9999,99,99};for(i=0;i標(biāo)準(zhǔn)答案:STUstd[i].numstd[i]知識點(diǎn)解析:第一空:由“STUp;p=fun(std,n);”,可知fun函數(shù)的返回值是STU結(jié)構(gòu)體,因此第一空處應(yīng)為“STUfun(STU*std,char*num)”。第二空:此處是用strcmp函數(shù)比較兩個(gè)字符串是否相同,參數(shù)std是指向結(jié)構(gòu)體數(shù)組的指針,故第二空處應(yīng)為“if(strcmp(std[i].num,num)==0)”。第三空:如果“if(strcmp(std[i].num,num)==0)”成立,則返回值就是std[i]結(jié)構(gòu)體。二、程序修改題(本題共1題,每題1.0分,共1分。)2、假定整數(shù)數(shù)列中的數(shù)不重復(fù),并存放在數(shù)組中。給定程序MODII.C中函數(shù)fun的功能是:刪除數(shù)列中值為x的元素。n中存放的是數(shù)列中元素的個(gè)數(shù)。請改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。#include#defineN20intfun(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標(biāo)準(zhǔn)答案:if(p==n)return-1;a[i]=a[i+1];知識點(diǎn)解析:(1)第一標(biāo)識下“if(P==n)return-1;”中變量P沒有定義,編譯時(shí)會提示出錯(cuò)。根據(jù)題意,這里是判斷p是否已經(jīng)到了字符串的末尾,即是否存在值為x的元素,如果不存在則返回-1,故第一標(biāo)識下應(yīng)改為“if(p==n)return-1;”。(2)“for(i=p;i三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、假定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun。它的功能是:將字符串中的前導(dǎo)*號全部移到字符串的尾部。例如,字符串中的內(nèi)容為:********A*BC*DEF*G****,移動(dòng)后,字符串中的內(nèi)容應(yīng)當(dāng)是:A*BC*DEF*G**********。在編寫函數(shù)時(shí),不得使用C語言提供的字符串函數(shù)。注意:部分源程序在文件FROGl.C文件中。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容。僅在函數(shù)fun的花括號中填入你編寫的若干語句。#includevoidfun(char*a){}main(){chars[81];intn=0;voidNONO();printf("Enterastring:\n");gets(s);fun(s);printf("Thestringaftermoveing:\n");puts(s);NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*in,*out;inti;chars[81];in=fopen("in.dat","r");out=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(in,"%s",s);fun(s);fprintf(out,"%s\n",s);}fclose(in);fclose(out);}標(biāo)準(zhǔn)答案:{inti=0,n=0;//"*"號統(tǒng)計(jì)器n賦初始值0char*p;p=a;//工作指針p指向字符串swhile(*p==’*’)//循環(huán)統(tǒng)計(jì)前導(dǎo)"*"號數(shù)目n{n++;p++;}while(*p)//截取"*"號字符{a[i]=*p;i++;p++;}while(n!=0)//在串尾開始添加n個(gè)"*"號{a[i]=’*’;i++;n--;}a[i]=’\0’;}知識點(diǎn)解析:(1)首先,設(shè)置一個(gè)指針變量指向字符串的頭位置,并使用循環(huán),統(tǒng)計(jì)從字符串頭開始的“*”號數(shù)目。(2)當(dāng)指針指向由字符串頭開始的第一個(gè)非“*”號字符,將指針指向的字符依次賦值給字符串。(3)最后,當(dāng)指針指向字符串尾時(shí),開始添加第一步統(tǒng)計(jì)的“*”號個(gè)數(shù),然后在新生成的字符串尾加’\0’。國家二級(C語言)機(jī)試模擬試卷第7套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:在3×4的矩陣中找出在行上最大、在列上最小的那個(gè)元素,若沒有符合條件的元素則輸出相應(yīng)信息。例如,有下列矩陣:[*]程序執(zhí)行結(jié)果為:find:a[2][2]=9請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#defineM3#defineN4voidfun(int(*a)[N]){inti=0,j,find=0,rmax,c,k;while((i標(biāo)準(zhǔn)答案:(1)j(2)0(3)i++知識點(diǎn)解析:第一空:“rmax=a[i]啪;c=【1】;}"ramx存放行上最大值,根據(jù)下面一個(gè)循環(huán)體內(nèi)“if(k!=i&&a[k][c]<=rmax)"可知,c存放rmax所在的列的位置,故第一空處應(yīng)為“i"。第二空:“if(k!=i&&a[k][c]<=rmax)find=【2】;"如果列上的元素a[k][c]比rmax還小,說明rmax不是列上最小值,那么標(biāo)識變量find應(yīng)該為假,下次就無須進(jìn)入while(k二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODII.C中函數(shù)fun的功能是:從整數(shù)1到55之間,選出能被3整除、且有一位上的數(shù)是5的那些數(shù),并把這些數(shù)放在b所指的數(shù)組中,這些數(shù)的個(gè)數(shù)作為函數(shù)值返回,規(guī)定,函數(shù)中a1放個(gè)位數(shù),a2放十位數(shù)。請改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。#includeintfun(int*b){intk,a1,a2,i=0;for(k=10;k<=55jk++){/*************found*************/a2=k/10;al=k-a2*10;if((k%3==0&&a2==5)||(k%3==0&&a1==5))(b[i]=k;i++;}/*************found***********/returnk;}main(){inta[100],k,m;m=fun(a);printf("Theresultis:\n");for(k=0;k標(biāo)準(zhǔn)答案:(1)a2=k/10;(2)returni;知識點(diǎn)解析:(1)第一標(biāo)識下“a2=k/l0;"是截取十位數(shù),截取個(gè)位數(shù)是k%10,而截取十位數(shù)是k/10,因此第一標(biāo)識下應(yīng)改成“a2=k/10:"。(2)變量i是標(biāo)識數(shù)組b的下標(biāo)也就是數(shù)組的個(gè)數(shù),題目中“retumk;"返回的是循環(huán)條件表達(dá)式中的變量,所以這里應(yīng)該將"returnk;"改為"returni;"。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請編寫一個(gè)函數(shù)fun,它的功能是:求出一個(gè)2×M整型二維數(shù)組中最大元素的值,并將此值返回調(diào)用函數(shù)。注意:部分源程序存在文件PROGl.C文件中。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include#defineM4intfun(inta[][M]){}main(){intarr[2][M]={5,8,3,45,76,-4,12,82};voidNONO();printf("max=%d\n",fun(arr));NONO();}voidNONO()(/*本函數(shù)用于打開文件。輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*wf;intarr[][M]={5,8,3,90,76,一4,12,82};wf=fopen("out.dat","w");tpprintf(wf,"max=%d\n",fun(arr));fclose(wf);}標(biāo)準(zhǔn)答案:inti,j,max=a[0][0];for(i=0;i<2;i++)for(j=0;j知識點(diǎn)解析:進(jìn)入fun函數(shù),根據(jù)前面的分析:(1)首先設(shè)置變量max,用來記錄最大值,賦予該變量初值。(2)遍歷整個(gè)數(shù)組,將每一個(gè)元素與max進(jìn)行比較,若大于max,則將此新值存入max。當(dāng)數(shù)組遍歷完成后,max中存放的即為數(shù)組的最大元素。(3)使用return語句返回max數(shù)值。國家二級(C語言)機(jī)試模擬試卷第8套一、程序填空題(本題共1題,每題1.0分,共1分。)1、標(biāo)準(zhǔn)答案:[N]t[i][j]t[j][i]知識點(diǎn)解析:第一空:在主函數(shù)中fun函數(shù)的調(diào)用形式是“fun(t);”,t是數(shù)組名,故fun函數(shù)的參數(shù)是指針,因此第一空處應(yīng)為“[N]”。第二空:“___2___=t[i][j]+t[j][i];”是將對稱元素相加存放在左下三角元素中,左下三角元素可表示為t[i][j],故第二空處應(yīng)為“t[i][j]”。第三空:“___3___=0;”是將右上三角元素置0,右上三角元素可表示為t[j][i],故第三空為“t[j][i]”。二、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)2、假定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,它的功能是:除了字符串前導(dǎo)的*號之外,將串中其他*號全部刪除。在編寫函數(shù)時(shí),不得使用c語言提供的字符串函數(shù)。例如,字符串中的內(nèi)容為:****A*BC*DEF*G******,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:****ABCDEFG。注意:部分源程序在文件PROGl.C文件中。請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#includevoidfun(char*a){}main(){chars[81];voidNONO();printf("Enterastring:\n");gets(s);fun(s);printf(
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 證券公司圍護(hù)樁施工合同
- 道路施工隊(duì)合作協(xié)議
- 農(nóng)村房屋拆遷補(bǔ)償合同
- 劇院排水設(shè)施安裝合同
- 培訓(xùn)零售環(huán)境防疫措施
- 醫(yī)療器械招投標(biāo)規(guī)范解讀
- 無抵押企業(yè)借款合同
- 通信設(shè)備質(zhì)量管理辦法
- 商業(yè)綜合體二手房交易合同范文
- 制造執(zhí)行系統(tǒng)操作與應(yīng)用課件 3-4-2典型離散制造工藝
- NB/T 11257-2023井工煤礦采掘工作面防治水安全條件評價(jià)
- 請款單(可直接打印-標(biāo)準(zhǔn)模板)
- 班主任德育工作:班主任培訓(xùn)講課件
- RJ45插拔測試報(bào)告
- 2022年病歷質(zhì)控考核標(biāo)準(zhǔn)完整
- 教師爭做新時(shí)代的“大先生”心得體會8篇
- 腰椎間盤突出健康教育課件
- 大學(xué)生勞動(dòng)教育PPT完整全套教學(xué)課件
- 公共事務(wù)管理專業(yè)
- 高中思想政治-高三一輪復(fù)習(xí)課文化創(chuàng)新教學(xué)設(shè)計(jì)學(xué)情分析教材分析課后反思
- 高中美術(shù)-文化變革 美術(shù)發(fā)展教學(xué)設(shè)計(jì)學(xué)情分析教材分析課后反思
評論
0/150
提交評論