版權(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ī)試模擬試卷20(共9套)(共27題)國(guó)家二級(jí)(C語(yǔ)言)機(jī)試模擬試卷第1套一、程序填空題(本題共1題,每題1.0分,共1分。)1、字符串str由數(shù)字字符‘0’和‘1’組成(長(zhǎng)度不超過(guò)8個(gè)字符),可看作二進(jìn)制數(shù),請(qǐng)補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:把str字符串轉(zhuǎn)換成十進(jìn)制數(shù),結(jié)果由函數(shù)返回。例如,輸入“1001”,結(jié)果輸出:9。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫(xiě)的若干表達(dá)式或語(yǔ)句。試題程序:#include<stdio.h>#include<stdlib.h>#include<string.h>intfun(char*str){intn;char*p=str;【】;p++;while(*p){n=【】;p++;}return【】;}main(){charstr[9];inti;intn;printf("Enterastringmadeupof’0’and’1’digitalcharacter:");gets(str);if(strlen(str)>8){printf("Error:stringtoolonger!pleaseinputagain!\n\n");exit(0);}for(i=0;str[i];i++)if(str[i]<’0’||str[i]>’1’){printf("Error:%cnotis’0’and’1’digitalcharacter!\n\n",str[i]);exit(0);}printf("Theoriginalstring:");puts(str);n=fun(str);printf("\n%sisconveredtodecimalnumber:%d\n\n",str,n);}標(biāo)準(zhǔn)答案:n=*p-’0’n*2+*p’0’n知識(shí)點(diǎn)解析:第一空:’0’和’1’是字符串中的數(shù)字字符,為了進(jìn)行數(shù)字運(yùn)算,必須要將數(shù)字字符轉(zhuǎn)換為數(shù)字,用數(shù)字字符減去字符’0’的ASCII碼,就得到對(duì)應(yīng)的數(shù)字。第二空:將二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)的算法是:以1001為例,對(duì)應(yīng)的十進(jìn)制數(shù)為1*23+0*22+0*2+1=2*(2*(2*1+0)+0)+1=9。明白了這一算法,此空就非常容易了。第三空:最后計(jì)算的結(jié)果存放在變量n中,所以函數(shù)的返回值為n。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序中,函數(shù)fun()的功能是:使數(shù)組中的元素的值縮小5倍。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<stdio.h>#include<conio.h>floatm[10];/*************found**************/intfun(void){intj;printf("Insubfuncaftercalling\n");for(j=O;j<lO;j++){;/*************found**************/print("%f",m[j]%5);}}main(){inti;printf("Inmainbeforecalling\n");for(i=0;i<10;i++){m[i]=i+20;printf("%f",m[i]);}fun();printf("\nInmainaftercalling\n");for(i=O;i<10;i++)printf("%f",m[i]/5);}標(biāo)準(zhǔn)答案:(1)錯(cuò)誤:intfun(void)正確:voidfun(void)(2)錯(cuò)誤:printf("%f",m[j]%5);正確:printf("%f",m[j]/5);知識(shí)點(diǎn)解析:錯(cuò)誤1:函數(shù)fun()沒(méi)有返回值,所以定義函數(shù)類型為void。錯(cuò)誤2:此處考查的是除法運(yùn)算符和取余運(yùn)算符的區(qū)別。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、m個(gè)人的成績(jī)存放在score數(shù)組中,請(qǐng)編寫(xiě)函數(shù)fun(),它的功能是:將低于平均分的人數(shù)作為函數(shù)值返回,將低于平均分的分?jǐn)?shù)放在below所指的數(shù)組中。例如,當(dāng)score數(shù)組中的數(shù)據(jù)為10,20,30,40,50,60,70,80,90時(shí),函數(shù)返回的人數(shù)應(yīng)該是4,below中的數(shù)據(jù)應(yīng)為10,20,30,40。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:#include<conio.h>#include<stdio.h>#include<string.h>intfun(intscore[],intm,intbelow[]){}main(){ihti,n,below[9];intscore[9]={10,20,30,40,50,60,70,80,90};clrscr();n=fun(score,9,below);printf("\nBelowtheaveragescoreare:");for(i=0;i<n;i++)printf("%d",below[i]);}標(biāo)準(zhǔn)答案:intfun(intscore[],intm,intbelow[]){inti,j=0;floatav=0.0;for(i=0;i<m;i++)av=av+score[i]/m;/*求平均值*/for(i=0;i<m;i++)if(score[i]<av)/*如果分?jǐn)?shù)低于平均分,則將此分?jǐn)?shù)放入below數(shù)組中*/below[j++]=score[i];returnj;/*返回低于平均分的人數(shù)*/}知識(shí)點(diǎn)解析:該題第1個(gè)循環(huán)的作用是求出平均分av,第2個(gè)循環(huán)的作用是找出低于平均分的成績(jī)并存入below數(shù)組中。國(guó)家二級(jí)(C語(yǔ)言)機(jī)試模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:找出N×N矩陣中每列元素中的最大值,并按順序依次存放于形參b所指的一維數(shù)組中。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#defineN4voidfun(int(*a)[N],int*b){inti,j;for(i=0;i標(biāo)準(zhǔn)答案:(1)a[0][i](2)<(3)x,y知識(shí)點(diǎn)解析:第一空:第二個(gè)循環(huán)是尋找每列的最大值,方法是用最大值變量b[i]標(biāo)記第一個(gè)待找數(shù)據(jù),逐個(gè)把所有待找數(shù)據(jù)和b[i]進(jìn)行比較,并用b[i]標(biāo)記其當(dāng)前最大值,從而找出最大值。故第一空處為第一個(gè)待找數(shù)據(jù)“a[0][i]。第二空:由上述的分析可知,如果b[i]小于a[j][i],那么用b[i]標(biāo)記其當(dāng)前最大值,故第二空處為“<"。第三空:fun函數(shù)的聲明為:voidfun(int(*a)[N],int*b),函數(shù)的兩個(gè)參數(shù)均是指針。故在主函數(shù)內(nèi)fun函數(shù)的調(diào)用形式為“fun(x,y)",x是二維數(shù)組首地址,y是一維數(shù)組首地址。二、程序修改題(本題共1題,每題1.0分,共1分。)2、數(shù)列中,第一項(xiàng)為3,后一項(xiàng)都比前一項(xiàng)的值增5。下列給定程序中,函數(shù)fun()的功能是:計(jì)算前n(4≤n≤50)項(xiàng)的累計(jì)和。在累加過(guò)程中把那些被4除后余2的當(dāng)前累加值放入數(shù)組中,符合此條件的累加值的個(gè)數(shù)作為函數(shù)值返回主函數(shù)里。如,當(dāng)n的值為20時(shí),該數(shù)列為3,8,13,18,23,28,…,93,98。符合此條件的累加值應(yīng)為42,126,366,570,1010。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<stdio.h>#defineN20intfun(ihtn,int*a)/*************found*************/{inti,j,k,sum;sum=0;for(k=3,i=0;i<n;i++,k+=5){sum=sum+k;/************found***************/if(sum%4=2)a[j++]=sum;}/*************found**************/returnj;}main(){inta[N],d,n,i;printf("\nEntern(4<=n<=50):");scanf("%d",&n);d=fun(n,a);printf("\n\nTheresult:\n");for(i=0;i<d;i++)printf("%6d",a[i]);printf("\n\n");}標(biāo)準(zhǔn)答案:(1)錯(cuò)誤:inti,j,k,sum;正確:inti,j=0,k,sum;(2)錯(cuò)誤:if(sum%4=2)正確:if(sum%4=2)(3)錯(cuò)誤:returnj;正確:returnj++;知識(shí)點(diǎn)解析:按照老辦法,我們先看數(shù)學(xué)思路,該題是一個(gè)公差為5的等差數(shù)列,簡(jiǎn)單吧,要是用數(shù)學(xué)的辦法解決也就是一個(gè)公式兩個(gè)符號(hào),迎刃而解,所以這樣很有規(guī)律的等差數(shù)列前n項(xiàng)和用C語(yǔ)言來(lái)求的話,也相當(dāng)簡(jiǎn)單,關(guān)鍵看細(xì)節(jié)!i,k,sum都分別定義了,那j呢?所以,正確的應(yīng)該是inti,j=0,k,sum;,再往下看,if(sum%4=2)是在說(shuō)明題干中“在累加過(guò)程中把那些被4除后余2的當(dāng)前累加值放入數(shù)組中,符合此條件的累加值的個(gè)數(shù)作為函數(shù)值返回主函數(shù)”,那么“余2”的表示方法呢?不用看就知道應(yīng)該是if(sum%4==2),后面的返回錯(cuò)誤就不提了吧,看看a[j++]=sum;語(yǔ)句,難道還能返回給j嗎?三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫(xiě)函數(shù)fun,其功能是:計(jì)算并輸出下列多項(xiàng)式的值:例如,在主函數(shù)中從鍵盤(pán)給n輸入8后,輸出為:s=0.662872。注意:要求n的值大于1但不大于100。部分源程序在文件PROGl.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。#includedoublefun(intn){}NONO()(/*請(qǐng)?jiān)诖撕瘮?shù)內(nèi)打開(kāi)文件,輸入測(cè)試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*rf,*wf;intn,i;doubles;rf=fopen(”in.dat”,”r”);wf=fopen(”out.ctat”,”w”);for(i=0;i<10;i++){fscanf(rf,”%d”,&n);S=fun(n);fprintf(wf,”%lf\n”,s);}fclose(rf);fclose(wf);}main(){intnjdoubles;printf("\nInputn:");scanf(”%d”,&n);s=fun(n);printf(”\ns=%f\n”,s);NONO();}標(biāo)準(zhǔn)答案:{inti;doublesum=0.0;if(n>1&&n<=100){for(i=1;i<=n;i++)sum+=1.0/(2*i-1)-1.0/(2*i);}returnsum;}知識(shí)點(diǎn)解析:(1)根據(jù)題干中給出的數(shù)列,推出每一項(xiàng)是(1.0/(2*i-1)-1.0/(2*i))。(2)在循環(huán)中求得每一項(xiàng),然后對(duì)其進(jìn)行累加求和。國(guó)家二級(jí)(C語(yǔ)言)機(jī)試模擬試卷第3套一、程序填空題(本題共1題,每題1.0分,共1分。)1、函數(shù)fun的功能是:計(jì)算請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!標(biāo)準(zhǔn)答案:(1)x(2)n(3)t知識(shí)點(diǎn)解析:本題中函數(shù)的功能是計(jì)算級(jí)數(shù)和,級(jí)數(shù)項(xiàng)的變化規(guī)律是:后面一項(xiàng)是在前面一項(xiàng)的基礎(chǔ)上乘以x除以n。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:根據(jù)整型形參m,計(jì)算如下公式的值。例如,若m中的值為:5,則應(yīng)輸出:1.463611。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!標(biāo)準(zhǔn)答案:(1)for(i=2;i<=m;i++)(2)y+=1.O/(i*i);知識(shí)點(diǎn)解析:該題中函數(shù)功能是計(jì)算公式的值。其中,公式中涉及在循環(huán)中對(duì)各項(xiàng)的計(jì)算及累加求和。從已給定源程序的main主函數(shù)開(kāi)始入手,“printf(〝\nTheresultis%1f\n〞,fun(n));”語(yǔ)句中調(diào)用fun函數(shù),計(jì)算公式的值。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編一個(gè)函數(shù)fun,函數(shù)的功能是使實(shí)型數(shù)保留2位小數(shù),并對(duì)第三位進(jìn)行四舍五入(規(guī)定實(shí)型數(shù)為正數(shù))。例如:實(shí)型數(shù)為1234.567,則函數(shù)返回1234.572000;實(shí)型數(shù)為1234.564,則函數(shù)返回1234.562000。注意:部分源程序存在文件PROGl.C文件中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。標(biāo)準(zhǔn)答案:知識(shí)點(diǎn)解析:該程序功能是進(jìn)行四舍五入。其中,通常求實(shí)數(shù)x保留m位小數(shù),首先將x擴(kuò)大10(m+1)倍,擴(kuò)大后的x加上5后,進(jìn)行截取判斷,最后進(jìn)行恢復(fù)。國(guó)家二級(jí)(C語(yǔ)言)機(jī)試模擬試卷第4套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:將形參sut所指結(jié)構(gòu)體數(shù)組中年齡最大者的數(shù)據(jù)作為函數(shù)值返回,并在main函數(shù)中輸出。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includetypedefstruct{charname[10];intage;}STD;STDfun(STDstcl[],int.n){STDmax;inti;/**************found***************/max=【1】;for(i=1;i標(biāo)準(zhǔn)答案:*stdstd[i].age知識(shí)點(diǎn)解析:第一空:max變量保存最大值,在循環(huán)開(kāi)始之前,先給max賦值并假定這個(gè)值就是最大值,即“max=*std;”給max賦初值。第二空:“if(max.age<___2___)”比較max的age成員變量和std[i]的age成員變量,如果max的age變量小于std[i]的age成員變量,那么將std[i]賦給max,即第二空處應(yīng)為“if(max.age二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:計(jì)算整數(shù)n的階乘。請(qǐng)改正程序中的錯(cuò)誤或在下劃線處填上適當(dāng)?shù)膬?nèi)容并把下劃線刪除,使它能計(jì)算出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includedoublefun(intn){doubleresult=1.0;while(n>1&&n<170)/******************found*******************/result*=--n;/******************found*******************/return__________;}main(){intn;printf(”EnLeraninteger:”);scanf(”%d”,&n);printf(”\n\n%d!=%lg\n\n”,i"1,fun(n));}標(biāo)準(zhǔn)答案:result*=n--;returnresult;知識(shí)點(diǎn)解析:(1)第一個(gè)標(biāo)識(shí)下while循環(huán)過(guò)程實(shí)現(xiàn)n的階乘,根據(jù)階乘的算法n!=n*(n-1)*…*1,題干中的語(yǔ)句“result*=--n;”先對(duì)n進(jìn)行減1操作,結(jié)果就少乘了n,所以將“result*=--n;”改為“result*=n--;”。(2)根據(jù)fun函數(shù)的定義,fun函數(shù)應(yīng)該返回階乘結(jié)果,所以第二個(gè)標(biāo)識(shí)下填空為“returnresult;”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫(xiě)一個(gè)函數(shù)fun,它的功能是:計(jì)算n門課程的平均分,計(jì)算結(jié)果作為函數(shù)值返回。例如:若有5門課程的成績(jī)是:90.5,72,80,61.5,55則函數(shù)的值為:71.80。注意:部分源程序存在文件PROGl.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。#includefloatfun(float*a,intn){}main(){floatscore[30]={90.5,72,80,61.5,55},aver;voidNONO();aver=fun(score,5);printf("\nAveragescoreis:%5.2f\n",aver);NONO();}voidNONO(){/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*fp,*wf;inti,j;floataver,score[5];fp=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){for(j=0;j<5;j++)fscanf(fp,"%f,",&score[j]);aver=fun(score,5);fprintf(wf,"%5.2f\n",aver);}fclose(fp);fclose(wf);}標(biāo)準(zhǔn)答案:{inti;floatave=0.0;for(i=0;i知識(shí)點(diǎn)解析:(1)在函數(shù)中首先定義平均分的變量,并將其初始化值置為0。(2)然后在for循環(huán)中,求得所有成績(jī)的總分,并在總分的基礎(chǔ)上求得平均分。國(guó)家二級(jí)(C語(yǔ)言)機(jī)試模擬試卷第5套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:在3×4的矩陣中找出在行上最大、在列上最小的那個(gè)元素,若沒(méi)有符合條件的元素則輸出相應(yīng)信息。例如,有下列矩陣:[*]程序執(zhí)行結(jié)果為:find:a[2][2]=9請(qǐng)?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++知識(shí)點(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還小,說(shuō)明rmax不是列上最小值,那么標(biāo)識(shí)變量find應(yīng)該為假,下次就無(wú)須進(jìn)入while(k二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:用遞歸算法計(jì)算斐波拉契數(shù)列中第n項(xiàng)的值。從第1項(xiàng)起,斐波拉契數(shù)列為:1、1、2、3、5、8、13、21、……例如,若給n輸入7,該項(xiàng)的斐波拉契數(shù)值為:13。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。#includelongfun(intg){/**********found**********/switch(g);/*switch語(yǔ)句*/{case0:return0;/**********found**********/case1;case2:return1;}return(fun(g-1)+fun(g-2));}main(){longfib;intn;printf("Inputn:");scanf("%d",&n);printf("n=%d\n",n);fib=fun(n);printf("fib=%d\n\n",fib);}標(biāo)準(zhǔn)答案:switch(g)case1:return1知識(shí)點(diǎn)解析:(1)第一個(gè)標(biāo)識(shí)下的switch后用括號(hào)括起來(lái)的表達(dá)式的標(biāo)準(zhǔn)語(yǔ)法后面是沒(méi)有“;”的,所以“switch(g);”應(yīng)該改為“switch(g)”。(2)第二個(gè)標(biāo)識(shí)下的case加常量表達(dá)式的后面用冒號(hào)連接選擇語(yǔ)句,所以“case1;”改為“case1:”?!癱ase1:”和“case2:”都是返回1,應(yīng)該寫(xiě)兩個(gè)“return1”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫(xiě)一個(gè)函數(shù)fun,它的功能是:將一個(gè)數(shù)字字符串轉(zhuǎn)換為一個(gè)整數(shù)(不得調(diào)用C語(yǔ)言提供的將字符串轉(zhuǎn)換為整數(shù)的函數(shù))。例如,若輸入字符串"-1234",則函數(shù)把它轉(zhuǎn)換為整數(shù)值-1234。注意:部分源程序存在文件PROGl.C文件中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。#include#includelongfun(char*p){}main()/*主函數(shù)*/{chars[6];voidNONO();longn;printf("Enterastring:\n");gets(s);n=fun(s);printf("%ld\n",n);NONO();}voidNONO(){/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*fp,*wf;inti;chars[20];longn;fp=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(fp,"%s",s);n=fun(s);fprintf(wf,"%ld\n",n);}fclose(fp);fclose(wf);}標(biāo)準(zhǔn)答案:longs=0,t;inti=0,j,n=strlen(p),k,s1;//求得字符串長(zhǎng)度nif(p[0]==’-’)i++;for(j=i;j<=n一1;j++){t=p[j]一’0’;//把字符變成數(shù)值s1=10;for(k=j;k知識(shí)點(diǎn)解析:進(jìn)入fun函數(shù),根據(jù)前面的分析:從左到右移動(dòng)指針p。利用上一步不斷把t中的數(shù)據(jù)左移一位,把p當(dāng)前所指字符轉(zhuǎn)換成數(shù)字再加上低位,從而把數(shù)字字符串轉(zhuǎn)換成一個(gè)整數(shù)。國(guó)家二級(jí)(C語(yǔ)言)機(jī)試模擬試卷第6套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:求ss所指字符串?dāng)?shù)組中長(zhǎng)度最長(zhǎng)的字符串所在的行下標(biāo),作為函數(shù)值返回,并把其串長(zhǎng)放在形參n所指變量中。ss所指字符串?dāng)?shù)組中共有M個(gè)字符串,且串長(zhǎng)#include#defineM5#defineN20/**********found**********/intfun(char(*ss)【1】,int*n){inti,k=0,len=0;for(i=0;i*n){/**********found**********/【3】;k=i;}}return(k);}main(){charss[M][N]={"shanghai","guangzhou","beijing","tianjing","cchongqing"};intn,k,i;printf("\nTheoriginalstringsare:\n");for(i=0;i標(biāo)準(zhǔn)答案:[N]len*n=len知識(shí)點(diǎn)解析:第一空:在主函數(shù)內(nèi)fun函數(shù)調(diào)用“k=fun(ss,&n);”可知,fun函數(shù)的第一個(gè)參數(shù)為數(shù)組首地址,是指針變量,故第一空處的fun函數(shù)定義應(yīng)為“[N]”。第二空:由審題分析可知,i=0時(shí),記錄長(zhǎng)度的變量*n應(yīng)該賦初值len,故第二空處應(yīng)為“l(fā)en”。第三空:由審題分析可知,如果len比*n大,那么*n記錄這個(gè)大的值,故第三空處應(yīng)為“*n=len;”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:求出數(shù)組中最大數(shù)和次最大數(shù),并把最大數(shù)和a[0]中的數(shù)對(duì)調(diào)、次最大數(shù)和a[1]中的數(shù)對(duì)調(diào)。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#defineN20intfun(int*a,intn){inti,m,t,k;for(i=0;i<2;i++){/**********found**********/m=0;for(k=i+1;ka[m])t=a[i];a[i]=a[m];a[m]=t;}}main(){intx,b[N]={11,5,12,0,3,6,9,7,10,8},n=10,i;for(i=0;i標(biāo)準(zhǔn)答案:m=i;if(a[k]>a[m])m=k;知識(shí)點(diǎn)解析:(1)第二個(gè)標(biāo)識(shí)符下for循環(huán)逐個(gè)對(duì)m個(gè)數(shù)據(jù)進(jìn)行選擇判斷,原題中“m=0;”語(yǔ)句將m值設(shè)置為0,在循環(huán)中m值始終是0,不會(huì)改變,根據(jù)“for(i=0;i<2;i++)”語(yǔ)句中的循環(huán)條件,“m=0;”改為“m=i;”。(2)如果“if(a[k]>a[m])”,a[k]比a[m]大,m記錄下下標(biāo)值k,內(nèi)層循環(huán)結(jié)束的時(shí)候a[m]值就是本次循環(huán)找到的最大值(如果m=0,a[m]是數(shù)組中的最大值;如果m=1,a[m]數(shù)組中的次最大值),即m記錄最大值的下標(biāo)值,因此第二標(biāo)識(shí)下應(yīng)該是“if(a[k]>a[m])m=k;”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、編寫(xiě)函數(shù)fun,函數(shù)的功能是:根據(jù)以下公式計(jì)算s,計(jì)算結(jié)果作為函數(shù)值返回;n通過(guò)形參傳入。例如:若n的值為11時(shí),函數(shù)的值為:1.833333注意:部分源程序在文件PROGl.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。#includedoublefun(intn){}returnstr;}main(){intn;doubles;voidNONO();printf("\nPleaseenterN:");scanf("%d",&n);s=fun(n);printf("theresultis:%f\n",s);NONO();}voidNONO(){/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*fp,*wf;inti,n;doubles;fp=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(fp,"%d",&n);s=fun(n);fprintf(wf,"%f\n",s);}fclose(fp);fclose(wf);}標(biāo)準(zhǔn)答案:{intk;floatstr=1.0,sum=1.0;for(k=2;k<=n;k++){sum=sum+k;//求得每一項(xiàng)的分母str=str+1/sum;//級(jí)數(shù)累加求和}知識(shí)點(diǎn)解析:進(jìn)入fun函數(shù),根據(jù)前面的分析:首先,求得每一項(xiàng)分母的值sum,即利用上一項(xiàng)來(lái)表示“sum=sum+k;”。然后,對(duì)每一項(xiàng)進(jìn)行累加“str=str+1/sum;”。最后,返回運(yùn)算結(jié)果“str”。國(guó)家二級(jí)(C語(yǔ)言)機(jī)試模擬試卷第7套一、程序填空題(本題共1題,每題1.0分,共1分。)1、請(qǐng)補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:把一個(gè)字符串中的字符(字母)按從小到大排序,并把這個(gè)全部由字母組成的字符串保存在原串中,函數(shù)返回這個(gè)字符串的長(zhǎng)度。例如;輸入“cixbr2.3”,如果為bcirx,字符串長(zhǎng)度為5。注意:部分源程序給出如下.請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫(xiě)的若干表達(dá)式或語(yǔ)句。#include<stdio.h>#defineN20intfun(char*str){inti=0,j=0,k=-0,m=0;chart;char*p=str;while(*p){if((*p>=’A’&&*p<=’Z’)||(*p>=’a’&&*p<=’z’))【】p++;}*(str+i)=’\0’;【】;while(*(p+j)){k=j;【】;while(*(p+k)){if(*(p+k)<*(str+m){t=*(str+m);*(str+m)=*(p+k);*(p+k)=t;}k++;}j++;}returni;}main(){charstr[81];ihtn;clrscr();printf("Inputtheoriginalstring");gets(str);printf("***TheOriginalstring***In");puts(str);printf("***Thenwestring***\n");n=fun(str);puts(str);printf("***Thelengthofnewstringis:%d***\n",n);}標(biāo)準(zhǔn)答案:*(str+i++)=*pp=strm=j知識(shí)點(diǎn)解析:第一空:將字符串中的字母字符存入原字符串str中,通過(guò)變量i的自加逐一向后移動(dòng)字符串指針。第二空:從后面的程序中可以看出,通過(guò)指針p對(duì)字符串進(jìn)行排序,所以應(yīng)使指針p指向字符串str的首部,即將字符串str的首地址賦給p。第三空:本題采用選擇法對(duì)字符串進(jìn)行排序,選擇法的思路是,假設(shè)從小到大排序,依次用當(dāng)前取得的元素和它后面的所有元素進(jìn)行比較,在第一個(gè)元素和它后面的元素順次比較時(shí),可以借助中間變量來(lái)對(duì)兩數(shù)進(jìn)行交換,要保證這第一個(gè)元素始終存放數(shù)組中的最小數(shù),以后依次挑出次小數(shù),這樣最終的數(shù)組就是按從小到大的順序排列。此處要將變量j的值賦給m。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun()的功能是:根據(jù)整型形參m的值,計(jì)算如下公式的值。t=1-1/(2×2)-1/(3×3)-…-l/(m×m)請(qǐng)改正函數(shù)fun()中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<conio.h>#include<stdio.h>doublefun(intm){doubley=1.O;inti;/*************found**************/for(i=2;i<m;i++)/************found**************/y-=1/(i*i);return(y);}main(){intn=5;clrscr();printf("\nTheresultis%1f\n",fun(n));}標(biāo)準(zhǔn)答案:(1)錯(cuò)誤:for(i=2;i<m;i++)正確:for(i=2;i<=m;i++)(2)錯(cuò)誤:y-=1/(i*i);正確:y-=1.0/(i*i);知識(shí)點(diǎn)解析:該題是一道簡(jiǎn)單的計(jì)算題,循環(huán)條件for(i=2;i<m;i++)中忽略了i=m時(shí)的一種情況,因?yàn)轭}目中i是從2到m的一個(gè)計(jì)算公式,y-=1/(i*i);的錯(cuò)誤很明顯,是語(yǔ)法錯(cuò)誤,由定義doubley=1.0可知,應(yīng)該是y-=1.0/(i*i);,而非y-=1/(i*i);。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫(xiě)一個(gè)函數(shù)voidfun(intm,intk,intxx[]),該函數(shù)的功能是:將大于整數(shù)m且緊靠m的k個(gè)素?cái)?shù)存入所指的數(shù)組中。例如,若輸入17,5,則應(yīng)輸出19,23,29,3l,37。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:#include<conio.h>#include<stdio.h>voidfun(intm,intk,intxx[]){}main(){intm,n,zz[1000];clrscr();printf("\nPleaseentertwointegers:");scanf("%d%d",&m,&n);fun(m,n,zz);for(m=O;m<n;m++)printf("%d",zz[m]);printf("\n");}標(biāo)準(zhǔn)答案:voidfun(intm,intk,intxx[]){inti,j,n;for(i=m+1,n=0;n<k;i++)/*找大于m的素?cái)?shù),循環(huán)k次,即找出緊靠m的k個(gè)素?cái)?shù)*/{for(j=2;j<i;j++)/*判斷一個(gè)數(shù)是否為素?cái)?shù),如果不是,跳出此循環(huán),判斷下一個(gè)數(shù)*/if(i%j==O)break;if(j>=i)/*如果是素?cái)?shù),放入數(shù)組xx中*/xx[n++]=i;}}知識(shí)點(diǎn)解析:本題只要掌握了判斷素?cái)?shù)的算法即不難完成了,其實(shí)程序缺少部分也正是這部分。國(guó)家二級(jí)(C語(yǔ)言)機(jī)試模擬試卷第8套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:把形參s所指字符串中下標(biāo)為奇數(shù)的字符右移到下一個(gè)奇數(shù)位置,最右邊被移出字符串的字符繞回放到第一個(gè)奇數(shù)位置,下標(biāo)為偶數(shù)的字符不動(dòng)(注:字符串的長(zhǎng)度大于等于2)。例如,形參s所指的字符串為:abcdefgh,執(zhí)行結(jié)果為:ahcbedgf。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.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==0)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)答案:1s[k]c知識(shí)點(diǎn)解析:第一空:“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”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun()的功能是;將s所指字符串中的字母轉(zhuǎn)換為按字母序列的后續(xù)字母(但Z轉(zhuǎn)化為A,z轉(zhuǎn)化為a),其他字符不變。請(qǐng)改正函數(shù)fun()中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<stdio.h>#include<ctype.h>#include<conio.h>voidfun(char*s)/*************found**************/{while(*s!=’@’){if(*s>=’A’&*s<=’z’||*s>=’a’&&*s<=’z’){if(*s==’Z’)*S=’A’;elseif(*S==’z’)*s=’a’;else*s+=1;}/*************found**************/(*s)++;}}main(){chars[80];clrscr();printf("\nEnterastringwithlength<80:\n\n");gets(s);printf("\nThestring:\n\n");puts(s);fun(s);printf("\n\nTheCords:\n\n");puts(s);}標(biāo)準(zhǔn)答案:(1)錯(cuò)誤:while(*s!=’@’)正確:while(*s)(2)錯(cuò)誤:(*s)++;正確:s++;知識(shí)點(diǎn)解析:根據(jù)題目要求,可對(duì)字符串所有字母進(jìn)行遍歷。對(duì)每一個(gè)字母,若該字母為’z’或’Z’,將該字母改成’a’或’A’,即ASCII碼值減25,當(dāng)然也可以用題目中的if語(yǔ)句來(lái)實(shí)現(xiàn)轉(zhuǎn)換。若該字母不是’z’或’Z’,則該字母的ASCII碼值加1;對(duì)字符串所有字符重復(fù)以上過(guò)程即可得到題目要求的結(jié)果,可用循環(huán)語(yǔ)句和條件語(yǔ)句來(lái)實(shí)現(xiàn)。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、下列程序定義了NXN的二維數(shù)組,并在主函數(shù)中賦值。請(qǐng)編寫(xiě)函數(shù)fun(),函數(shù)的功能是求出數(shù)組周邊元素的平方和并作為函數(shù)值返回給主函數(shù)中的S。例如:若a數(shù)組中的值為a=012791112155221611197910254141則返回主程序后s的值應(yīng)為310。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:#include<stdio.h>#include<conio.h>#include<stdlib.h>#defineN5intfun(intw[][N]){}main(){inta[N)[N]={0,1,2,7,9,1,1l,2l,5,5,2,21,6,11,1,9,7,9,10,2,5,4,1,4,1};inti,j;intS;clrscr();printf("*****Thearray***+*\n");for(i=0;i<N;i++){for(j=0;j<N;i++){printf(“%4d”,a[i][j]);}printf("\n");}s=fun(a);printf(“*****THERESULT*****\n”);printf("Thesumis:%d\n",s);}標(biāo)準(zhǔn)答案:intfun(intw[])[N]){inti,j,k=0;ints=0;for(i=0;i<N;i++)for(j=0;j<N;j++)if(i==0||i==N-1||j==0||j==N-1)/*只要下標(biāo)中有一個(gè)為0或N-1,則它一定是周邊元素*/{s=s+w[i][j]*w[i][j];/*將周邊元素求平方和*/}returns;/+返回周邊元素的平方和*/}知識(shí)點(diǎn)解析:該題采用逐一判斷的方式,周邊元素的下標(biāo)一定有一個(gè)是0或N-1,且只要下標(biāo)中有一個(gè)為0或N-1,則它一定是周邊元素。國(guó)家二級(jí)(C語(yǔ)言)機(jī)試模擬試卷第9套一、程序填空題(本題共1題,每題1.0分,共1分。)1、字符串str由數(shù)字字符組成(長(zhǎng)度不超過(guò)5個(gè)字符),可看作任意進(jìn)制的數(shù),請(qǐng)補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:把str字符串轉(zhuǎn)換成任意進(jìn)制的數(shù),結(jié)果保存在數(shù)組xx中,由函數(shù)返回轉(zhuǎn)換后數(shù)組腆的實(shí)際長(zhǎng)度。其中x表示str原來(lái)的進(jìn)制,y表示要轉(zhuǎn)換成的進(jìn)制。例如,輸入str=“1111”,x=2,y=10,結(jié)果輸出:15。如果輸入str=“15”,x=10,Y=2,結(jié)果輸出:1111。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫(xiě)的若干表達(dá)式或語(yǔ)句。試題程序:#include<stdio.h>#include<stdlib.h>#include<string.h>#defineN8intxx[N];intfun(char*str,intx,inty){intsum;inti=0;char*p=str;for(i=0;i<N;i++)xx[i]=0;sum=*p-’0’;p++;while(*p){sum=【】;p++;}i=0;while(sum!=0){xx[i]=【】;【】;i++;}returni;}main(){charstr[6];inti;intn;intx;inty;printf("Enterastringmadeupof’0’to’9’digitscharacter:");gets(str);if(strlen(str)>5){
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球鹽酸毛果蕓香堿行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025服務(wù)器托管合同書(shū)模板
- 綠色供應(yīng)鏈一體化管理合同
- 2025關(guān)于醫(yī)藥采購(gòu)合同
- 品牌服務(wù)協(xié)議書(shū)合同范本
- 濱海新區(qū)應(yīng)急管理局
- 房屋租賃權(quán)轉(zhuǎn)讓合同范文
- 建筑材料居間合同
- 藥品購(gòu)銷標(biāo)準(zhǔn)合同
- 企業(yè)間借款擔(dān)保合同
- 2025年?duì)I口職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 七年級(jí)歷史下冊(cè)第2課唐朝建立與貞觀之治
- 8.3+區(qū)域性國(guó)際組織+課件高中政治統(tǒng)編版選擇性必修一當(dāng)代國(guó)際政治與經(jīng)濟(jì)
- 2025年國(guó)網(wǎng)陜西省電力限公司高校畢業(yè)生招聘1100人(第二批)高頻重點(diǎn)提升(共500題)附帶答案詳解
- 《深度學(xué)習(xí)的7種有力策略》
- 2025年潞安化工集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 李四光《看看我們的地球》原文閱讀
- 抖音火花合同電子版獲取教程
- 人教版9年級(jí)全一冊(cè)英語(yǔ)單詞表
- 三門峽水利工程案例分析工程倫理
- “1+X”證書(shū)制度試點(diǎn)職業(yè)技能等級(jí)證書(shū)全名錄
評(píng)論
0/150
提交評(píng)論