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

下載本文檔

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

文檔簡(jiǎn)介

國(guó)家二級(jí)C語言機(jī)試(操作題)模擬試卷55(共9套)(共27題)國(guó)家二級(jí)C語言機(jī)試(操作題)模擬試卷第1套一、程序填空題(本題共1題,每題1.0分,共1分。)1、程序通過定義學(xué)生結(jié)構(gòu)體變量,存儲(chǔ)了學(xué)生的學(xué)號(hào)、姓名和三門課的成績(jī)。所有學(xué)生數(shù)據(jù)均以二進(jìn)制方式輸出到文件中。函數(shù)fun的功能是從形參filename所指的文件中讀入學(xué)生數(shù)據(jù),并按照學(xué)號(hào)從小到大排序后,再用二進(jìn)制方式把排序后的學(xué)生數(shù)據(jù)輸出到filename所指的文件中,覆蓋原來的文件內(nèi)容。請(qǐng)?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】)jfread(s,sizeof(STU),N,fp);fclose(fp);for(i=0;i<N一1;i++)for(j=i+1;j<N;j++)/*********found*********/if(s[i].sno【2】s[j].sno){t=s[i];s[i]=s[j];s[j]=t;}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},{10004,"FangFang",90,82,87},{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’);for(j=0;j<N;j++){printf("\nNo:%idName:%一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].scoEe[i]);printf("\n");}}標(biāo)準(zhǔn)答案:(1)"rb"(2)>(3)fwrite知識(shí)點(diǎn)解析:填空1:題目中要求從形參filename所指的文件中讀入學(xué)生的數(shù)據(jù),以此可以看出本空應(yīng)該填寫"rb"。填空2:此處的if語句是比較學(xué)號(hào)的大小,如果學(xué)號(hào)大就和學(xué)號(hào)小的換位,以此本空填寫>。填空3:題目要求所有的學(xué)生數(shù)據(jù)均以二進(jìn)制方式輸出到文件中,因此本空填寫fwrite。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:將十進(jìn)制正整數(shù)m轉(zhuǎn)換成k(2≤k≤9)進(jìn)制數(shù),并按位輸出。例如,若輸入8和2,則應(yīng)輸出1000(即十進(jìn)制數(shù)8轉(zhuǎn)換成二進(jìn)制表示是1000)。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdio.h>2#include<conio.h>3/*********found*********/4voidfun(intm,intk);5{intaa[20],i;6for(i=0;m;i++)7{8/*********found*********/9aa[i]=m/k;10m/=k;11}12for(;i;i--)13/*********found*********/14printf("%d",aa[i]);15}16main()17{18intb,n;19printf("\npleaseenteranumberandabase:\n");20scanf("%d%d",&n,&b);21fun(n,b);22printf("\n");23}標(biāo)準(zhǔn)答案:(1)voidfun(intm,intk)(2)aa[i]=m%k;(3)pfinff("%d",aa[i—1]);知識(shí)點(diǎn)解析:(1)函數(shù)定義的格式錯(cuò)誤,不應(yīng)帶有";"。(2)將十進(jìn)制正整數(shù)轉(zhuǎn)換為任意進(jìn)制的數(shù)與十進(jìn)制正整數(shù)轉(zhuǎn)換成二進(jìn)制的數(shù)的方法是一樣的。從整數(shù)n譯出它的各位k進(jìn)制數(shù)值,需采用除k取余的方法,即求n除k的余數(shù),得到它的k進(jìn)制的個(gè)位數(shù),接著將n除以k。在n不等于0的狀況下循環(huán),能順序求出n的k進(jìn)制的各個(gè)位上的數(shù)。(3)在進(jìn)行for(i=0;m;i++)循環(huán)結(jié)束時(shí),i已經(jīng)多加了一個(gè)1,所以這里要減去1。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、編寫函數(shù)fun,其功能是:將兩個(gè)兩位數(shù)的正整數(shù)a、b合并成一個(gè)整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的個(gè)位和百位上,b數(shù)的十位和個(gè)位數(shù)依次放在12數(shù)的千位和十位上。例如,當(dāng)a=45,b=12時(shí),調(diào)用該函數(shù)后,c=1524。注意:部分源程序給出如下。數(shù)據(jù)文件IN.DAT中的數(shù)據(jù)不得修改。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。試題程序:#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:%id\n",c);}標(biāo)準(zhǔn)答案:voidfun(inta,intb,long*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)解析:本題主要的問題是如何取出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語言機(jī)試(操作題)模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:把形參a所指數(shù)組中的奇數(shù)按原順序依次存放到a[0]、a[1]、a[2]…中,把偶數(shù)從數(shù)組中刪除,奇數(shù)個(gè)數(shù)通過函數(shù)值返回。例如,若a所指數(shù)組中的數(shù)據(jù)最初排列為:9,1,4,2,3,6,5,8,7,刪除偶數(shù)后,a所指數(shù)組中的數(shù)據(jù)為:9,1,3,5,7,返回值為5。請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#inclucle<stotio.h>#defineN9intfun(inta[],intn){inti,j;j=0;for(i=0;i<n;i++)/*********found*********/if(a[i]%2==【1】){/*********found*********/a[j]=a[i];【2】;}/*********found*********/return【3】;}main(){intb[N]={9,1,4,2,3,6,5,8,7),i,n;printf("\nTheorigina2data:\n");for(i=0;i<N;i++)printf("%4d",b[i]);printf("\n");n=fun(b,N);printf("\nThenumberofodd:&d\n",n);printf("\nTheoddnumber:\n");for(i=0;i<n;i++)printf("%4d",b[i]);printf("\n");}標(biāo)準(zhǔn)答案:(1)1(2)j++(3)j知識(shí)點(diǎn)解析:填空1:根據(jù)題目要求,需進(jìn)行奇偶數(shù)的判定,可以通過if條件語句來判斷數(shù)組元素是否為奇數(shù),如果元素不能被2整除,則為奇數(shù),所以填入if(a[i]%2==1)。填空2:將為奇數(shù)的元素重新存放到數(shù)組的前面,同時(shí)下標(biāo)增1。填空3:函數(shù)返回值需要返回?cái)?shù)組中奇數(shù)的個(gè)數(shù),因此返回變量j。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modi1.c。在此程序中,函數(shù)fun的功能是:將主函數(shù)中兩個(gè)變量的值進(jìn)行交換。例如,若變量a中的值為8,b中的值為3,則程序運(yùn)行后,a中的值為3,b中的值為8。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>/*********found*********/voidfun(intx,inty){intt;/*********found*********/t=x;x=y;y=t;}voidmain(){inta,b;a=8;b=3;fun(&a,&b);printf("%d%d\n",a,b);}標(biāo)準(zhǔn)答案:(1)voidfun(int*x,int*y)(2)t=*x;*x=*y;*y=t;知識(shí)點(diǎn)解析:(1)本題考查指針變量作函數(shù)參數(shù)。一般變量作參數(shù)時(shí),不能改變實(shí)參的值,采用指針變量作為參數(shù)則能夠改變實(shí)參的值。主函數(shù)中fun函數(shù)的調(diào)用方式表明fun函數(shù)的參數(shù)應(yīng)當(dāng)為指針類型。(2)此處是一個(gè)變量交換操作錯(cuò)誤,可知x、y是指針類型,變量類型不同,因而x、y不能與t進(jìn)行值的交換。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,編寫函數(shù)fun,其功能是:將S所指字符串中ASCII碼值為奇數(shù)的字符刪除,剩余字符形成的新串放在t所指數(shù)組中。例如,若s所指字符串中的內(nèi)容為“ABCDEFG12345”,其中字符A的ASCII碼值為奇數(shù),字符1的ASCII碼值也為奇數(shù),都應(yīng)當(dāng)刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是“BDF24”。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*s,chart[]){main(){chars[100],t[100],Msg[]="Pleaseenterstrings:";printf(Msg);scanf("%s",s);fun(s,t);printf("\nTheresuitis:%s\n",t);}標(biāo)準(zhǔn)答案:voidfun(char*s,chart[]){inti,j=0,n;n=strlen(s);/*遍歷整個(gè)數(shù)組*/for(i=0;i<n;i++)/*如果元素的ASC工工碼值為偶數(shù)*/if(s[i]%2==0){/*將元素保存到t中*/t[j]=s[i];j++;}t[j]=’\0’;}知識(shí)點(diǎn)解析:要?jiǎng)h除ASCII碼值為奇數(shù)的字符,也就是要保留ASCII碼值為偶數(shù)的字符,由于最終是要求出剩余字符形成的新串,所以本題的算法是對(duì)原字符串從頭到尾掃描,找出ASCII碼值為偶數(shù)的字符并依次存入數(shù)組。國(guó)家二級(jí)C語言機(jī)試(操作題)模擬試卷第3套一、程序填空題(本題共1題,每題1.0分,共1分。)1、用篩選法可得到2~n(n<10000)之間的所有素?cái)?shù),方法是:首先從素?cái)?shù)2開始,將所有2的倍數(shù)的數(shù)從數(shù)表中刪去(把數(shù)表中相應(yīng)位置的值置成0);接著從數(shù)表中找下一個(gè)非0數(shù),并從數(shù)表中刪去該數(shù)的所有倍數(shù);依此類推,直到所找的下一個(gè)數(shù)等于n為止。這樣會(huì)得到一個(gè)序列:2,3,5,7,11,13,17,19,23,…函數(shù)fun用篩選法找出所有小于等于n的素?cái)?shù),并統(tǒng)計(jì)素?cái)?shù)的個(gè)數(shù)作為函數(shù)值返回。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includeintfun(intn){inta[10000],i,j,count=0;i=2;while(i標(biāo)準(zhǔn)答案:(1)a[i](2)a[i](3)0知識(shí)點(diǎn)解析:fun函數(shù)的功能是用篩選法可得到2~n(n<10000)之間的所有素?cái)?shù)。第一空:循環(huán)“for(j=a[i]*2;j<=n;j+=____1____)”中,循環(huán)變量j的初始值從a[i]的2倍開始,下一次進(jìn)入循環(huán)j就是a[i]的3倍,第一空處是補(bǔ)充j的變化情況,而j每次都增加一個(gè)a[i],即第一空處應(yīng)為“a[i]”。第二空:根據(jù)題意第二空處是從數(shù)表中找下一個(gè)非0數(shù),即在循環(huán)中比較a[i]是否為0,如果為0的話,i++指向后一個(gè)數(shù)表元素,故第二空處應(yīng)為“a[i]”。第三空:根據(jù)語句“{count++;printf(count%15?"%5d":"\n%5d",a[i]);}”可知在滿足條件之后計(jì)數(shù)變量count自增,并且輸出a[i],可知a[i]是一個(gè)素?cái)?shù),由審題分析可知,經(jīng)過篩選之后數(shù)表中非0的元素就是素?cái)?shù),故第三空處應(yīng)為“0”,即a[i]不為0的話就是素?cái)?shù)。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:為一個(gè)偶數(shù)尋找兩個(gè)素?cái)?shù),這兩個(gè)素?cái)?shù)之和等于該偶數(shù),并將這兩個(gè)素?cái)?shù)通過形參指針傳回主函數(shù)。請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#includevoidfun(inta,int*b,int*c){inti,j,d,y;for(i=3;i<=a/2;i=i+2){Y=l;for(j=2;j<=sqrt((double)i);j++)if(i%j==0)y=0;d==a—i;for(j=2;j<=sqrt((double)d);j++)if(d%j==0)y=0;}}main(){inta,b,c;do{printf("\nInputa:");scanfwhile(a%2);printf("\n\n%d=%d+%d\n",a,b,c);}標(biāo)準(zhǔn)答案:(1)y=1;(2)d=a—i;知識(shí)點(diǎn)解析:函數(shù)的功能是為一個(gè)偶數(shù)查找兩個(gè)素?cái)?shù),這兩個(gè)素?cái)?shù)之和等于該偶數(shù)。(1)第一標(biāo)識(shí)下“Y=1;”變量Y沒有定義,編譯時(shí)會(huì)提示出錯(cuò)。題中用標(biāo)志y區(qū)別i是否是素?cái)?shù),y=1是素?cái)?shù),y=0不是素?cái)?shù)。第一個(gè)標(biāo)識(shí)下當(dāng)i是素?cái)?shù)時(shí),y最后的值就是進(jìn)入循環(huán)結(jié)構(gòu)前的初始化值0,標(biāo)識(shí)該值不是素?cái)?shù),所以“Y=1;”應(yīng)該改為“y=1;”。(2)在語句“if(y==1)”中,應(yīng)該是判斷(a—i)是否是素?cái)?shù),即d應(yīng)賦值“a—i”而不是“d=a—i;”,所以第二個(gè)標(biāo)識(shí)下“d==a—i;”改為“d=a—i;”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫函數(shù)fun,它的功能是:計(jì)算并輸出n(包括n)以內(nèi)能被5或9整除的所有自然數(shù)的倒數(shù)之和。例如,在主函數(shù)中從鍵盤給n輸入20后,輸出為:s=0.583333。注意:要求n的值不大于100。部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)mam和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。#includedoublefun(intn){}NONO(){/*請(qǐng)?jiān)诖撕瘮?shù)內(nè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.dat","w");for(i=0;i<10;i++){fscanf(rf,"%d",&n);s=fun(n);fprintf(wf,"%1f\n",s);}fclose(rf);fclose(wf);}main(){intn;doubles;printf("\nlnputn:”);scanf("%d",&n);s=fun(n);printf("\n\ns=%f\n",s);NONO();}標(biāo)準(zhǔn)答案:1inti;2doublesum=0.0;3for(i=1;i<=n;i++)4if(1005==0lli009==0)/*被5或9整除*/5sum+=1.0/i;6returnsum;知識(shí)點(diǎn)解析:程序功能是計(jì)算并輸出n(包括n)以內(nèi)能被5或9整除的所有自然數(shù)的倒數(shù)之和。(1)首先,通過循環(huán),判斷小于等于n的每一個(gè)整數(shù)是否符合題干中的要求。其中的判斷條件能否被5或者被9整除為:i%5=0||i%9==0。(2)然后求得符合(1)要求的數(shù)的倒數(shù)的累加和。國(guó)家二級(jí)C語言機(jī)試(操作題)模擬試卷第4套一、程序填空題(本題共1題,每題1.0分,共1分。)1、下列給定程序中,函數(shù)fun的功能是:在帶頭結(jié)點(diǎn)的單向鏈表中,查找數(shù)據(jù)域中值為ch的結(jié)點(diǎn)。找到后通過函數(shù)值返回該結(jié)點(diǎn)住鏈表中所處的順序號(hào);若不存在值為ch的結(jié)點(diǎn),函數(shù)返同0值。請(qǐng)?jiān)诔绦虻南庐嬀€處填人正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<Stdio.h>#include<Stdlib.h>#defineN8typedefstructlist{intdata;structlist*next;}SLIST;SLIST*creatlist(char*);voidoutlist(SLIST*),intfun(SLIST*h,charch){SLIST*P,intn=0;P=h一>next:/**********found***********/while(p!=【1】){n++,/**********found***********/if(p一>data==ch)return【2】;elseP=p一>next,}return0;}main(){SLIST*head;intk;charch;chara[N]={‘in’,‘P‘,‘g’,‘a(chǎn)’,‘w’,‘x’,‘r’,‘d’};head=creatlist(a);outlist(head);printf(“Enteraletter:”),scanf(“%C”,&ch);/**********found***********/k=fun(【3】);if(k==0)printf(“\nNotfound!\n”);elseprintf(“Thesequencenumberis:%d\n”,k);}SLIST*creatlist(char*a){SLIST*h,*P,*q;inti,h=P=(SLIST*)malloc(sizeof(SLIST));for(i=0;i<N,i++){q=(SLIST*)malloc(sizeof(SLIST));q一>data=a[i],P一>next=q;P=q;}P一>next=0:returnh;}voidoutlist(SLIST*h){SLIST*P;P=h一>next:if(P==NULL)printf(“\nThelistisNULL!\n”);else{printf(“\nHead”),do{printf(“一>%C”,P一>data);P=P一>next,}while(P!=NULL);printf(“一>End\n”);}}標(biāo)準(zhǔn)答案:(1)NULL(2)n(3)head,ch知識(shí)點(diǎn)解析:填空1:while循環(huán)語句用來判斷是否到達(dá)鏈表結(jié)尾,鏈表結(jié)尾結(jié)點(diǎn)指針域是NULL.填空2:若找到指定字符,則通過return語句將該結(jié)點(diǎn)在鏈表的順序號(hào)返回給main函數(shù)。填空3:函數(shù)調(diào)用語句,其形式是:函數(shù)名(實(shí)際參數(shù)表),因此根據(jù)函數(shù)定義語句,填入head,ch。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun和funx的功能是:用二分法求方程2x<sup>3一4x<sup>2+3x一6=0的一個(gè)根,并要求絕對(duì)誤差不超過0.001。例如,若給m輸入一100,給n輸入90,則函數(shù)求得的一個(gè)根為2.000。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<math.h>doublefunx(doublex){return(2*x*x*x一4*x*x+3*x一6);}cloublefun(doublem,doublen){/**********found***********/intr;r=(m+n)/2;/**********found***********/while(fabs(n—m)<0.001){if(funx(r)*funx(n)<0)m=r;elsen=r:r=(m+n)/2;}returnr;}main(){doublem,n,root;printf(“Entermn:\n”);scanf(“%lf%lf”,&m,&n);root=fun(m,n);printf(“root=%6.3f\n”,root);}標(biāo)準(zhǔn)答案:(1)doubler;(2)while(fabs(n—m)>0.001)知識(shí)點(diǎn)解析:(1)程序中會(huì)發(fā)現(xiàn)r=(m+n)/2,而m和n都是double型的,并且根據(jù)題意可知,變量r需要定義為double型。(2)絕對(duì)誤差不超過0.001,所以循環(huán)條件應(yīng)為fabs(n—m)>0.001。三、程序設(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。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){}main(){inta,b;longc;printf(“Input:a,b:”),scanf(“%d%d”,&a,&b);fun(a,b,&c);printf(“Theresultis:%ld\n”,c);}標(biāo)準(zhǔn)答案:Voidfun(inta,intb,long*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/1.0)*1000;}知識(shí)點(diǎ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語言機(jī)試(操作題)模擬試卷第5套一、程序填空題(本題共1題,每題1.0分,共1分。)1、下列給定程序中,函數(shù)fun的功能是:把形參a所指數(shù)組中的偶數(shù)按原順序依次存放到a[0]、a[1]、a[2]…中,把奇數(shù)從數(shù)組中刪除,偶數(shù)的個(gè)數(shù)通過函數(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)诔绦虻南庐嬀€處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#defineN9intfun(inta[],intn){inti,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("\nThenumberofeverl:%d\n",n);printf("\nTheeven:\n");for(i=0;i<n;i++)printi("%4d",b[i]);printf("\n");}標(biāo)準(zhǔn)答案:(1)a[i]%2(2)a[j](3)j知識(shí)點(diǎn)解析:本題考查:if語句條件表達(dá)式;數(shù)組變量賦值;函數(shù)返回值。填空1:if語句條件表達(dá)式,判斷數(shù)組元素是否為偶數(shù),對(duì)2求余,結(jié)果為0,則為偶數(shù);結(jié)果為1則為奇數(shù)。填空2:如果該數(shù)組元素是偶數(shù),則將其值保存。填空3:最后按要求將偶數(shù)個(gè)數(shù)通過return語句返回給main函數(shù)。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:按以下遞歸公式求函數(shù)的值。例如,當(dāng)給n輸入5時(shí),函數(shù)值為18;當(dāng)給n輸入3時(shí),函數(shù)值為14。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>/*********found*********/fun(n){intc;/*********found*********/if(n=1)c=10;elsec=fun(n—1)+2;return(c);}main(){intn;printf("Entern:");scanf("%d",&n);printf("Theresult:%d\n\n",fun(n));}標(biāo)準(zhǔn)答案:(1)intfun(intn)(2)if(n==1)知識(shí)點(diǎn)解析:本題考查:有參函數(shù)定義;if語句條件表達(dá)式中==與=的區(qū)別。(1)定義有參函數(shù)時(shí),形參變量要分別定義其類型,根據(jù)主函數(shù)中的調(diào)用函數(shù)可知,此處形參變量應(yīng)定義為int型。(2)if條件判斷表達(dá)式中,n=1是賦值表達(dá)式,表達(dá)式的值永遠(yuǎn)為真,不能形成判斷條件,應(yīng)將n=l改為n==1。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、規(guī)定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫函數(shù)fun,其功能是:使字符串中尾部的*號(hào)不多于n個(gè),若多于n個(gè),則刪除多余的*號(hào);若少于或等于n個(gè),則不做任何操作,字符串中間和前面的*號(hào)不刪除。例如,字符串中的內(nèi)容為“****A*BC*DEF*G*******”,若n的值為4,刪除后,字符串中的內(nèi)容應(yīng)為“****A*BC*DEF*G****”;若n的值為7,則字符串中的內(nèi)容仍為“****A*BC*DEF*G*******”。n的值在主函數(shù)中輸入。編寫函數(shù)時(shí),不得使用C語言提供的字符串函數(shù)。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。試題程序:#include<stdio.h>voidfun(char*a,intn){}main(){chars[81];intn;printf("Enterastring:\n");gets(s);printf("Entern:");scanf("%d",&n);fun(s,n);printf("Thestringafterdeleted:\n");puts(s);}標(biāo)準(zhǔn)答案:voidfun(char,*a,intn){inti=0,k=0;char*p,*t;p=t=a;/*將指針移動(dòng)到字符串末尾*/while(*t)t++;t一一;/*從后往前如果是‘*’則使k++,找到最后一個(gè)術(shù)所在的位置,并記錄‘*’的個(gè)數(shù)*/while(*t==’*’)/*指針t指向前一個(gè),同時(shí)標(biāo)量k增加—*/{k++;t一一;)/*如果最后*的個(gè)數(shù)大于允許的個(gè)數(shù)*/if(k>n)/*循環(huán)次數(shù)不大于前面的字符與最大允許*的個(gè)數(shù)之和*/{while(*p&&p<t+n+1)/*把字符保存到數(shù)組a中*/{a[i]=*p;i++;p++;}a[i]=’\0’;}}知識(shí)點(diǎn)解析:本題考查:循環(huán)判斷語句;字符串的操作。字符串中尾部*號(hào)不能多于n個(gè),多余的要?jiǎng)h除。首先需要通過while循環(huán)統(tǒng)計(jì)字符串尾部*號(hào),然后通過if條件語句完成尾部*號(hào)數(shù)和n的比較,若尾部*號(hào)數(shù)多于n個(gè),則需要把n個(gè)*號(hào)和其余字符重新保留。國(guó)家二級(jí)C語言機(jī)試(操作題)模擬試卷第6套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:判斷形參S所指字符串是否是“回文”(Palindrome),若是,函數(shù)返回值為1;不是,函數(shù)返回值為0。“回文”是正讀和反讀都一樣的字符串(不區(qū)分大小寫字母)。例如,LEVEL和Level是“回文”,而LEVLEV不是。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!1#include<stdio.h>2#include<string.h>3#include<ctype.h>4intfun(char*s)5{char*ip,*rp;6/**********found**********/7ip___1___;8rp=s+strlen(s)-1;9while((toupper(*1p)==toupper(*rp))&&(ip<rp)){10/**********found**********/111p++;rp____2___;}12/**********found**********/13if(ip<rp)___3___;14elsereturn1;15}16main()17{chars[81];18printf(’’Enterastring:’’);scanf(’’%s’’,s);19if(fun(s))printf(’’in\’’%s\’’isapalindrome.\n\n’’,s);20elseprintf(’’in\’’%s\’’ist’taPalindrome.\n\n’’,s);21}標(biāo)準(zhǔn)答案:(1)s(2)--(3)return0知識(shí)點(diǎn)解析:函數(shù)fun的功能是:判斷形參s所指字符串是否是“回文”,即比較第一個(gè)字符和最后一個(gè)字符是否相同,第二個(gè)字符和倒數(shù)第二個(gè)字符是否相同,依此類推,可以用循環(huán)來實(shí)現(xiàn)。第一空:“rp=s+strlen(s)-1;”可知rp指向最后一個(gè)元素,因此,lp是指向第一個(gè)元素,故第一空應(yīng)為“s”。第二空:“l(fā)p++;rp__2___;”lp往后移動(dòng),rp應(yīng)該往前移動(dòng),故第二空處應(yīng)為“--”。第三空:“if(lp<rp)”成立說明lp和rp比較沒有比較到字符串的最中間的字符,也就是說s字符串不是回文,因此,第三空處的應(yīng)為“return0”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中fun函數(shù)的功能是:求出以下分?jǐn)?shù)序列的前n項(xiàng)之和。和值通過函數(shù)值返回main函數(shù)。例如,若n=5,則應(yīng)輸出:8.391667。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!1#include<stdio.h>2/**********found**********/3fun(intn)4{inta=2,b=1,c,k;5doubles=0.0;6for(k=1;k<=n;k++)7{s=s+1.0*a/b;8/***********found***********/9c=a;a+=b;b+=c;10}11return(s);}12main()13{intn=5;14printf("\nThevalueoffunctionis:%1f\n’’,fun(n));15}標(biāo)準(zhǔn)答案:(1)doublefun(intn)(2)c=a;a+=b;b=c;知識(shí)點(diǎn)解析:本題中函數(shù)的功能是求出分?jǐn)?shù)序列的前n項(xiàng)之和。首先根據(jù)題干中給出的公式推出每一項(xiàng)之間的關(guān)系,求出每一項(xiàng)的表達(dá)式,然后求得數(shù)列的和。每一項(xiàng)的分母是前一項(xiàng)的分子,分子是前一項(xiàng)分子和分母的和。(1)fun函數(shù)中的語句“doubles=0.0;”以及“return(s);”說明fun函數(shù)具有double返回值,所以應(yīng)將“fun(intn)”改為“doublefun(intn)”。(2)根據(jù)題干中給出的公式可以推出每一項(xiàng)的特點(diǎn),知道每一項(xiàng)的b值是前一項(xiàng)的c值,所以第二個(gè)標(biāo)識(shí)下“b+=c;”改為“b=c;”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫函數(shù)fun,函數(shù)的功能是:將大于形參m且緊靠m的k個(gè)素?cái)?shù)存入XX所指的數(shù)組中。例如,若輸入17,5,則應(yīng)輸出:19,23,29,31,37。注意:部分源程序在文件PROG1.C文件中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。1#include<stdio.h>2voidfun(intm,intk,intxx[])3{4}5main()6{7intm,n,zz[1000];voidNONO();8printf(’’\nPleaseentertwointegers:’’);9scanf(’’%d%d’’,&m,&n);10fun(m,n,zz);11for(m=0;m<n,m++)12printf(’’%d’’,zz[m]);13printf("\n’’);14NONO();15}16voidNONO()17{/*本函數(shù)用于打開文件,輸入測(cè)試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/18intm,n,zz[1000],i;19FILE*rf,*wf;20rf=fopen(’’in.dat’’,’’r"),21wf=fopen(’’out.dat’’,’’w’’);22for(i=0,i<10;i++){23fscanf(rf,’’%d%d’’,&m,&n);24fun(m,n,zz);25for(m=0;m<n;m++)fprintf(wf,’’%d’’,zz[m];26fprintf(wf,”\n”);27}28fclose(rf);29fclose(wf),}標(biāo)準(zhǔn)答案:1intr=0,temp,p,sign=1;2for(temp=m+1;temp<m*m;temp++)3//從temp開始循環(huán),判斷緊靠temp的整數(shù)4{for(p=2;p<temp;p++)5{if(temp%p!=0)//判斷temp是否為素?cái)?shù)6sign=1;//若是素?cái)?shù),標(biāo)志設(shè)為l7else8{sign=0;//若不是素?cái)?shù),標(biāo)志設(shè)為09break;}10}11if(sign==1&&p>=temp)12{if(k>=0)//判斷已有的素?cái)?shù)個(gè)數(shù)是否已經(jīng)滿足sum個(gè)13{xx[r++]=temp;//將素?cái)?shù)temp存入數(shù)組select14k--;//將題目中要求的素?cái)?shù)個(gè)數(shù)減115}16else17break;18}}知識(shí)點(diǎn)解析:(1)該程序功能是取大于整數(shù)m且緊靠m的k個(gè)素?cái)?shù)。其中,素?cái)?shù)是指只能被1和自身除盡的正整數(shù)(>1),所以判別n是否為素?cái)?shù),只要用2~n-1這些數(shù)逐個(gè)去除n,判斷余數(shù)是否為0即可。只要有一次余數(shù)為0,n就不是素?cái)?shù),否則n為素?cái)?shù)。(2)從已給部分源程序的main主函數(shù)開始入手,核心函數(shù)“fun(m,n,zz);”中的參數(shù)由題目可知,zz存放素?cái)?shù),n為要求的素?cái)?shù)個(gè)數(shù)。進(jìn)入fun函數(shù),根據(jù)前面的分析:首先,定義、初始化變量sign,作為素?cái)?shù)的標(biāo)志;定義r,初始化為存儲(chǔ)素?cái)?shù)數(shù)組的起始位。然后,每判斷一次temp中的值是否為素?cái)?shù)后,使temp的值增1,再次對(duì)temp中新的值進(jìn)行判斷其是否為素?cái)?shù),不斷循環(huán)此過程,直到m的值等于指定的個(gè)數(shù),即函數(shù)中的k個(gè)數(shù)。國(guó)家二級(jí)C語言機(jī)試(操作題)模擬試卷第7套一、程序填空題(本題共1題,每題1.0分,共1分。)1、函數(shù)fun的功能是:把形參a所指數(shù)組中的偶數(shù)按原順序依次存放到a[0],a[1]、a[2]、……中,把奇數(shù)從數(shù)組中刪除,偶數(shù)個(gè)數(shù)通過函數(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)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#defineN9intfun(inta[],intn){inti,j;j=0;for(i=0;i標(biāo)準(zhǔn)答案:(1)a[i]%2(2)a[j](3)j知識(shí)點(diǎn)解析:奇數(shù)和偶數(shù)的判斷可用取余的方法來實(shí)現(xiàn),a[i]%2等于0,那么a[i]是偶數(shù),否則是奇數(shù)。函數(shù)fun的功能是把形參a所指數(shù)組中的偶數(shù)按原順序依次存放到a,把奇數(shù)從數(shù)組中刪除。第一空:由“____2____=a[i];j++;”是將偶數(shù)元素保存起來并且計(jì)數(shù)變量加1,可知j記錄了偶數(shù)元素的個(gè)數(shù),第一空處是判斷a[i]是否是偶數(shù),因此第一空處應(yīng)為“a[i]%2”。第二空:a所指數(shù)組中的偶數(shù)按原順序依次存放到a[0]、a[1]、a[2]…,j初始化為0,a[j]就可以將偶數(shù)元素存放在a中,故第二空處應(yīng)為“a[j]”。第三空:fun函數(shù)的返回值是偶數(shù)個(gè)數(shù),故第三空處應(yīng)為“j”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:按以下遞歸公式求函數(shù)值。例如,當(dāng)給n輸入5時(shí),函數(shù)值為18;當(dāng)給n輸入3時(shí),函數(shù)值為14。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。注意:不要改動(dòng)maln函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。#include/*********found**********/intfun(n){intc;/*********found**********/if(n=1)c=10;elsec=fun(n—1)+2;return(c);}main(){intn;printf("Entern:");scanf("%d",&n)fprintf("Theresult:%d\n\n"rfun(n));}標(biāo)準(zhǔn)答案:(1)intfun(intn)(2)if(n==1)知識(shí)點(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、假定輸入的字符串中只包含字母和“*”號(hào)。請(qǐng)編寫函數(shù)fun,它的功能是:使字符串中尾部的“*”號(hào)不得多于n個(gè);若多于n個(gè),則刪除多余的“*’號(hào);若少于或等于n個(gè),則什么也不做,字符串中間和前面的“*’號(hào)不刪除。例如,字符串中的內(nèi)容為:****A*BC*DEF*G******,若n的值為4,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:****A*BC*DEF*G****;若n的值為7,則字符串中的內(nèi)容仍為:****A*BC*DEF*G******。n的值在主函數(shù)中輸入。在編寫函數(shù)時(shí),不得使用C語言提供的字符串函數(shù)。注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。#includevoicifun(char*a,intn){}main(){chars[81];intn;voidNONO();printf("Enterastring:\n");gets(s);printf("Entern:");scanf("%d",&n);fun(s,n);printf("Thestringafterdeleted:\n");puts(s);NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*in,*out;inti,n;charsl81];in=fopen("in.dat","r");out=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(in,"%s",s);fscanf(in,"%d",&n);fun(s,n);fprintf(out,"%s\n",s);}fclose(in);fclose(out);}標(biāo)準(zhǔn)答案:1iinti=0,j=0;2lchar*p,*t;3p=t=a;4{while(*t)//讓指針t指向串尾5t++;6t——;//t指向串中的最后一個(gè)字符7while(*t==’*’)8//當(dāng)t指針當(dāng)前指向的字符是“*,’號(hào)時(shí)9{j++;//對(duì)“*”號(hào)計(jì)數(shù)的累加器加110t——;)//指向前一個(gè)字符11t++;//跳出“*”號(hào)統(tǒng)計(jì)后,指針t繼續(xù)指向字符串的下一個(gè)字符12if(j>n)//對(duì)統(tǒng)計(jì)的“*”號(hào)數(shù)目大予給定的“*”號(hào)總數(shù)n13{while(*p&&p知識(shí)點(diǎn)解析:解題過程首先確定字符串尾,然后由串尾開始對(duì)字符進(jìn)行判斷,同時(shí)對(duì)“*”字符進(jìn)行統(tǒng)計(jì),如果大于n,就進(jìn)行截取。(1)首先確定字符串的尾,然后判斷“*”號(hào)字符,并對(duì)字符串中的字符進(jìn)行判斷,如果字符是符號(hào)“*”則對(duì)“*”號(hào)進(jìn)行統(tǒng)計(jì)。(2)根據(jù)統(tǒng)計(jì)的“*”號(hào)數(shù)目結(jié)合題目中對(duì)“*”號(hào)個(gè)數(shù)的要求,判斷是執(zhí)行對(duì)“*”號(hào)的截取操作,還是什么都不用做。(3)所有字符處理完后,記得在新串s的末尾加上結(jié)束符“’\0’”。國(guó)家二級(jí)C語言機(jī)試(操作題)模擬試卷第8套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:計(jì)算X所指數(shù)組中N個(gè)數(shù)的平均值(規(guī)定所有數(shù)均為正數(shù)),平均值通過形參返回給主函數(shù),將小于平均值且最接近平均值的數(shù)作為函數(shù)值返回,并在主函數(shù)中輸出。例如,有10個(gè)正數(shù):46、30、32、40、6、17、45、15、48、26,平均值為30.500000。主函數(shù)中輸出m=30。請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<Stdlib.h>2#include<Stdio.h>3#defineN104doublefun(doubleX[],double*av)5{inti,j;doubled,S;6s=0;7for(i=0,i<N,i++)s=s+x[i];8/*********found*********/9【1】=S/N;10d=32767;11for(i=0;i<N;i++)12if(x[i]<*av&&*av-x[i]<=d){13/*********found*********/14d=*av-x[i];15j=【2】;16}17/*********found*********/18return【3】;19}20main()21{inti;doublex[N],av,m;22for(i=0;i<N;i++)23{x[i]=rand()%50;24printf("%4.0f",x[i]);}25printf("\n");26m=fun(x,&av);27printf("\nTheaverageis:%f\n”,av);28printf("m=%5.1f",m);29printf("\n");30}標(biāo)準(zhǔn)答案:(1)*av(2)i(3)x[j]知識(shí)點(diǎn)解析:填空1:從原程序中可以看出*av代表的是平均值,而s/N表示的就是平均值,因此本空應(yīng)該填*aV。填空2:if語句來判斷找最接近平均值的數(shù),因而此空應(yīng)該填i。填空3:題目要求將小于平均值且最接近平均值的數(shù)作為函數(shù)返回,而j表達(dá)的是最接近平均值的數(shù)在數(shù)組中的下標(biāo),因而本空應(yīng)該填寫x[j]。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中函數(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)!試題程序:#include<stctio.h>longfun(intg){/*********found*********/switch(g);{case0:return0;/*********found*********/case1;case2:return1;}return(fun(g-1)+fun(g-2));}voidmain(){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)答案:(1)去掉分號(hào)(2)case1:case2:retum1;知識(shí)點(diǎn)解析:本題考查:switch語句。其一般形式如下:switch(表達(dá)式){case常量表達(dá)式1:語句l;case常量表達(dá)式2:語句2;case常量表達(dá)式n:語句n;default:語句n+1;}其中switch(表達(dá)式)后不應(yīng)該帶有“;”,同時(shí)case語句常量后應(yīng)該是“:”。C語言中,switch語句之后不能有分號(hào),并且case語句常量后應(yīng)用的是冒號(hào)。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫函數(shù)fun,該函數(shù)的功能是:統(tǒng)計(jì)各年齡段的人數(shù)。N個(gè)年齡通過調(diào)用隨機(jī)函數(shù)獲得,并放入主函數(shù)的age數(shù)組中。要求函數(shù)把0~9歲年齡段的人數(shù)放在d[0]中,把10~19歲年齡段的人數(shù)放在d[1]中,把20~29歲年齡段的人數(shù)放在d[2]中,依此類推,把100歲(含100歲)以上年齡的人數(shù)都放在d[10]中。結(jié)果在主函數(shù)中輸出。注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)mmn函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。試題程序:#include<stdio.h>#defineN50#defineM11voidfun(int*a,int;*b){}doublernd(){statict=29,c=217,m=1024,r=0;r=(r*t+c)%m;return((doubZe)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};for(i=0;i<N;i++)age[i]=(int)(115*rnd());/*產(chǎn)生一個(gè)隨機(jī)的年齡數(shù)組*/printf("Theoriginaldata:\n");for(i=0;i<N;i++)printf((i+1)%10==0?"%4d\n":"%4d",age[i]);/*每行輸出10個(gè)數(shù)*/printf("\n\n");fun(age,d);for(i=0;i<10;i++)printf("%4d---%4d:%4d\n",i*10,i*10+9,d[i]);printf("Over100:%4d\n",d[10]);/******************/wf=fopen("out.dat","w");fun(b,d);for(i=0;i<10;i++)fprintf(wf,"%4d--%4d:%4d\n",i*10,i*10+9,d[i]);fprintf(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]中*/}知識(shí)點(diǎn)解析:本題是一個(gè)分段函數(shù)的問題,用兩個(gè)循環(huán)來完成。第1個(gè)循環(huán)的作用是使b中的所有元素值都為0。這個(gè)循環(huán)不能省略,因?yàn)槿粑磳?duì)b中的元素賦初值,則它們的值是不可預(yù)測(cè)的。第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í)可知先進(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]中,依此類推。國(guó)家二級(jí)C語言機(jī)試(操作題)模擬試

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論