國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷5(共27題)_第1頁(yè)
國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷5(共27題)_第2頁(yè)
國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷5(共27題)_第3頁(yè)
國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷5(共27題)_第4頁(yè)
國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷5(共27題)_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷5(共9套)(共27題)國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第1套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開(kāi)考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:找出100~x(x≤999)之間各位上的數(shù)字之和為15的所有整數(shù),并在屏幕輸出;將符合條件的整數(shù)的個(gè)數(shù)作為函數(shù)值返回。例如,當(dāng)n值為500時(shí),各位數(shù)字之和為15的整數(shù)有:159、168、177、186、195、249、258、267、276、285、294、339、348、357、366、375、384、393、429、438、447、456、465、474、483、492,共有26個(gè)。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并將下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>intfun(intx){intn,s1,s2,s3,t;/*********found*********/n=【1】;t=100;/*********found*********/while(t<=【2】){s1=t%10;s2=(t/10)%10;s3=t/100;if(s1+s2+s3==15){printf("%d",t);n++;}/*********found*********/【3】;}returnn;}main(){intx=﹣1;while(x>999||x<0){printf("Pleaseinput(0<x<=999):");scanf("%d",&x);}printf("\nTheresultis:%d\n",fun(x));}標(biāo)準(zhǔn)答案:(1)0(2)x(3)t++知識(shí)點(diǎn)解析:填空1:變量n用于存放符合條件的整數(shù)的個(gè)數(shù),應(yīng)賦初值為0。填空2:根據(jù)題目要求,確定循環(huán)變量t的取值范圍為t<=x。填空3:循環(huán)變量t自增1操作。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開(kāi)考生文件夾下modi1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modi1.c。在此程序中,函數(shù)fun的功能是:先將s所指字符串中的字符按逆序存放到t所指字符串中,然后把s所指串中的字符按正序連接到t所指串之后。例如,當(dāng)s所指的字符串為“ABCDE”時(shí),t所指的字符串應(yīng)為“EDCBAABCDE”。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*s,char*t){/*********found*********/inti;s1=strlen(s);for(i=0;i<s1;i++)/*********found*********/t[i]=s[s1﹣i];for(i=0;i<=s1;i++)t[s1+i]=s[i];t[2*s1]=’\0’;}voidmain(){chars[100],t[100];systern("CLS");printf("\nPleaseenterstrings:");scanf("%s",s);fun(s,t);printf("Theresultis:%s\n",t);}標(biāo)準(zhǔn)答案:(1)inti,s1;(2)t[i]=s[s1﹣i﹣1];知識(shí)點(diǎn)解析:(1)變量s1沒(méi)有定義。(2)該循環(huán)實(shí)現(xiàn)將s串中的字符逆序存入t串中,t[i]對(duì)應(yīng)s串中的s[s1﹣i﹣1]。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,編寫(xiě)函數(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。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){}main(){inta,b;longc;printf("Inputa,b:");scanf("%d%d",&a,&b);fun(a,b,&c);printf("Theresultis:%ld\n",c);}標(biāo)準(zhǔn)答案:voidfun(inta,intb,lonq*c){/*b%10獲取b的個(gè)位,a/10獲取a的十位,a%10獲取a的個(gè)位,b/10獲取b的十位*/*c=a%10+(b%10)*10+(a/10)*100+(b/10)*1000;}知識(shí)點(diǎn)解析:本題的主要問(wèn)題是如何取出a和b的個(gè)位數(shù)和十位數(shù),取出后如何表示成c中相應(yīng)的位數(shù)。由于a和b都是只有兩位的整數(shù),所以分別對(duì)它們除10可得到它們的十位數(shù),分別用10對(duì)它們求余可得到它們的個(gè)位數(shù)。得到后對(duì)應(yīng)乘以1000、100、10、1,就可得到c的千位數(shù)、百位數(shù)、十位數(shù)和個(gè)位數(shù)。注意使用c時(shí)要進(jìn)行指針運(yùn)算。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、下列給定程序中,函數(shù)fun的功能是:把形參a所指數(shù)組中的偶數(shù)按原順序依次存放到a[0]、a[1]、a[2]…中,把奇數(shù)從數(shù)組中刪除,偶數(shù)的個(gè)數(shù)通過(guò)函數(shù)值返回。例如,若a所指數(shù)組中的數(shù)據(jù)最初排列為:9,1,4,2,3,6,5,8,7,刪除奇數(shù)后a所指數(shù)組中的數(shù)據(jù)為:4,2,6,8,返回值為4。請(qǐng)?jiān)谙庐?huà)線處填入正確的內(nèi)容并將下畫(huà)線刪除,使程序得出正確的結(jié)果。注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#defineN9intfun(inta[],intn){int1,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)解析:本題考查:if語(yǔ)句條件表達(dá)式;數(shù)組變量賦值;函數(shù)返回值。填空1:if語(yǔ)句條件表達(dá)式,判斷數(shù)組元素是否為偶數(shù),對(duì)2求余,結(jié)果為0,則為偶數(shù);結(jié)果為1則為奇數(shù)。填空2:如果該數(shù)組元素是偶數(shù),則將其值保存。填空3:最后按要求將偶數(shù)個(gè)數(shù)通過(guò)return語(yǔ)句返回給main函數(shù)。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,規(guī)定輸入的字符串全部為字母,fun函數(shù)的功能是:統(tǒng)計(jì)a所指字符串中每個(gè)字母在字符串中出現(xiàn)的次數(shù)(統(tǒng)計(jì)時(shí)不區(qū)分大小寫(xiě)),并將出現(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<stdio.h>#include<stdio.h>#include<string.h>voidfun(chara[]){intb[26],i,n,max;for(i=0;i<26;i++)/******found******/a[i]=0;n=strlen(a);for(i=0;i<n;i++)if(a[i]>=′a′&&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\n″,max+′a′);}main(){chara[200];printf(″請(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]<1)[i])知識(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ù)組h每個(gè)元素初始化為0。(2)小寫(xiě)字母的ASCII碼值減去a的ASCII碼值即為相應(yīng)字母的下標(biāo)值,相應(yīng)下標(biāo)值的數(shù)組元素的值增加1。(3)最大值小于被比較數(shù)時(shí),把被比較數(shù)的下標(biāo)值賦給max,max中存放的總是當(dāng)前最大值。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫(xiě)函數(shù)fun,它的功能是計(jì)算下列級(jí)數(shù)和,和值由函數(shù)值返回。例如,當(dāng)n=10,x=0.3時(shí),函數(shù)值為1.349859。注意:請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:#include<conio.h>#include<stdio.h>#include<math.h>#include<stdlib.h>doublefun(doublex,intn){}voidmain(){FILE*wf;system(″CLS″);printf(″%f″,fun(0.3,10));/******found******/wf=fopen(″out.dat″,″w″);fprintf(wf,″%f″,fun(0.3,10));fclose(wf);/******found******/}標(biāo)準(zhǔn)答案:doublefun(doublex,intn){inti;doubles=1.0.s1=1.0:for(i=1;i<=n;i++){s1=s1*i;/*各項(xiàng)中的階乘*/s=s+pow(s,i)/s1;/*按公式求出*/}returns;}知識(shí)點(diǎn)解析:程序定義了變量s1和s,s1表示每項(xiàng)的分母(即各項(xiàng)的階乘),s存放累加和。循環(huán)語(yǔ)句控制累加的次數(shù),在循環(huán)體中進(jìn)行階乘和累加操作,累加的結(jié)果存入s中。此處使用了求乘方函數(shù)pow(x,i),其含義是求x的i次方的值。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第3套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開(kāi)考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:將形參s所指字符串中的數(shù)字字符轉(zhuǎn)換成對(duì)應(yīng)的數(shù)值,計(jì)算出這些數(shù)值的累加和作為函數(shù)值返回。例如,形參s所指的字符串為abs5def126jkm8,程序執(zhí)行后的輸出結(jié)果為22。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<string.h>#include<ctype.h>intfun(char*s){intsum=0;while(*s){/*********found*********/if(isdigit(*s))sum+=*s【1】;/*********found*********/【2】;}/*********found*********/return【3】;}main(){chars[81];intn;printf("\nEnterastring:\n\n");gets(s);n=fun(s);printf("\nTheresultis:%d\n\n",n);}標(biāo)準(zhǔn)答案:(1)48或’0’(2)s++(3)sum知識(shí)點(diǎn)解析:本題是把字符串中是數(shù)字字符轉(zhuǎn)換成對(duì)應(yīng)的數(shù)值并進(jìn)行累加。填空1:’0’字符對(duì)應(yīng)的ASCII碼值是48,因此數(shù)字字符轉(zhuǎn)換成對(duì)應(yīng)數(shù)值時(shí)只要減去48,即是該數(shù)字字符對(duì)應(yīng)的數(shù)值,所以應(yīng)填48或者’0’。填空2:判斷完一個(gè)字符之后,將字符串指針移到下一個(gè)位置,所以應(yīng)填s++。填空3:返回累加和sum,所以應(yīng)填sum。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開(kāi)考生文件夾下modi1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modi1.c。在此程序中,函數(shù)fun的功能是:計(jì)算并輸出k以?xún)?nèi)最大的10個(gè)能被13或17整除的自然數(shù)之和。k的值由主函數(shù)傳入,若k的值為500,則函數(shù)的值為4622。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<Stdio.h>#include<conio.h>#include<stdlib.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;}voidmain(){system("CLS");printf("%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)程序中缺少程序完整所需的"}",此類(lèi)信息在做題時(shí)一定要注意,可以在做題前先運(yùn)行一下程序,這樣明顯的錯(cuò)誤一般都會(huì)有錯(cuò)誤信息顯示出來(lái)。比如丟失"}"的錯(cuò)誤信息是”Compoundstatementmissing}infunctionfun”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,編寫(xiě)函數(shù)fun,它的功能是:求小于形參n同時(shí)能被3與7整除的所有自然數(shù)之和的平方根,并作為函數(shù)值返回。例如,若n為1000時(shí),程序輸出應(yīng)為:s=153.909064。注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:#include<math.h>#include<stdio.h>doublefun(intn){}main()/*主函數(shù)*/{voidNONO();printf("s=%f\n",fun(1000));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)答案:doublefun(intn){doublesum=0.0;inti;for(i=21;i<=n;i++)if((i%3==0)&&(i%7==0))sum+=i;returnsqrt(sum);}知識(shí)點(diǎn)解析:本題考查算術(shù)運(yùn)算的算法,首先利用一個(gè)for循環(huán)判斷小于n且能同時(shí)被3和7整除的整數(shù),并將滿(mǎn)足條件的整數(shù)累加到sum,之后調(diào)用sqrt函數(shù)計(jì)算sum的平方根,并作為函數(shù)的返回值。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第4套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開(kāi)考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:利用指針數(shù)組對(duì)形參ss所指字符串?dāng)?shù)組中的字符串按由長(zhǎng)到短的順序排序,并輸出排序結(jié)果。ss所指字符串?dāng)?shù)組中共有N個(gè)字符串,且串長(zhǎng)小于M。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#inclucle<stdio.h>#include<string.h>#defineN5#defineM8voidfun(char(*ss)[M]){char*ps[N],*tp;inti,j,k;for(i=0;i<N;i++)ps[i]=ss[i];for(i=0;i<N﹣1;i++){/*********found*********/k=【1】;for(j=i+1;j<N;j++)/*********found*********/if(strlen(ps[k])<strlen(【2】))k=j;/*********found*********/tp=ps[i];ps[i]=ps[k];ps[k]=【3】;}printf("\nThestringaftersortingbylencjth:\n\n");for(i=0;i<N;i++)puts(ps[i]);}main(){charch[N][M]={"red","green","blue","yellow","black"};inti;printf("\nTheoriginalstring\n\n"),for(i=0;i<N;i++)puts(ch[i]);prrintf("\n");fun(ch);}標(biāo)準(zhǔn)答案:(1)i(2)ps[j](3)tp知識(shí)點(diǎn)解析:本題是按字符串的長(zhǎng)短進(jìn)行排序。填空1:外循環(huán)每循環(huán)一次,k應(yīng)保存當(dāng)前的i值,所以應(yīng)填i。填空2:使用內(nèi)循環(huán)對(duì)i+1后面的字符串長(zhǎng)度進(jìn)行比較,所以應(yīng)填ps[j]。填空3:此處的作用是交換兩個(gè)變量的值,所以應(yīng)填tp。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開(kāi)考生文件夾下modi1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modi1.c。在此程序中,已知一個(gè)數(shù)列從0項(xiàng)開(kāi)始的前3項(xiàng):0、0、1,以后的各項(xiàng)都是其相鄰的前3項(xiàng)之和。下列給定的程序中,函數(shù)fun的功能是:計(jì)算并輸出該數(shù)列前n項(xiàng)的平方根之和8am。n的值通過(guò)形參傳入。例如,當(dāng)n=10時(shí),程序的輸出結(jié)果應(yīng)為23.197745。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<math.h>/*********found*********/fun(intn){doublesum,s0,s1,s2,s;intk;sum=1.0;if(n<=2)sum=0.0;s0=0.0;s1=0.0;s2=1.0;for(k=4;k<=n;k++){s=s0+s1+s2;sum+=sqrt(s);s0=s1;s1=s2;s2=s;}/*********found*********/returnsum}voidmain(){intn;system("CLS");printf("InputN=");scanf("%d",&n);printf("%f\n",fun(n));}標(biāo)準(zhǔn)答案:(1)doublefun(intn)(2)returnsum;知識(shí)點(diǎn)解析:(1)根據(jù)函數(shù)的返回值可知函數(shù)fun應(yīng)定義為double類(lèi)型。(2)語(yǔ)法錯(cuò)誤,缺分號(hào)。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫(xiě)函數(shù)fun,它的功能是計(jì)算下列級(jí)數(shù)和,和值由函數(shù)值返回。例如,當(dāng)n=10,x=0.3時(shí),函數(shù)值為1.349859。注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:#include<conio.h>#include<stdio.h>#include<math.h>#include<stdlib.h>doublefun(doublex,intn){}voidmain(){FILE*wf;system("CLS");printf("%f",fun(0.3,10));/*********found*********/wf=fopen("out.dat","w");fprintf(wf,"%f",fun(0.3,10));fclose(wf);/*********found*********/}標(biāo)準(zhǔn)答案:doublefun(doublex,intn){inti;doubles=1.0,s1=1.0;for(i=1;i<=n;i++){s1=s1*i;/*各項(xiàng)中的階乘*/s=s+pow(x,i)/s1;/*按公式求出*/}returns;}知識(shí)點(diǎn)解析:程序定義了變量s1和s,s1表示每項(xiàng)的分母(即各項(xiàng)的階乘),s存放累加和。循環(huán)語(yǔ)句控制累加的次數(shù),在循環(huán)體中進(jìn)行階乘和累加操作,累加的結(jié)果存入s中。此處使用了求乘方函數(shù)pow(x,i),其含義是求x的i次方的值。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第5套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開(kāi)考生文件夾下blankl中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,函數(shù)fun()的功能是找出100~x(x≤999)各位上的數(shù)字之和為15的所有整數(shù),并輸出;將符合條件的整數(shù)的個(gè)數(shù)作為函數(shù)值返回。例如,當(dāng)n為500時(shí),各位數(shù)字之和為15的整數(shù)有159、168、177、186、195、249、258、267、276,285、294、339、348、357、366、375、384、393、429、438、447、456、465、474、483、492,共26個(gè)。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并將下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdio.h>2intfun(intx)3{intn,s1,s2,s3,t;4/*********found*********/5n=<u>【1】</u>;6t=100;7/*********found*********/8while(t<=<u>【2】</u>)9{s1=t%10;s2=(t/10)%10;10s3=t/100;11if(s1+s2+s3==15)12{printf("%d",t);13n++;14}15/*********found*********/16<u>【3】</u>;17}18returnn;19}20main()21{intx=-1;22while(x>999||x<0)23{printf("Pleaseinput(0<x<=999):");24scanf("%d",&x);}25printf("\nTheresultis:%d\n",fun(x));26}標(biāo)準(zhǔn)答案:(1)0(2)x(3)t++知識(shí)點(diǎn)解析:填空1:變量n用于存放符合條件的整數(shù)的個(gè)數(shù),應(yīng)賦初值為0。故空1處應(yīng)該填0。填空2:根據(jù)題目要求,確定循環(huán)變量t的取值范圍為t<=x。故空2處應(yīng)該填x。填空3:循環(huán)變量t自增1操作。故空3處應(yīng)該填t++。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開(kāi)考生文件夾下modi1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modil.c。在此程序中,函數(shù)fun()的功能是先將s所指字符串中的字符按逆序存放到t所指字符串中,然后把s所指字符串中的字符按正序連接到t所指字符串之后。例如,當(dāng)s所指的字符串為"ABCDE"時(shí),t所指的字符串應(yīng)為"EDCBAABCDE"。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdlib.h>2#include<conio.h>3#include<stdio.h>4#include<string.h>5voidfun(char*s,char*t)6{7/*********found*********/8inti;9s1=strlen(s);10for{i=0;i<s1;i++)11/*********found*********/12t[i]=s[s1-i];13for(i=0;i<=s1;i++)14t[s1+i]=s[i];15t[2*s1]=’\0';16}17voidmain()18{19chars[100],t[100];20system("CLS");21printf("\nPleaseenterstrings:");22scanf{"%s",s);23fun(s,t);24printf("Theresultis:%s\n",t);25}標(biāo)準(zhǔn)答案:(1)inti,s1;(2)t[i]=s[s1-i-1];知識(shí)點(diǎn)解析:(1)程序中用到的變量s1沒(méi)有定義。在使用前應(yīng)定義變量s1。(2)該循環(huán)實(shí)現(xiàn)將s字符串中的字符逆序存入t字符串中,t[i]存放s字符串中的元素s[s1-i-1]。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開(kāi)考生文件夾下progl中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件progl.c。在此程序中。編寫(xiě)函數(shù)fun(),其功能是將a、b兩個(gè)兩位正整數(shù)合并成一個(gè)新的整數(shù)放在c中。合并的方式是將a中的十位數(shù)和個(gè)位數(shù)依次放在變量c的百位和個(gè)位上,b中的十位數(shù)和個(gè)位數(shù)依次放在變量c的千位和十位上。例如,當(dāng)a=45,b=12,調(diào)用該函數(shù)后c=1425。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:1#include<conio.h>2#include<stdio.h>3voidfun(inta,intb,long*c)4{56}7main()8{9inta,b;10longc;11printf("Inputa,b:");12scanf("%d%d",&a,&b);13fun(a,b,&c);14printf("Theresultis:%1d\n",c);15}標(biāo)準(zhǔn)答案:1voidfun(inta,intb,long*c)2{3/*b%10獲取b的個(gè)位數(shù),a/10獲取a的十位數(shù),a%10獲取a的個(gè)位數(shù),b/10獲取b的十位數(shù)*/4*c=a%10+(b%10)*10+(a/10)*100+(b/10)*1000;5}知識(shí)點(diǎn)解析:本題主要考查如何取出變量a和b的個(gè)位數(shù)和十位數(shù),取出后如何將其表示成c中相應(yīng)的位數(shù)。由于變量a和b都是只有兩位的整數(shù),因此分別對(duì)它們除以10可得到它們的十位數(shù),分別用10對(duì)它們求余可得到它們的個(gè)位數(shù)。將得到的數(shù)對(duì)應(yīng)乘以1000、100、10、1,即可得到c的千位數(shù)、百位數(shù)、十位數(shù)、個(gè)位數(shù)。注意使用變量c時(shí)要進(jìn)行指針運(yùn)算。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第6套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開(kāi)考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,函數(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。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<stdlib.h>#defineN6typedefstructnode{intdata;structnode*next;}NODE;voidfun(NODE*h){NODE*p,*q;intt;p=h;while(p){/*********found*********/q=【1】;/*********found*********/while(【23】){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;inti;h=NULL;for(i=0;i<N;i++){q=(NODE*)malloc(sizeof(NODE));q一>data=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知識(shí)點(diǎn)解析:填空1:從第2個(gè)while循環(huán)可知,q的初值應(yīng)該為p的next,故此空應(yīng)該填寫(xiě)p一>next。填空2:第2個(gè)while循環(huán)表示的是每次從鏈表剩下的樹(shù)中找出最小的數(shù),因此此空應(yīng)該以q是否為空來(lái)判斷循環(huán)是否結(jié)束,所以此空應(yīng)該填寫(xiě)q。填空3:當(dāng)找到一個(gè)最小的數(shù)時(shí)p應(yīng)該向后移,因此此空應(yīng)該填寫(xiě)p一>next。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開(kāi)考生文件夾下modi1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modi1.c。在此程序中,函數(shù)fun的功能是:將s所指字符串中的字母轉(zhuǎn)換為按字母序列的后續(xù)字母(如“Z”轉(zhuǎn)化為“A”,“z”轉(zhuǎn)化為“a”),其他字符不變。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#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)++;}}voidmain(){chars[80];system("CLS");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)while(*s)或while(*s!=’\0’)(2)s++;知識(shí)點(diǎn)解析:(1)通過(guò)while語(yǔ)句可對(duì)字符串所有字符進(jìn)行遍歷,循環(huán)條件是對(duì)當(dāng)前字符進(jìn)行判斷,若當(dāng)前字符不是字符串結(jié)尾,則對(duì)其進(jìn)行其他操作。(2)因?yàn)樵撗h(huán)通過(guò)指針s的移動(dòng)遍歷字符串,所以每循環(huán)一次要使指針向后移動(dòng)一個(gè)位置,而不是將指針?biāo)傅脑丶?。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫(xiě)函數(shù)fun,其功能是:移動(dòng)一維數(shù)組中的內(nèi)容,若數(shù)組中有n個(gè)整數(shù),要求把下標(biāo)從0~p(含p,p小于等于n-1)的數(shù)組元素平移到數(shù)組的最后。例如,一維數(shù)組中的原始內(nèi)容為:1、2、3、4、5、6、7、8、9、10;p的值為3。移動(dòng)后,一維數(shù)組中的內(nèi)容應(yīng)為:5、6、7、8、9、10、1、2、3、4。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。試題程序:#include<stdio.h>#defineN80voidfun(int*w,intp,intn){}main(){inta[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);inti,p,n=15;printf("Theoriginaldata:\n");for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\nEnterp:");scanf("%d",&p);fun(a,p,n);printf("\nThedataaftermoving:\n");for(i=0;i<n;i++)printf("%3d",a[i]);printf("\n\n");}標(biāo)準(zhǔn)答案:voidfun(int*w,intp,intn){intx,j,ch;for(x=0;x<=p;x++){ch=w[0];for(j=1;j<n;j++)/*通過(guò)for循環(huán)語(yǔ)句,將p+1到n-1(含n-1)之間的數(shù)細(xì)元素依次向前移動(dòng)p+1個(gè)存儲(chǔ)單元*/{w[j-1]=w[j];}w[n-1]=ch;/*將0到p個(gè)數(shù)組元素逐一賦給數(shù)組w[n-1]*/}}知識(shí)點(diǎn)解析:本題要求把下標(biāo)從0~p(含p,p小于等于n-1)的數(shù)組元素平移到數(shù)組的最后,可以根據(jù)輸入的p值,通過(guò)for循環(huán)語(yǔ)句,將p+1-n-1(含n-1)之間的數(shù)組元素依次向前移動(dòng)p+1個(gè)存儲(chǔ)單元,即w[j-1]=w[j];,同時(shí)將0~p個(gè)數(shù)組元素逐一賦給數(shù)組w[n-1],也就是通過(guò)語(yǔ)句w[n-1]=ch;來(lái)實(shí)現(xiàn)此操作的。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第7套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開(kāi)考生文件夾下blankl中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,通過(guò)定義學(xué)生結(jié)構(gòu)體數(shù)組,存儲(chǔ)若干名學(xué)生的學(xué)號(hào)、姓名和三門(mén)課的成績(jī)。函數(shù)fun()的功能是將存放學(xué)生數(shù)據(jù)的結(jié)構(gòu)體數(shù)組,按姓名的字典順序(從小到大)排列。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并將下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdio.h>2#include<string.h>3structstuclent{4longsno;5charname[10];6floatscore[3];7};8voidfun(structstudenta[],intn)9{10/*********found*********/11<u>【1】</u>t;12inti,j;13/*********found*********/14for(i=0;i<<u>【2】</u>;i++)15for(j=i+1;j<n;j++)16/*********found*********/17if(strcmp(<u>【3】</u>)>0)18{t=a[i];a[i]=a[j];19a[j]=t;20}21}21main()22{structstudents[4]={{10001,"ZhangSan",95,80,88},{10002,"LiSi",85,70,78},{10003,"CaoKai",75,60,88},{10004,"FangFang",90,82,87}};24inti,j;25printf("\n\nTheoriginaldata:\n\n");26for{j=0;j<4,j++)27{printf("\nNo:%1dName:%-8sScores:",s[j].sno,s[j].name);28for(i=0;i<3;i++)29printf("%6.2f",s[j].score[i]);30printf("\n");31}32fun(s,4);33printf("\n\nThedataaftersorting:\n\n");34for(j=0;j<4;j++)35{printf("\nNo:%1dName:%-8sScores:",s[j].sno,s[j].name);36for(i=0;i<3;i++)37printf("%6.2f",s[j].score[i]);38printf("\n");39}40}標(biāo)準(zhǔn)答案:(1)structstudent(2)n-1(3)a[i].flame,a[j].name知識(shí)點(diǎn)解析:填空1:變量t是中間變量,用來(lái)存放結(jié)構(gòu)體數(shù)組中的元素,因此應(yīng)定義為結(jié)構(gòu)體類(lèi)型。故空1處應(yīng)該填struetstudent。填空2:for循環(huán)語(yǔ)句用來(lái)遍歷結(jié)構(gòu)體數(shù)組,變量n是數(shù)組的長(zhǎng)度,因此循環(huán)變量的取值范圍是0~n-1。故空2處應(yīng)該填n-1。填空3:字符串比較函數(shù)strcmp()的一般格式為strcmp(字符串1,字符串2)。功能:按照ASCⅡ值順序比較兩個(gè)字符數(shù)組中的字符串,并由函數(shù)返回值返回比較結(jié)果。字符串1=字符串2,返回值=0。字符串1>字符串2,返回值>0。字符串1<字符串2,返回值<0。故空3處應(yīng)該填a[i].name,a[j].name。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開(kāi)考生文件夾下modil中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modil.c。在此程序中,函數(shù)fun()的功能是從p所指字符串中找出ASCⅡ值最大的字符,將其放在第1個(gè)位置上,并將該字符前的原字符向后順序移動(dòng)。例如,調(diào)用fun()函數(shù)之前輸人字符串"ABCDeFGH",調(diào)用之后字符串中的內(nèi)容應(yīng)為"eABCDFGH"。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdio.h>2voidfun(char*p)3{4charmax,*q;inti=0;5max=p[i];6while(p[i]!=0)7{8if(max<P[i])9{max=p[i];10/*********found*********/11q=p+i12}13i++;14}15/*********found*********/16while(q<p)17{18*q=*(q-1);q--;19}20p[0]=max;21}22voidmain()23{24charstr[80];25printf("Enterastring:");26gets(str);27printf("\nTneoriginalstring:");28puts(str);29fun(str);30printf("\nThestringaftermoving:");31puts(str);printf("\n\n");32}標(biāo)準(zhǔn)答案:(1)q=p+i;(2)while(q>p)知識(shí)點(diǎn)解析:解答本題需要3個(gè)步驟:首先找到字符串中ASCⅡ值最大的字符并保存;然后將該字符復(fù)制,并將該字符前面的字符串順次后移;最后將ASCⅡ值最大的字符賦給字符串的第1個(gè)字符。要找到ASCⅡ值最大的字符可以定義1個(gè)字符變量max,該字符變量初始時(shí)等于字符串的第1個(gè)字符,若字符串的下一個(gè)字符大于max,則將下一個(gè)字符賦給max,如此循環(huán)到字符串末尾,即可得到ASCⅡ值最大的字符,同時(shí)令指針q指向值最大的字符。此后對(duì)值最大的字符前面的子字符串順次后移,可采用while語(yǔ)句實(shí)現(xiàn)。(1)此處為語(yǔ)法錯(cuò)誤,程序漏寫(xiě)了分號(hào)。(2)while條件表達(dá)式應(yīng)為q>P。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開(kāi)考生文件夾下progl中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件progl.c。在此程序中,學(xué)生的記錄由學(xué)號(hào)和成績(jī)組成,N名學(xué)生的記錄已放入主函數(shù)的結(jié)構(gòu)體數(shù)組s中。請(qǐng)編寫(xiě)函數(shù)fun(),其功能是把指定分?jǐn)?shù)范圍內(nèi)的學(xué)生記錄存放在b所指的數(shù)組中,分?jǐn)?shù)范圍內(nèi)的學(xué)生人數(shù)由函數(shù)值返回。如輸入的分?jǐn)?shù)是60、69,則應(yīng)當(dāng)把分?jǐn)?shù)在60~69的學(xué)生記錄輸出,包含60分和69分的學(xué)生記錄。主函數(shù)中把60放在low中,把69放在high中。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)申填入你編寫(xiě)的若干語(yǔ)句。試題程序:1#include<stdio.h>2#defineN163typedefstruct4{5charnum[10];6ints;7}STREC;8intfun(STREC*a,STREC*b,int1,inth)9{1011}12voidmain()13{14STRECs[N]=f{"GA005",85},{"GA003",76),{"GA002",69},{"GA004",85},{"GA001",96},{"GA007",72},{"GA008",64},{"GA006",87},{"GA015",85},{"GA013",94},{"GA012",64},{"GA014",91},{"GA011",90},{"GA017",64},{"GA018",64},{"GA016",72}};15STRECh[N];16inti,n,low,high,t;17printf("Enter2integernumberlow&high:");18scanf("%d%d",&low,&high);19if(high<low)20{t=high;high=low;low=t;)21n=fun(s,h,low,high);22printf("Thestudent’sdatabetween%d--%d:\n",low,high);23for(i=0;i<n;i++)24printf("%s%4d\n",h[i].hum,h[i].s);25printf("\n");26}標(biāo)準(zhǔn)答案:1intfun(STREC*a,STREC*b,2int1,inth)2{3inti,j=0;4for(i=0;i=1&&a[i].s<=h)/*將分?jǐn)?shù)高于1,低于h的學(xué)生記錄存入結(jié)構(gòu)體數(shù)組b中*/6b[j++]=a[i];7returnj;/*返回分?jǐn)?shù)范圍內(nèi)的學(xué)生人數(shù)*/8}知識(shí)點(diǎn)解析:本題使用循環(huán)判斷結(jié)構(gòu)實(shí)現(xiàn)題目要求。循環(huán)語(yǔ)句用于遍歷結(jié)構(gòu)體數(shù)組;條件語(yǔ)句用于判斷當(dāng)前元素是否符合條件,若符合條件則將其存入結(jié)構(gòu)體數(shù)組b中。變量j為數(shù)組b元素下標(biāo),最后變量j為學(xué)生人數(shù),作為函數(shù)值返回。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第8套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開(kāi)考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。此程序的描述是圍繞山頂一圈有N個(gè)山洞,編號(hào)為0、1、2、3、…、N﹣1,有一只狐貍和一只兔子在洞中居住。狐貍總想找到兔子并吃掉它,它的尋找方法是先到第一個(gè)洞(即編號(hào)為0的洞)中找;再隔1個(gè)洞,即到編號(hào)為2的個(gè)洞中找;再隔2個(gè)洞,即到編號(hào)為5的洞中找;下次再隔3個(gè)洞;即到編號(hào)為9的洞中找;……。若狐貍找一圈,請(qǐng)為兔子指出所有不安全的洞號(hào)。程序中用a數(shù)組元素模擬一個(gè)洞,數(shù)組元素的下標(biāo)即為洞號(hào),數(shù)組元素中的值為0時(shí),表示該洞安全,為1時(shí)表示該洞不安全。若形參n的值為30時(shí),不安全的洞號(hào)是0、2、5、9、14、20、27。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#defineN100voidfun(int*a,intn){inti,t;for(i=0;i<n;i++)/*********found*********/a[i]=【1】;i=0;/*********found*********/【2】=1;while(i<n){a[i]=1;t++;/*********found*********/i=【3】;}}main(){inta[N],i,n=30;fun(a,n);for(i=0;i<n;i++)if(a[i]==1)printf("不安全的洞號(hào)是:%d\n",i);}標(biāo)準(zhǔn)答案:(1)0(2)t(3)i+t知識(shí)點(diǎn)解析:首先為數(shù)組所有元素賦初值0,利用循環(huán)為符合條件的數(shù)組賦值為1,并計(jì)算下一個(gè)數(shù)據(jù)的下標(biāo)。設(shè)置一個(gè)變量存放間隔數(shù),每次循環(huán)間隔數(shù)加1。本次下標(biāo)加間隔數(shù)加1為下一個(gè)下標(biāo)。填空1:利用循環(huán)為數(shù)組所有元素賦值為0。填空2:變量t為間隔數(shù),在循環(huán)過(guò)程中每次加1,設(shè)定初始值為1。填空3:下一個(gè)數(shù)組下標(biāo)為本次的下標(biāo)加間隔數(shù)加1的值。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開(kāi)考生文件夾下modi1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modi1.c。在此程序中,規(guī)定輸入的字符串全部為字母,fun函數(shù)的功能是:統(tǒng)計(jì)a所指字符串中每個(gè)字母在字符串中出現(xiàn)的次數(shù)(統(tǒng)計(jì)時(shí)不區(qū)分大小寫(xiě)),并將出現(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<stdio.h>#include<stdio.h>#include<string.h>voidfun(chara[]){intb[26],i,n,max;for(i=0;i<26;i++)/*********found*********/a[i]=0;rl=strlen(a);for(i=0;i<n;i++)if(a[i]>=’a’&&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\n",max+’a’);}main(){chara[200];printf("請(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]<b[i])知識(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)小寫(xiě)字母的ASCII碼減去’a’的ASCII即為相應(yīng)字母的下標(biāo)值,相應(yīng)下標(biāo)值的數(shù)組元素的值增加1。(3)最大值小于被比較數(shù)時(shí),把被比較數(shù)的下標(biāo)值賦給max,max中存放的總是當(dāng)前最大值。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編函數(shù)fun,其功能是將一個(gè)數(shù)字字符串轉(zhuǎn)換成與其面值相同的長(zhǎng)整型整數(shù)??烧{(diào)用strlen函數(shù)求字符串的長(zhǎng)度。例如:在鍵盤(pán)輸入字符串2345210,函數(shù)返回長(zhǎng)整型數(shù)2345210。注意:部分源程序存在PROG1.C中,請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun指定的部位填入所編寫(xiě)的若干語(yǔ)句。試題程序:#include<stdio.h>#include<string.h>voidNONO();longfun(ohar*s){}main(){chars[10];longr;printf("請(qǐng)輸入一個(gè)長(zhǎng)度不超過(guò)9個(gè)字符的數(shù)字字符串:");gets(s);r=fun(s);printf("r=%ld\n",r);NONO();}voidNONO(){/*本函數(shù)用于打開(kāi)文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*fp,*wf;inti;longr;chars[10],*p;fp=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fgets(s,10,fp);P=strchr(s,’\n’);if(p)*p=0;r=fun(s);fprintf(wf,"%ld\n",r);}fclose(fp);fclose(wf);}標(biāo)準(zhǔn)答案:longfun(char*s){inti,len;longsum=0;len=strlen(s);for(i=0;i<len;i++){,sum=sum*10+*s﹣’0’;s++;}retUrnSum;}知識(shí)點(diǎn)解析:要把一個(gè)數(shù)字字符轉(zhuǎn)為相應(yīng)的數(shù)字,只要用它的ASCII碼減去48即可。要把數(shù)字字符串轉(zhuǎn)為相應(yīng)的數(shù)字,則要從左到右依次取出字符轉(zhuǎn)為相應(yīng)數(shù)字,乘10再加上下一位數(shù)字。國(guó)家二級(jí)C語(yǔ)言機(jī)試(操作題)模擬試卷第9套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開(kāi)考生文件夾下blank1中的解決方案。此解決方

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論