國(guó)家二級(jí)C語(yǔ)言程序設(shè)計(jì)機(jī)試(程序修改題)模擬試卷1(共20題)_第1頁(yè)
國(guó)家二級(jí)C語(yǔ)言程序設(shè)計(jì)機(jī)試(程序修改題)模擬試卷1(共20題)_第2頁(yè)
國(guó)家二級(jí)C語(yǔ)言程序設(shè)計(jì)機(jī)試(程序修改題)模擬試卷1(共20題)_第3頁(yè)
國(guó)家二級(jí)C語(yǔ)言程序設(shè)計(jì)機(jī)試(程序修改題)模擬試卷1(共20題)_第4頁(yè)
國(guó)家二級(jí)C語(yǔ)言程序設(shè)計(jì)機(jī)試(程序修改題)模擬試卷1(共20題)_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ǔ)言程序設(shè)計(jì)機(jī)試(程序修改題)模擬試卷1(共5套)(共20題)國(guó)家二級(jí)C語(yǔ)言程序設(shè)計(jì)機(jī)試(程序修改題)模擬試卷第1套一、程序修改題(本題共4題,每題1.0分,共4分。)1、下列給定程序中,規(guī)定輸入的字符串全部為字母,fun函數(shù)的功能是:統(tǒng)計(jì)a所指字符串中每個(gè)字母在字符串中出現(xiàn)的次數(shù)(統(tǒng)計(jì)時(shí)不區(qū)分大小寫),并將出現(xiàn)次數(shù)最多的字母輸出(如果有多個(gè)相同,輸出一個(gè)即可)。例如對(duì)于字符串”dadbcdbabdb”,對(duì)應(yīng)的輸出應(yīng)為b或d。請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#include#inchdevoidfun(chara[]){intb[26],i,n,max;for(i=0;i<26;i++)/******found******/a[i]=0;n=strlen(a);for(i=0;i=‘a(chǎn)’&&a[i]<=‘z’)/******found******/b[a[i]一‘A’]++;elseif(a[i]>=‘A’&&a[i]<=‘z’)b[a[i]一‘A’]++;max=0:for(i=1;i<26;i++)/******found******/if(b[max]>b[i])max=i:printf(“出現(xiàn)次數(shù)最多的字符是:%c”,max+‘a(chǎn)’);}main(){chara[200];prinff(“請(qǐng)輸入一個(gè)待統(tǒng)計(jì)的字符串:”);scanf(“%s”,a);fun(a);}標(biāo)準(zhǔn)答案:(1)b[i]=0;(2)b[a[i]一’a’]++;(3)if(b[max]知識(shí)點(diǎn)解析:要統(tǒng)計(jì)字符串中每個(gè)字符在這個(gè)字符串中出現(xiàn)的次數(shù),可以設(shè)數(shù)組b中存放每個(gè)字符出現(xiàn)的次數(shù),b[0]存放字符a的次數(shù),b[1]存放字符b的次數(shù)……統(tǒng)計(jì)之前為數(shù)組b各元素賦初值為0。然后依次取出字符串的每個(gè)字符進(jìn)行判斷,使對(duì)應(yīng)數(shù)組b加1。max初始值為0,與數(shù)組b中的每個(gè)元素進(jìn)行比較,如果小于,就把下標(biāo)進(jìn)行交換。(1)數(shù)組a存放的是字符串,數(shù)組b為整型數(shù)組,存放的是每個(gè)字符的個(gè)數(shù),應(yīng)將數(shù)組b每個(gè)元素初始化為0。(2)小寫字母的ASCⅡ碼值減去a的ASCⅡ碼值即為相應(yīng)字母的下標(biāo)值,相應(yīng)下標(biāo)值的數(shù)組元素的值增加1。(3)最大值小于被比較數(shù)時(shí),把被比較數(shù)的下標(biāo)值賦給max,max中存放的總是當(dāng)前最大值。2、在主函數(shù)中用鍵盤輸入若干個(gè)數(shù)放入數(shù)組中,用0結(jié)束輸入并放在最后一個(gè)元素中。下列給定程序中,函數(shù)fun的功能是:計(jì)算數(shù)組元素中所有值為正數(shù)的平均值(不包括0)。例如,數(shù)組中元素中的值依次為:39,一47,21,2,一8,15,0,則程序的運(yùn)行結(jié)果為19.250000。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#includeItoublefun(intx[]){/******found******/intsum=0.0:intc=0,i=0;while(x[i]!=0){if(x[i]>0){sum+=X[i];c++;}i++;}/******found******/sum\=c;returnsum;}main(){intx[1000];inti=0;prinff(“\nPleaseenterfloraedata(endwith0):“);do{scanf(”%d”,&x[i]);}while(x[i++]!=0);printf(“%f\n”,fun(x));}標(biāo)準(zhǔn)答案:(1)doublesum=0.0;(2)sum/=c;知識(shí)點(diǎn)解析:本題考查:變量的數(shù)據(jù)類型,區(qū)別int整型和double雙精度型;除法運(yùn)算符“/”。(1)變量定義錯(cuò)誤,變量sum存放所有數(shù)據(jù)的和,應(yīng)定義為double型。(2)C語(yǔ)言中的除法運(yùn)算符是“/”。3、下列給定程序中,函數(shù)fun的功能是:找出一個(gè)大于給定整數(shù)m且緊隨m的素?cái)?shù),并作為函數(shù)值返回。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#include#includeintfun(intm){inti,k;for(i=m+1;;i++){for(k=2;k標(biāo)準(zhǔn)答案:(1)if(i%k==0)(2)if(k==i)知識(shí)點(diǎn)解析:(1)判斷當(dāng)前數(shù)是否為素?cái)?shù),若存在一個(gè)數(shù)(除1和其自身)能整除當(dāng)前數(shù),則跳出本次循環(huán),所以if條件應(yīng)為i%k==0。(2)如果i是素?cái)?shù),則循環(huán)結(jié)束時(shí)k==i,將該值返回。4、下列給定程序中,函數(shù)fun的功能是:將長(zhǎng)整型數(shù)中各位上為偶數(shù)的數(shù)依次取出,構(gòu)成一個(gè)新數(shù)放在t中。高位仍在高位,低位仍在低位。例如,當(dāng)s中的數(shù)為87653142時(shí),t中的數(shù)為8642。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#includevoidfun(10ngs,long*t){intd:longs1=1;*!=0:while(s>0)d=s%10:/******round******/if=d%2=0)j*t=d*s1+*t:sj*=10:/******found******/s\=10:}{main(){longs.t;prinff(“\nPleaseenterS:”);scanf(“%ld”,&s);fun(s,&t);prinff(“Theresultis:%ld\n”,t);標(biāo)準(zhǔn)答案:(1)if(d%2==0)(2)s/=10;知識(shí)點(diǎn)解析:本題考查:if語(yǔ)句條件表達(dá)式,注意“==”和“=”的區(qū)別;除法運(yùn)算符“/”。(1)分析程序,在if的條件表達(dá)式中,不應(yīng)該出現(xiàn)賦值運(yùn)算符“=”,應(yīng)使用“==”運(yùn)算符。(2)這里是一個(gè)運(yùn)算符的錯(cuò)誤,表示除法的運(yùn)算符是“/”。國(guó)家二級(jí)C語(yǔ)言程序設(shè)計(jì)機(jī)試(程序修改題)模擬試卷第2套一、程序修改題(本題共4題,每題1.0分,共4分。)1、由N個(gè)有序整數(shù)組成的數(shù)列已放在一維數(shù)組中,下列給定程序中函數(shù)fun的功能是:利用折半查找法查找整數(shù)m在數(shù)組中的位置。若找到,返回其下標(biāo)值;否則,返回一1。折半查找的基本算法是:每次查找前先確定數(shù)組中待查的范圍low和high(lowhigh,查找結(jié)束。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#defineN10/*******found*******/voidfun(inta[],intm){intlow=0,high=N一1,mid;while(low<=high){mid=(low+high)/2;if(ma[mid])low=mid+1:elsereturn(mid);}return(一1);}main(){inti,a[N]={一3,4,7,9,13,45,67,89,100,180},k,m;prinff(”1t數(shù)組中的數(shù)據(jù)如下:”);for(i=0;i=0)prinff(“m=%d,index=%d\n”,m,k);elseprinff(“Notbefound!\n”);}標(biāo)準(zhǔn)答案:(1)intfun(inta[],intm)或fun(inta[],intm)(2)elseif(m>a[mid])知識(shí)點(diǎn)解析:本題考查:折半查找算法;函數(shù)定義;if…else語(yǔ)句。(1)fun(inta[],intm)函數(shù)的返回值為int類型,所以定義函數(shù)時(shí),函數(shù)的返回類型不能是void,而是int類型。這里int可以省略,若省略函數(shù)類型標(biāo)識(shí)符,系統(tǒng)將默認(rèn)為int型。(2)elseIf(m>a[mid])中,關(guān)鍵字if需要區(qū)別大小寫,大寫是錯(cuò)誤的。說(shuō)明:折半查找算法,將數(shù)列按有序化(遞增或遞減)排列,查找過(guò)程中采用跳躍式方式查找,即先以有序數(shù)列的中點(diǎn)位置為比較對(duì)象,如果要找的元素值小于該中點(diǎn)元素,則將待查序列縮小為左半部分,否則為右半部分。通過(guò)一次比較,將查找區(qū)間縮小一半。2、下列給定程序中,函數(shù)fun的功能是:對(duì)N名學(xué)生的學(xué)習(xí)成績(jī),按從高到低的順序找出前m(m≤10)名學(xué)生來(lái),并將這些學(xué)生的數(shù)據(jù)存放在一個(gè)動(dòng)態(tài)分配的連續(xù)存儲(chǔ)區(qū)中,此存儲(chǔ)區(qū)的首地址作為函數(shù)值返回。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#inelude#include#include#include#include#defineN10typedefstruets8{charnunl[10];ints;}STU;STU*fun(STUa[],intm){STUb[N],*t;inti,j,k;/*******found*******/*t=calloe(In,sizeof(STU));for(i=0;ib[j].s)j=i;/*******found*******/t[k].num=b[j].hum;t[k].8=b[j].s;b[j].8=0;}returnt;}outreult(STU8[],F(xiàn)ILE*pf){inti;for(i=0;i10){printf(“\nGivethenumberofthestudentswhohavebetterscore”);scanf(“%d”,&m);}pOrder=fun(a,111);prinff(“******THERESULT******\n”);prinff(“Thetop:\n”);for(i=0;i標(biāo)準(zhǔn)答案:(1)t=(STU*)ealloc(m,sizeof(STU));(2)t[k].num=b[j].num改為t[k]=b[j]知識(shí)點(diǎn)解析:(1)caLlloc函數(shù)用于分配內(nèi)存空間。其調(diào)用形式為(類型說(shuō)明符*)calloc(n,size),功能:在內(nèi)存動(dòng)態(tài)存儲(chǔ)區(qū)中分配n塊長(zhǎng)度為“size”字節(jié)的連續(xù)區(qū)域,函數(shù)的返回值為該區(qū)域的首地址,(類型說(shuō)明符*)用于強(qiáng)制類型轉(zhuǎn)換。calloc函數(shù)與maⅡoc函數(shù)的區(qū)別在于calloc函數(shù)一次可以分配n塊區(qū)域。例如,ps=(structstu*)calloc(2,sizeof(structstu));,其中的sizeof(structstu)是求stu的結(jié)構(gòu)長(zhǎng)度。該語(yǔ)句的意思是:按stu的長(zhǎng)度分配兩塊連續(xù)區(qū)域,強(qiáng)制轉(zhuǎn)換為stu類型,并把其首地址賦予指針變量ps。在本題中不用考慮那么復(fù)雜,根據(jù)定義類型STUb[N],*t;就可以看出*t=calloc(m,sizeotf(STU))中的錨誤。(2)t[k].num=b[j].num的錯(cuò)誤旨在考查對(duì)結(jié)構(gòu)體概念的掌握和靈活應(yīng)用程度。3、下列給定程序中,函數(shù)fun的功能是:在有n名學(xué)生、2門課成績(jī)的結(jié)構(gòu)體數(shù)組std中,計(jì)算出第1門課程的平均分,作為函數(shù)值返回。例如,主函數(shù)中給出了4名學(xué)生的數(shù)據(jù),則程序運(yùn)行的結(jié)果為:第1門課程的平均分是76.125000請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#includetypedefstruet{charnum[8];doublescore[2];}STU;doublefun(STUstd[],intn){inti;/******found******/doublesum;/******found******/for(i=0;i<2;i++)/******found******/8am+=std[i].8core[1];returnsum/n;}main(){STUstd[]={“N1001”,76.5,82.0,“N1002”,66.5,73.0,“N1005”,80.5,66.0,“N1006”,81.0,56.0};printf(”第1門課程的平均分是:%lf\n”,fun(std,4));}標(biāo)準(zhǔn)答案:(1)doublesum改為doublesum=0.0;(2)for(i=0;i<2;i++)改為for(i=0;i知識(shí)點(diǎn)解析:本題考查:臨時(shí)變量初始化,C語(yǔ)言里臨時(shí)變量不初始化,它的默認(rèn)值是不確定的一個(gè)值。再者,考查C語(yǔ)言約定數(shù)組的下標(biāo)是從0開始的。(1)doublesum改為doublesum=0.0;累加求和需要初始化累加結(jié)果的臨時(shí)變量。(2)for(i=0;i<2;i++)改為for(i=0;i4、下列給定程序中,函數(shù)fun的功能是:輸出M×M整數(shù)方陣,然后求兩條對(duì)角線上元素之和,并作為函數(shù)值返回。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#defineM5/******found******/intfun(intn,intxx[][]){inti,j,sum=0;printf(“\nTne%dx%dmartrix\n”,M,M);for(i=0;i標(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語(yǔ)言上機(jī)考試很少涉及printf函數(shù)中的錯(cuò)誤,此處只要明白“d”和“f”的區(qū)別就可以了。格式字符d表示以帶符號(hào)的十進(jìn)制形式輸出整數(shù)(正整數(shù)不輸出符號(hào));格式字符f表示以小數(shù)形式輸出單精度、雙精度數(shù)據(jù),隱含輸出6位小數(shù)。國(guó)家二級(jí)C語(yǔ)言程序設(shè)計(jì)機(jī)試(程序修改題)模擬試卷第3套一、程序修改題(本題共4題,每題1.0分,共4分。)1、下列給定程序中,函數(shù)fun的功能是:計(jì)算整數(shù)n的階乘。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#includedoublefun(intn){doubleresult:1.0;while(n>1&&n<170)/******found******/result*c=一一n:/******found******/return;}voidmain(){intn;prinff(“Enterfillinteger:”);seanf(“%d”,&n);printf(“\n%d!=%1g\n”,n,fun(n));}標(biāo)準(zhǔn)答案:(1)result*=n一一;(2)retumresult;知識(shí)點(diǎn)解析:本題考查:復(fù)合賦值運(yùn)算;通過(guò)return語(yǔ)句完成函數(shù)值的返回。該題采用循環(huán)語(yǔ)句計(jì)算n的階乘。當(dāng)n大于1且小于170時(shí),令result與n相乘,同時(shí)n自動(dòng)減1,循環(huán)至n=2(n=1時(shí)無(wú)須相乘)。最后將階乘的積result返回給主函數(shù)。2、下列給定程序中,函數(shù)fun的功能是:根據(jù)輸入的三個(gè)邊長(zhǎng)(整型值),判斷能否構(gòu)成三角形。若能構(gòu)成等邊三角形,則返回3;若是等腰三角形,則返回2;若能構(gòu)成三角形則返回1;若不能,則返回0。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#includeintfun(inta,intb,intc){if(a+b>c&&b+c>a&&a+c>b){if(a==b&&b==c)/******found******/return1;elseif(a==b‖b==c‖a==c)return2;/******found******/elsereturn3;}elseretum0;}voidmain(){inta,b,c,shape;prinff(“\nInputa,b,c:”);seanf(“%d%d%d”,&a,&b,&c);prinff(“\ha=%d,b=%d,c=%d\n”,a,b,c);shape=fun(a,b,c);printf(“\nTheshape:%d\n”,shape);}標(biāo)準(zhǔn)答案:(1)return3;(2)return1;知識(shí)點(diǎn)解析:(1)變量a、b、c分別表示三條邊,當(dāng)三邊相等(a==b&&b==c)時(shí),返回3。(2)在能構(gòu)成三角形的前提下,如果不能構(gòu)成等邊三角形或等腰三角形,則返回1。3、下列給定的程序中,函數(shù)fun的功能是:計(jì)算并輸出k以內(nèi)最大的10個(gè)能被13或17整除的自然數(shù)之和。k的值由主函數(shù)傳入,若k的值為500,則函數(shù)的值為4622。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#nelude#include#includeintfun(intk){intm=0,mc=0,j;while((k>=2)&&(me<10)){/******found******/if((k%13=0)‖(k%17=0)){m=m+k;mc++;}k一一;/******found******/returnm;}voidmain(){prinff(“%d\n”,fun(500));}標(biāo)準(zhǔn)答案:(1)if((k%13==0)‖(k%17==0))(2)}returnm;知識(shí)點(diǎn)解析:(1)c語(yǔ)言中,x能被y整除的表示方法是x%y==0,而不是題目中所表示的x%y=0。所以,if((k%13=0)‖(k%17=0))修改后的結(jié)果應(yīng)該是答案所示信息。(2)程序中缺少程序完整所需的“}”,此類信息在做題時(shí)一定要注意,可以在做題前先運(yùn)行一下程序,這樣明顯的錯(cuò)誤一般都會(huì)有錯(cuò)誤信息顯示出來(lái)。比如丟失“}”的錯(cuò)誤信息是“Compounclstatementmissing}inflructionfun”。說(shuō)明:做題之前先運(yùn)行一下程序,如果有書寫錯(cuò)誤,系統(tǒng)會(huì)提示,這樣可以簡(jiǎn)化題目。4、下列給定程序中,函數(shù)fun的功能是:首先把b所指字符串中的字符按逆序存放,然后將a所指字符串中的字符和b所指字符串中的字符,按排列的順序交叉合并到c所指數(shù)組中,過(guò)長(zhǎng)的剩余字符接在c所指的數(shù)組的尾部。例如,當(dāng)a所指字符串中的內(nèi)容為“abc.defg”,b所指字符串中的內(nèi)容為“1234”時(shí),c所指數(shù)組中的內(nèi)容應(yīng)為“a4b3c2dlefg”;而當(dāng)a所指字符串中的內(nèi)容為“1234”,b所指字符串的內(nèi)容為“abcdefg”時(shí),c所指數(shù)組中的內(nèi)容應(yīng)該為“1g2f3e4dcba”。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#includevoidfun(char*a,char*b,char*c){inti,j;charch;i=0;j=strlen(b)一1;/******found******/while(i>j){ch=b[i];b[i]=b[j];b[j]=eh;1++;]一一;}while(*a‖*b){/******found******/If(*a){*c=*a;c++;a++;}if($b){*c=*b;c++;b++;}}*c=0:}main(){charsl[100],s2[100],t[200];prinff(“\nEnterslstring:”);scanf(“%S”,s1);prinff(“\nEnters2string:”);scanf(“%s”,s2);fun(s1,s2,t);printf(“\nTheresultis:%s\n”,t);}標(biāo)準(zhǔn)答案:(1)while(i知識(shí)點(diǎn)解析:(1)由i和j定義的初始值可知,此處應(yīng)該判斷i是否小于j,所以應(yīng)改為while(i國(guó)家二級(jí)C語(yǔ)言程序設(shè)計(jì)機(jī)試(程序修改題)模擬試卷第4套一、程序修改題(本題共4題,每題1.0分,共4分。)1、下列給定程序的功能是:讀入一個(gè)整數(shù)k(2≤k≤10000),輸出它的所有質(zhì)因子(即所有為素?cái)?shù)的因子)。例如,若輸入整數(shù)2310,則應(yīng)輸出2,3,5,7,11。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#include/******found******/IsPrime(intn);{inti,m:m=1;for(i=2;i標(biāo)準(zhǔn)答案:(1)IsPrime(intn)(2)if(!(n%i))知識(shí)點(diǎn)解析:本題考查:函數(shù)定義的格式;if條件的判斷語(yǔ)句。這些知識(shí)點(diǎn)必須掌握,因?yàn)榻?jīng)??嫉健?1)函數(shù)定義格式錯(cuò)誤,函數(shù)定義時(shí)后面不能加“;”,所以應(yīng)該去掉分號(hào)。(2)根據(jù)題意可知,if條件語(yǔ)句判斷n是否可以整除i,如果不能整除則為質(zhì)因子,所以if!(n%i)應(yīng)改為if(!(n%i))。2、下列給定程序中,函數(shù)fun的功能是:從s所指字符串中,找出t所指字符串的個(gè)數(shù)作為函數(shù)值返回。例如,當(dāng)s所指字符串中的內(nèi)容為“abcdabfab”,t所指字符串的內(nèi)容為“ab”,則函數(shù)返回整數(shù)3。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#inelude#include#includeintfun(char*s,char*t){intn;char*P,*r;rl=0;while(*s){P=s:r=t:while(*r)/*******found*******/if(*r==*Pxr++;P++}elsebreak;/*******found*******/if(r==‘\0’)n++:s++:}returnn;}voidmain(){chars[100],t[100];intm;system(“CLS”);prinff(“\nPleaseenterstrings:”);scanf(“%s”,s);printf(“\nPleaseentersubstringt:”);seanf(“%s”,t);m=fun(s,t);prinff(“\nTheresultis:m=%d\n”,n1);}標(biāo)準(zhǔn)答案:(1)if(*r==*p){r++;p++;}(2)if(*r==’\0’)知識(shí)點(diǎn)解析:本題考查:if語(yǔ)句,考生需要根據(jù)題意確定if語(yǔ)句的判斷條件;字符串結(jié)束標(biāo)識(shí),所有的字符串都要以’\0’結(jié)尾,上機(jī)考試常考知識(shí)點(diǎn),考生一定要牢記;復(fù)合賦值運(yùn)算,常用于循環(huán)控制和變量的累加、累乘。從字符串s中找出子串t的方法是:從第1個(gè)字符開始,對(duì)字符串進(jìn)行遍歷,若s串的當(dāng)前字符等于t串的第1個(gè)字符,兩個(gè)字符串的指針自動(dòng)加1,繼續(xù)比較下一個(gè)字符;若比較至字符串t的結(jié)尾,則跳出循環(huán);若s串的字符與t串的字符不對(duì)應(yīng)相同,則繼續(xù)對(duì)s串的下一個(gè)字符進(jìn)行處理。3、下列給定程序中,函數(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。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#include#include/*******found*******/#defineFU(m,n)((m/n))floatfun(floata,floatb,floate){floatvalue;value=FU(a+b,a—b)+FU(c+b,c—b);/*******found*******/Return(Value);}main(){floatx,y,z,sum;prinff(“Inputxyz:“);scanf(“%f%f%f.’,&x,&y,&z);prinff(“x=%f,y="%f,z=%f、n”,X,y,z);if(x=y‖y==z){prinff(“Dataerror!\n”);exit(0);}sum=fun(x,y,z);prinff(“Theresultis:%5.2f\n”,sum);}標(biāo)準(zhǔn)答案:(1)#defineFU(m,n)(m)/(n)(2)return(value);知識(shí)點(diǎn)解析:本題考查:C語(yǔ)言宏定義;函數(shù)返回值。本題考查C語(yǔ)言的宏定義,其格式為:#de6ne標(biāo)識(shí)符字符串,中間要用空格分開。在該題中,標(biāo)識(shí)符為Fu(m,n),字符串為(m/n),由題干信息可知,m、n均為表達(dá)式,且先進(jìn)行表達(dá)式運(yùn)算,再進(jìn)行除法運(yùn)算,因此此處應(yīng)為(m)/(n)。4、下列給定程序中,函數(shù)fun的功能是:在整數(shù)10到55之間,查找能被3整除且有一位上的數(shù)值是5的數(shù),把這些數(shù)放在b所指的數(shù)組中,這些數(shù)的個(gè)數(shù)作為函數(shù)值返回。規(guī)定函數(shù)中a1放個(gè)位數(shù),a2放十位數(shù)。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不得增行或刪行,也不得更改的程序的結(jié)構(gòu)!試題程序:#includeintfun(int*b){intk,al,a2,i=0;for(k=10;k<=55;k++){/******found******/a2=ICl0;al=k—a2*10:if((k%3==0&&a2==5)‖(k%3==0&&al==5)){b[i]=k;i++;}}/******found******/returnk;}main(){inta[100],k,m;m=fun(a);prinff(“Theresultis:\n”);for(k=0;k標(biāo)準(zhǔn)答案:(1)a2=k/10;(2)returni;知識(shí)點(diǎn)解析:本題考查:取數(shù)值n的各個(gè)位;return語(yǔ)句,將需要返回的函數(shù)值返回給函數(shù)main。(1)a2存放十位數(shù),所以是a2=k/10,此處是一個(gè)書寫錯(cuò)誤。(2)根據(jù)題意,要返回能被3整除的數(shù)的個(gè)數(shù),從循環(huán)體中可以知道其個(gè)數(shù)是由i來(lái)計(jì)算的,所以返回的是i。國(guó)家二級(jí)C語(yǔ)言程序設(shè)計(jì)機(jī)試(程序修改題)模擬試卷第5套一、程序修改題(本題共4題,每題1.0分,共4分。)1、下列給定程序中,函數(shù)fun的功能是:讀入一個(gè)字符串(長(zhǎng)度<20),將該字符串中的所有字符按ASCII碼值升序排序后輸出。例如,若輸入“edcba”,則應(yīng)輸出“abode”。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#includevoidfun(ehart[]){charc;inti,j;/******found******/for(i=strlen(t);i;i一一)for(j=0;j標(biāo)準(zhǔn)答案:(1)for(i=stden(t)一1;i;i一一)或for(i=strlen(t)一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í),可以借助中間變量來(lái)對(duì)兩個(gè)數(shù)進(jìn)行交換,要保證第一個(gè)元素始終存放數(shù)組中的最大數(shù),以后依次挑選出次大數(shù),這樣最終的數(shù)組就是有序的。strlen函數(shù)所求得的字符串長(zhǎng)度包括字符串結(jié)束符,所以要減1。(2)這里是一個(gè)分析邏輯錯(cuò)誤,題中要求按升序排序,所以應(yīng)改為if(t[j]>t[j+1])。2、下列給定程序中,函數(shù)fun的功能是:刪除指針P所指字符串中的所有空白字符(包括制表符、回車符及換行符)。輸入字符串時(shí)用’#’結(jié)束輸入。請(qǐng)改正程序中的錯(cuò)誤,使它能輸出正確的結(jié)果。注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include#include#includefun(char*P){inti,t;charc[80];/******found******/For(i=0,t=0;P[i];i++)if(!isspace(*(P+i)))c[t++]=P[i];/******found******/c[t]=“\0”;strepy(p,c);}main(){char

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論