版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
國家二級(jí)C語言機(jī)試(操作題)模擬試卷25(共9套)(共27題)國家二級(jí)C語言機(jī)試(操作題)模擬試卷第1套一、程序填空題(本題共1題,每題1.0分,共1分。)1、函數(shù)fun的功能是:從三個(gè)形參a,b,c中找出中間的那個(gè)數(shù),作為函數(shù)值返回。例如,當(dāng)a=3,b=5,c=4時(shí),中數(shù)為4。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includeintfun(inta,intb,intc).{intt;/*********found**********/t=(a>b)?(b>c?b:(a>c?c:____1____)):((a>c)?____2____:((b>c)?c:____3____));returnt;}main(){inta1=3,a2=5,a3=4,r;r=fun(a1,a2,a3);printf("\nThemiddlenumberis:%d\n",r);}標(biāo)準(zhǔn)答案:(1)a(2)a(3)b知識(shí)點(diǎn)解析:fun函數(shù)的功能是求得三個(gè)數(shù)中間的數(shù)。第一空:語句“(a>b)?(b>c?”表示a>b>c,根據(jù)題目要求,則中間值為b,若只是滿足第一個(gè)“?”前面的條件,而c>b,則選擇執(zhí)行“(a>c?c:____1____j”,當(dāng)a>c時(shí)取值c,所以ac)?”是對(duì)a、c的比較選擇,第三空處的“(b>c)?c”根據(jù)b、c的判斷,題目已經(jīng)給出了c,所以這里應(yīng)該是a。第三空:第三空中對(duì)于b、c的判斷選擇缺少b,所以這里填“b”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:首先將大寫字母轉(zhuǎn)換為對(duì)應(yīng)小寫字母;若小寫字母為a’—u,則將其轉(zhuǎn)換為其后的第5個(gè)字母;若小寫字母為v~z,使其值減21。轉(zhuǎn)換后的小寫字母作為函數(shù)值返回。例如,若形參是字母A,則轉(zhuǎn)換為小寫字母f.若形參是字母W,則轉(zhuǎn)換為小寫字母b。請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)mam函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#includecharfun(charc)/*************found*************/C=C+32;if(C>=’a’&&C<=’u’)/*************found*************/c=c—5;c=c—21;returnc;}main(){charcl,c2;printf("\nEnteraletter(A—Z):");cl=getchar();if(isupper(cl)){c2=fun(cl);printf("\n\nTheletter\’%c\’changeto\’%c\’\n",cl,c2);}elseprintf("\nEnter(A—Z)!\n");}標(biāo)準(zhǔn)答案:(1)c=c+32;(2)c=c+5;知識(shí)點(diǎn)解析:函數(shù)的功能是將某些大寫字母轉(zhuǎn)換為對(duì)應(yīng)小寫字母之后的第五個(gè)字母。(1)第一個(gè)標(biāo)識(shí)下“C=C+32:”中變量C沒有定義,編譯時(shí)會(huì)提示出錯(cuò)。根據(jù)題意,這行語句的作用是將大寫字母轉(zhuǎn)換為小寫字母,C語句中大寫字母轉(zhuǎn)換為對(duì)應(yīng)的小寫字母是對(duì)原有ASCII碼加32,小寫轉(zhuǎn)換為大寫是減32,所以應(yīng)將“C=C+32;”改為“c=c+32;”。(2)第二個(gè)標(biāo)識(shí)下是將小寫字母轉(zhuǎn)換為其后的第五個(gè)字母,字母在a~u之間只加上5就可以了,原題中減5則是將字母轉(zhuǎn)換到該字母之前的第五個(gè)字母,所以第二個(gè)標(biāo)識(shí)下“c=c—5;”改為“c=c+5:”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫函數(shù)fun,其功能是:計(jì)算并輸出例如,在主函數(shù)中從鍵盤給n輸入20后,輸出為:s=534.188884。注意:要求n的值大于1但不大于100。部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)mam和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。#include#includedoublefun(intn){}main(){intn;doubles;printf("\n\nlnputn:");scanfs=fun(n);printf("\n\ns=%f\n\n",s);NONO();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,"%di",&n);s=fun(n);fprintf(wf,"%1f\n",s);}標(biāo)準(zhǔn)答案:1inti;2doublefac=1.0;3doublesum=1.0;4for(i=2;i<=n;i++){5fac+=sqrt(i);6sum+=fac;}7returnsum;知識(shí)點(diǎn)解析:該程序功能是對(duì)題干中給出的多項(xiàng)式的求解。根據(jù)題干中給出的數(shù)列,首先推出每一項(xiàng)的表達(dá)式,然后再對(duì)多項(xiàng)式進(jìn)行累加求和。國家二級(jí)C語言機(jī)試(操作題)模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:計(jì)算形參x所指數(shù)組中N個(gè)數(shù)的平均值(規(guī)定所有數(shù)均為正數(shù)),將所指數(shù)組中小于平均值的數(shù)據(jù)移至數(shù)組的前部,大于等于平均值的數(shù)據(jù)移至x所指數(shù)組的后部,平均值作為函數(shù)值返回,在主函數(shù)中輸出平均值和移動(dòng)后的數(shù)據(jù)。例如,有10個(gè)正數(shù):4630324061745154826,平均值為:30.500000移動(dòng)后的輸出為:3061715264632404548請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#defineN10doublefun(double*x){inti,j;doubleav,y[N];av=0;/**********found**********/for(i=0;i標(biāo)準(zhǔn)答案:(1)x[i]/N(2)j++或j=j+1(3)i++或i=i+1知識(shí)點(diǎn)解析:第一空:“for(i=0;i二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:統(tǒng)計(jì)字符串中各元音字母(即:A、E、I、O、U)的個(gè)數(shù)。注意:字母不分大、小寫。例如:若輸入:THIsisaboot,則輸出應(yīng)該是:1、0、2、2、0。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includevoidfun(char*s,intnum[5]){intk,i=5;for(k=0;k=0)num[i]++;}}main(){chars1[81];intnum1[5],i;printf("\nPleaseenterastring:");gets(s1);fun(s1,nums);for(i=0;i<5;i++)printf("%d",num1[i]);printf("\n");}標(biāo)準(zhǔn)答案:(1)num[k]=0;(2)switch(*s)知識(shí)點(diǎn)解析:(1)第一個(gè)標(biāo)識(shí)下的for循環(huán)過程是將num數(shù)組中的變量初始值設(shè)置為0,用來統(tǒng)計(jì)每一個(gè)元音字母出現(xiàn)的個(gè)數(shù),for循環(huán)中的循環(huán)條件表達(dá)式中的變量是k,所以第二個(gè)標(biāo)識(shí)下“hum[i]=0;”改為“num[k]=0;”。(2)第二個(gè)標(biāo)識(shí)下的switch-case條件選擇的功能應(yīng)該是對(duì)s指針指向的字符串中的每一個(gè)字符進(jìn)行判斷,不應(yīng)該是s的數(shù)組名,所以第三個(gè)標(biāo)識(shí)下“switch(s)”改為“switch(幸s)”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫函數(shù)fun,函數(shù)的功能是求出二維數(shù)組周邊元素之和,作為函數(shù)值返回。二維數(shù)組中的值在主函數(shù)中賦予。例如:二維數(shù)組中的值為:13579299946999813570則函數(shù)值為61。注意:部分源程序存在文件PROG1.C文件中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。#include#defineM4#defineN5intfun(inta[M][N]){}main(){Intaa[M][N]={{1,3,5,7,9},{2,9,9,9,4),{6,9,9,9,8},{1,3,5,7,0}};inti,j,y;voidNONO();printf("Theoriginaldatais:\n");for(i=0;i標(biāo)準(zhǔn)答案:inttot=0,i,j;for(i=0;i知識(shí)點(diǎn)解析:進(jìn)入fun函數(shù),根據(jù)前面的分析:求周邊元素的和,可以采用兩個(gè)循環(huán)分別把行元素和列元素相加。但要避免把周邊元素重復(fù)相加。國家二級(jí)C語言機(jī)試(操作題)模擬試卷第3套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:將參數(shù)給定的字符串、整數(shù)、浮點(diǎn)數(shù)寫到文本文件中,再用字符串方式從此文本文件中逐個(gè)讀入,并調(diào)用庫函數(shù)atoi和atof將字符串轉(zhuǎn)換成相應(yīng)的整數(shù)、浮點(diǎn)數(shù),然后將其顯示在屏幕上。請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<stdlib.h>voidfun(char*s,inta,doublef){/*********found*********/【1】fp;charstr[100],str1[100],str2[100];inta1;doublef1;fp=fopen("file1.txt","w");fprintf(fp,"%s%d%f\n",s,a,f);/*********found*********/【2】;fp=fopen("file1.txt","r");/*********found*********/fscanf(【3】,"%s%s%s",str,str1,str2);fclose(fp);a1=atoi(Strl);f1=atof(str2);printf("\nTheresult:\n\n%s%d%f\n",str,a1,f1);}main(){chara[10]="Hello!";intb=12345;doublec=98.76;fun(a,b,c);}標(biāo)準(zhǔn)答案:(1)FILE*(2)fclose(fp)(3)fp知識(shí)點(diǎn)解析:填空1:從使用fp=fopen("filel.txt","w")可知fp應(yīng)該是文件類型指針,因此本空應(yīng)該填寫FILE*。填空2:當(dāng)對(duì)fp作打開操作的時(shí)候,并進(jìn)行不同的操作前,應(yīng)該對(duì)其關(guān)閉,因?yàn)樵诘谝淮未蜷_時(shí)是對(duì)fp進(jìn)行寫操作,而在第二次打開后進(jìn)行的是讀操作,因此應(yīng)該先對(duì)fp進(jìn)行關(guān)閉,本空填.fclose(fp)。填空3:fscanf()是把文本文件輸出,因此本空只能填寫fp。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件mMi1.c。在此程序中,函數(shù)fun的功能是:從P所指字符串中找出ASCII碼值最大的字符,將其放在第一個(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)!試題程序:#include<stdio.h>voidfun(char*p){charmax,*q;inti=0;max=p[i];while(p[i]!=0){if(max<p[i]){max=p[i];/*********found*********/q=p+i}i++;}/*********found*********/while(q<p){*q=*(q-1);q--;}p[0]:max;}voidmain(){charstr[80];printf("Enterastring:");gets(str);printf("\nTheoriginalstring:");puts(str);fun(str);printf("\nThestringaftermoving:");puts(str);printf("\n\n");}標(biāo)準(zhǔn)答案:(1)q=p+i;(2)while(q>p)知識(shí)點(diǎn)解析:解答本題需要三個(gè)步驟,首先找到字符串中ASCII碼值最大的字符并保存;然后將該字符復(fù)制,并將該字符前面的字符串順次后移;最后將ASCII碼值最大的字符賦給字符串的第一個(gè)字符。要找到ASCII碼值最大的字符可以通過定義一個(gè)字符變量一,該字符變量初始時(shí)等于字符串的第一個(gè)字符,若字符串的下一個(gè)字符大于max,則將下一個(gè)字符賦給max,如此循環(huán)到字符尾,即可得到ASCII碼值最大的字符,同時(shí)令指針q指向最大字符。此后對(duì)最大字符前面的子串順次后移,可采用while語句實(shí)現(xiàn)。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,規(guī)定輸入的字符串中只包含字母和,一c號(hào)。編寫函數(shù)fun,其功能是:除了字符串前導(dǎo)和尾部的*號(hào)外,將串中其他的木號(hào)全部刪除。形參h已指向字符串中第一個(gè)字母,形參p指向字符串中最后一個(gè)字母。在編寫函數(shù)時(shí),不得使用c語言提供的字符串函數(shù)。例如,若字符串中的內(nèi)容為“****A*BC*DEF*G********”,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是“****ABCDEFG********”。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。試題程序:#include<stdio.h>#include<conio.h>#include<string.h>voidfun(char*a,char*h,char*p){}main(){chars[81],*t,*f;printf("Enterastring:\n");gets(s);t=f=s;while(*t)t++;t--;while(*t==’*’)t--;while(*f==’*’)f++;fun(s,f,t);printf("Thestringafterdeleted:\n");puts(s);}標(biāo)準(zhǔn)答案:voidfun(char*a,char*h,char*p){inti=0;char*q=a;/*將前導(dǎo)*號(hào)保存到a中*/while(q<h){a[i]=*q;q++;i++;}/*繼續(xù)遍歷數(shù)組*/while(q<p){if(*q!=’*’){/*如果不是*保存到a中*/a[i]=*q;i++;}q++;}/*將末尾*號(hào)保存到a中*/while(*q){a[i]=*q;i++;q++;}a[i]=’\0’;}知識(shí)點(diǎn)解析:本題的重點(diǎn)是要選擇好判斷條件,首先是需要判斷前導(dǎo)*號(hào)的結(jié)束,然后判斷是否指向最后一個(gè)字母,最后補(bǔ)充尾部*號(hào),只要思路對(duì)了即可正確解答。國家二級(jí)C語言機(jī)試(操作題)模擬試卷第4套一、程序填空題(本題共1題,每題1.0分,共1分。)1、程序通過定義學(xué)生結(jié)構(gòu)體變量,存儲(chǔ)學(xué)生的學(xué)號(hào)、姓名和三門課的成績。函數(shù)fun的功能是:將形參a中的數(shù)據(jù)進(jìn)行修改,把修改后的數(shù)據(jù)作為函數(shù)值返回主函數(shù)進(jìn)行輸出。例如,若傳給形參a的數(shù)據(jù)中學(xué)號(hào)、姓名和三門課的成績依次是:10001、“ZhangSan”、95、80、88,修改后的數(shù)據(jù)應(yīng)為:10002、“LiSi”、96、81、89。請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#inclucle<stdio.h>#include<string.h>structstudent{longsrlo;charname[10];floatScoEe[3];};/*********found*********/【1】fun(structstudenta){inti;a.sno=10002;/*********found*********/strcpy(【2】,"Lisi");/*********found*********/for(i=0;i<3;i++)【3】+=1;returna;}main(){structstudentS={1000l,"ZhangSan",95,80,88),t;inti;print[f"\n\nTheoriginaldata:\n");print["\nNo:%ldName:%s\nScores:",s.sno,s.name);for(i=0;i<3;i++)print[("%6.2f",s.score[i]);print[("\n");t=fun(s);print[f"\nThedataaftermodified:\n");print[("\nNo:%ldName:%s\nScoEes:",t.sno,t.name);for(i=0;i<3;i++)print[("%6.2f",t.score[i]);print[("\n");}標(biāo)準(zhǔn)答案:(1)structstudent(2)a.name(3)a.score[i]知識(shí)點(diǎn)解析:填空1:函數(shù)定義時(shí),類型標(biāo)識(shí)符指明了本函數(shù)的類型,函數(shù)的類型實(shí)際上是函數(shù)返回值的類型。本題中,用結(jié)構(gòu)類型定義函數(shù)類型。填空2和填空3:此處考查結(jié)構(gòu)體變量成員的表示方法,a.name和a.score[i]分別表示學(xué)生的姓名和成績。二、程序修改題(本題共1題,每題1.0分,共1分。)2、假定整數(shù)數(shù)列中的數(shù)不重復(fù),并存放在數(shù)組中。下列給定程序中函數(shù)fun的功能是:刪除數(shù)列中值為x的元素,變量n中存放數(shù)列中元素的個(gè)數(shù)。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#defineN20fun(int*a,intn,intx){intp=0,i;a[n]=x;while(x!=a[p])p=p+1;/*********found*********/if(p==n)return一1;else{for(i=p;i<n一1;i++)/*********found*********/a[i+1]=a[i];returnn一1;}}voidmain(){intw[N]={一3,0,1,5,7,99,10,15,30,90),x,n,i;n=10;print[("Theoriginaldata:\n");for(i=0;i<n;i++)print[("%5d",w[i]);print[("\nInputx(todelete):");scarlf("%d",&x);printf("Delete:%d\n",x);n=fun(w,n,x);if(n==一1)printf("***Nobefound!***\n\n");else{printf("Thedataafterdeleted:\n");for(i=0;i<n;i++)print[("%5d",w[i]);print[("\n\n");}}標(biāo)準(zhǔn)答案:(1)if(p==n)retum—1;(2)a[i]=a[i+1];知識(shí)點(diǎn)解析:(1)需要確定if條件語句的條件表達(dá)式,發(fā)現(xiàn)變量p大寫,C語言中變量是區(qū)別大小寫的。(2)刪除數(shù)列中的元素,刪除后,后面的元素依次前移一個(gè)位置,因此此處應(yīng)為a[i]=a[i+1];。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、編寫函數(shù)fun,其功能是:將兩個(gè)兩位數(shù)的正整數(shù)a、b合并成一個(gè)整數(shù)放在e中。合并的方式是:將a數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的個(gè)位和百位上,b數(shù)的十位和個(gè)位數(shù)依次放在c數(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)算。國家二級(jí)C語言機(jī)試(操作題)模擬試卷第5套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:將形參指針?biāo)附Y(jié)構(gòu)體數(shù)組中的三個(gè)元素按num成員進(jìn)行升序排列。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#inoludetypedefstruct{intnum;charname[10];}PERSON;/**********found**********/voidfun(PERSON____1____){/**********found**********/____2____temp;if(std[0].num>std[1].num)(temp=std[0];std[0]=std[1];std[1]=temp;}if(std[0].num>std[2].num){temp=std[0];std[0]=std[2];std[2]=temp;)if(std[1].num>std[2].num){temp=std[1];std[1]=std[2];std[2]=temp;}}main(){PERSONstd[]={5,"Zhanghu",2,"WangLi",6,"LinMin");inti;/**********found**********/fun(____3____);printf("\nTheresultis:\n");for(i=0;i<3;i++)printf("%d,%s\n",std[i]num,std[i].name);}標(biāo)準(zhǔn)答案:(1)std(2)PERSON(3)std知識(shí)點(diǎn)解析:第一空:fun函數(shù)的功能是將形參指針?biāo)附Y(jié)構(gòu)體數(shù)組中的蘭個(gè)元素進(jìn)行排序,可知fun函數(shù)的參數(shù)足指針,由“if(std[0].num>std[1].num)”可知形參名為std,故第一空處應(yīng)為“voidfun(PERSON*std)”。第二空:temp變量用來進(jìn)行交換時(shí)臨時(shí)保存變量值,由“temp=std[0];”可知temp是PERSON結(jié)構(gòu)體變量,故第二空處的temp結(jié)構(gòu)體定義應(yīng)為“PERSONtemp;”。第三空:這里是調(diào)用fun函數(shù),fun函數(shù)的參數(shù)是結(jié)構(gòu)體變量指針,std是結(jié)構(gòu)體數(shù)組,數(shù)組名相當(dāng)于數(shù)組的首地址,故第三空處應(yīng)為“fun(std);”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:將字符串中的字符按逆序輸出,但不改變字符串中的內(nèi)容。例如,若字符串為abcd,則應(yīng)輸出:dcba。請(qǐng)改正程序中的錯(cuò)誤,使它能計(jì)算出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include/************found************/fun(chara){if(*a){fun(a+1);/************found************/printf("%c"*a);}}main(){chars[10]="abcd";printf("處理前字符串:%s\n處理后字符串=",s);fun(s);printf("\n");}標(biāo)準(zhǔn)答案:(1)voidfun(char*a)(2)printf("%c",*a);知識(shí)點(diǎn)解析:(1)主函數(shù)中“fun(s):”語句中的s是數(shù)組名,所以在fun函數(shù)中參數(shù)的定義應(yīng)該是指針型,“fun(chata)”改為“voidfun(char*a)”。(2)printf函數(shù)的調(diào)用形式是:printfif格式字符串,輸出項(xiàng)表),在格式字符串和輸出項(xiàng)表之間有“,”,因此第二個(gè)標(biāo)識(shí)處應(yīng)該是“printf("%c",*a);”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫函數(shù)fun,它的功能是:除了尾部的*號(hào)之外,將字符串中其他*號(hào)全部刪除。形參p已指向字符串中最后的一個(gè)字母。在編寫函數(shù)時(shí),不得使用C語言提供的字符串函數(shù)。例如,字符串中的內(nèi)容為:****A*BC*DEF*G*******,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是:ABCDEFG*******。注意:部分源程序在文件PROGl.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。#includevoidfun(char*a,char*p){}main(){chars[81],*t;voidNONO();printf("Enterastring:\n");gets(s);t=s;while(*t)t++;t--;while(*t==’*’)t-;fun(s,t);printf("Thestringafterdeleted:\n");puts(s),NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FTLE*in,*out;inti;chars[81],*t;in=fopen("in.dat","r");out=fopen("out.dat","w");for(i=0;i<10;i++){fscarlf(in,"%s",s);t=S;while(*t)t++;t--;while(*t==’*’)t--;fun(s,t);fprintf(ouL,"%s\n",s);}fclose(in);fclose(out);}標(biāo)準(zhǔn)答案:char*q=a;intj=0;while(*q&&q知識(shí)點(diǎn)解析:(1)首先,主函數(shù)中使指針移到字符串的最后一個(gè)字符,對(duì)字符串由串尾開始進(jìn)行操作。(2)然后,指針由尾開始向頭移動(dòng),查找第一個(gè)非“*”號(hào)字符,指針t指向后一個(gè)非“*”,即從最后一個(gè)非“*”,字符開始的字符都不需要?jiǎng)h除,將前面的其他“*”號(hào)全部刪除后,將尾部的“*”字符往前移動(dòng)即可。(3)確定了字符數(shù)組的最后一個(gè)字符非“*”后,調(diào)用fun函數(shù),在fun函數(shù)中,將原串中由起始位置的字符開始到最后一個(gè)非“*”逐個(gè)查詢?cè)撟址鞘恰?”字符,如果是則刪除,并將后面的字符往前移動(dòng);然后將t之后的字符移動(dòng)到前面,最后在字符串的后面添加“’\0’”即可。國家二級(jí)C語言機(jī)試(操作題)模擬試卷第6套一、程序填空題(本題共1題,每題1.0分,共1分。)1、函數(shù)fun的功能是:輸出a所指數(shù)組中的前n個(gè)數(shù)據(jù),要求每行輸出5個(gè)數(shù)。請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdio.h>2#include<stdlib.h>3voidfun(int*a,intn)4{inti;5for(i=0;i<n;i++)6{7/*********found*********/8if(【1】==0)9/*********found*********/10printf(’’【2】’’);11/*********found*********/12printf(’’%d’’,【3】);13}14}15main()16{inta[100]={0},i,n;17n=22;18for(i=0;i<n;i++)19a[i]=rand()%21;20fun(a,n);21printf(’’\n’’);22}標(biāo)準(zhǔn)答案:(1)i%5(2)\n(3)a[i]知識(shí)點(diǎn)解析:填空1:每行輸出5個(gè)數(shù),即當(dāng)下標(biāo)值能整除5時(shí)換行。填空2:輸出換行符’\n’。填空3:輸出數(shù)組元素。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中函數(shù)fun的功能是:計(jì)算n!。例如,給n輸入5,則輸出120.000000。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdio.h>2#include<conio.h>3doublefun(intn)4{5doubleresult=1.0;6/*********found*********/7ifn==08return1.0;9while(n>1&&n<170)10/*********found*********/11result=n--;12returnresult;13}14main()15{16intn;17printf(’’InputN:’’);18scanf(’’%d’’,&n);19printf(’’\n\n%d!=%if\n\n’’,n,fun(n));20}標(biāo)準(zhǔn)答案:(1)if(n==0)(2)result*=n--;或{result*=n;n--;}知識(shí)點(diǎn)解析:(1)這里是一個(gè)簡單的格式錯(cuò)誤,if條件判斷語句應(yīng)該加括號(hào)。(2)根據(jù)階乘的概念,從n開始,n!=n*(n-1)!,直到1,所以應(yīng)該為result*=n--;。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫函數(shù)fun,其功能是:統(tǒng)計(jì)s所指字符串中的數(shù)字字符個(gè)數(shù),并作為函數(shù)值返回。例如,s所指字符串中的內(nèi)容是:2det35adh253kjsdf7/kj8655x,函數(shù)fun返回值為:11注意:部分源程序在文件PROG1.C文件中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。試題程序:1#include<stdio.h>2voidNONO();3intfun(char*s)4{56}7main()8{char*s=’’2def35adh253kjsdf7/kj8655x’’;9printf(’’%s\n’’,s);10printf(’’%d\n’’,fun(s));11NONO();12}13voidNONO()14{/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/15FILE*fp,*wf;16inti;17chars[256];18fp=fopen(’’in.dat’’,’’r’’);19wf=fopen(’’out.dat’’,’’w’’);20for(i=0;i<10;i++){21fgets(s,255,fp);22fprintf(wf,’’%d\n’’,fun(s));23}24fclose(fp);25fclose(wf);26}標(biāo)準(zhǔn)答案:1intfun(char*s)2{intn=0;3char*p;4for(p=s;*p!=’\0’;p++)5if((*p>=’0’)&&(*p<=’9’))6n++;7returnn;8}知識(shí)點(diǎn)解析:要統(tǒng)計(jì)字符串中數(shù)字字符的個(gè)數(shù),首先應(yīng)定義變量n,并初始化為0,然后遍歷字符串,逐個(gè)判斷字符是否為數(shù)字字符,判斷條件為該元素的ASCII碼在字符0和9的ASCII碼之間,若判斷條件成立,則使n的值加1,否則,繼續(xù)判斷下一個(gè)字符,直到字符串結(jié)束。國家二級(jí)C語言機(jī)試(操作題)模擬試卷第7套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:統(tǒng)計(jì)形參s所指字符串中數(shù)字字符出現(xiàn)的次數(shù),并存放在形參t所指的變量中,最后在主函數(shù)中輸出。例如,形參s所指的字符串為:abcdef35adgh3kjsdf7。輸出結(jié)果為:4。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!1#include<stdio.h>2voidfun(char*s,int*t)3{inti,n;4n=0;5/**********found**********/6for(i=0;__1___!=0;i++)7/**********found**********/8if(s[i]>=’0’&&S[i]<=__2__)n++;9/**********found**********/10__3__;11}12main()13{chars[80]=’’abcdef35adgh3kjsdf7’’;14intt;15printf(’’\nTheoriginalstringis:%s\n’’,s);16fun(s,&t);17printf(’’\nTheresultis:%d\n’’,t);}標(biāo)準(zhǔn)答案:(1)s[i](2)’9’(3)*t=n知識(shí)點(diǎn)解析:搜索整個(gè)字符串,判斷s[i]>=’0’且s[i]<=’9’,滿足該條件后,計(jì)數(shù)變量加1,因此,第一空:循環(huán)終止條件是達(dá)到了字符串的尾部,字符串以“\0”(或NULL)結(jié)束,故第一空處應(yīng)為s[i]。第二空:數(shù)字字符的判斷是s[i]>=’0’且s[i]<=’9’,故第二空處應(yīng)為“’9’”。第三空:這里是將數(shù)字字符出現(xiàn)的次數(shù)存放在形參t里,n記錄了數(shù)字字符的個(gè)數(shù),而形參t是指針變量,故第三處應(yīng)為“t=n”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:通過某種方式實(shí)現(xiàn)兩個(gè)變量值的交換,規(guī)定不允許增加語句和表達(dá)式。例如變量a中的值原為8,b中的值原為3,程序運(yùn)行后a中的值為3,b中的值為8。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!1#include<stdio.h>2intfun(int*x,inty)3{4intt;5/**********found**********/6t=x;x=y;7/**********found**********/8return(y);9}10main()11{inta=3,b=8;12printf(’’%d%d\n’’,a,b);13b=fun(&a,b);14printf(’’%d%d\n’’,a,b);15}標(biāo)準(zhǔn)答案:(1)t=*x;*x=y;(2)return(t);知識(shí)點(diǎn)解析:(1)根據(jù)fun中x變量的定義,x為指針型變量,所以第一個(gè)錯(cuò)誤標(biāo)識(shí)下的“t=x;x=y;”改為“t=*x;*x=y;”。(2)交換之后t中存放原來x的值,x存放原來y的值,這里應(yīng)該是返回原來x的值,所以第二個(gè)標(biāo)識(shí)下的“return(y);”應(yīng)該改為“return(t);”或者“returnt;”。三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫函數(shù)fun,它的功能是:求出1到1000之間能被7或11整除、但不能同時(shí)被7和11整除的所有整數(shù)并將它們放在a所指的數(shù)組中,通過n返回這些數(shù)的個(gè)數(shù)。注意:部分源程序在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。1#include<stdio.h>2voidfun(int*a,int*n)3{45}6main()7{intaa[1000],n,k;8voidNONO();9fun(aa,&n);10for(k=0;k<n;k++)11if((k+1)%10==0)12printf(’’\n’’);13else14printf(’’%5d’’,aa[k]);15NONO();16}17voidNONO()18{/*本函數(shù)用于打開文件,輸入測(cè)試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/19intaa[1000],n,k;20FILE*fp;21fp=fopen(’’out.dat’’,’’w’’);22fun(aa,&n);23for(k=0;k<n;k++)24if((k+1)%10==0)25fprintf(fp,’’\n’’);26else27fprintf(fp,’’%5d’’,aa[k]);28fclose(fp);29}標(biāo)準(zhǔn)答案:1inti;2*n=0;3for(i=7;i<1000;i++)4if(((i%7)==0||(i%11)==0)&&(i%77)!=0)a[(*n)++]=i;知識(shí)點(diǎn)解析:進(jìn)入fun函數(shù),判斷是否被7整除→判斷是否被11整除→并且不被77整除→按要求返回計(jì)算結(jié)果。首先,*n置0,設(shè)置為累計(jì)器,計(jì)算符合條件的數(shù)的個(gè)數(shù)。然后,通過循環(huán),判斷小于1000的每一個(gè)整數(shù)是否符合題干中的要求。其中的判斷條件能否被7或者被11整除為:i%7==0||i%11==0,不能被11和7同時(shí)整除為:i%77!=0,它們之間的并關(guān)系就用&&連接,最后結(jié)果即為:(i%7==0||i%11==0)&&i%77!=0。最后,將符合條件的整數(shù)存入數(shù)組a中,同時(shí)對(duì)木n進(jìn)行自加,返回結(jié)果。國家二級(jí)C語言機(jī)試(操作題)模擬試卷第8套一、程序填空題(本題共1題,每題1.0分,共1分。)1、函數(shù)fun的功能是進(jìn)行數(shù)字字符轉(zhuǎn)換。若形參ch中是數(shù)字字符‘0’~‘9’,則‘0’轉(zhuǎn)換成‘9’,‘1’轉(zhuǎn)換成‘8’,‘2’轉(zhuǎn)換成‘7’,……,‘9’轉(zhuǎn)換成‘0’;若是其他字符則保持不變;并將轉(zhuǎn)換后的結(jié)果作為函數(shù)值返回。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKI.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include/**********found***********/___1___fun(charch){/**********found***********/if(ch>=‘0’&&___2___)/**********found***********/return‘9’一(ch一___3____);returnch;}main(){charc1,c2;printf(“\nTheresult:\n”);c1=‘2’;c2=fun(c1);printf(“c1=%cc2=%c\n”,c1,c2);c1=‘8’;c2=fun(c1);printf(“c1=%cc2=%c\n”,c1,c2);cl=‘a(chǎn)’;c2=fun(c1);printf(“c1=%cc2=%c\n”,c1,c2);}標(biāo)準(zhǔn)答案:(1)char(2)ch<=’9’(3)’0’知識(shí)點(diǎn)解析:函數(shù)fun的功能是進(jìn)行數(shù)字字符轉(zhuǎn)換第一空:由主函數(shù)內(nèi)fun函數(shù)的調(diào)用“c1=‘2’:c2=fun(c1);”,而c1和c2是char變量,可知fun函數(shù)的返回值類型是char,故第一空處補(bǔ)充返回值類型應(yīng)為“char?!?。第二空:數(shù)字字符是‘0’~‘9’,因此數(shù)字字符必須ch>=‘0’且ch<=‘9’,故第二空處應(yīng)為ch<=‘9’。第三空:數(shù)字字符轉(zhuǎn)換規(guī)則是:‘0’轉(zhuǎn)換成‘9’,‘1’轉(zhuǎn)換成‘8’,‘2’轉(zhuǎn)換成‘7’,……,‘9’轉(zhuǎn)換成‘0’,即返回值為‘9’一(ch-‘0’),故第三空處應(yīng)為“‘0’”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:用選擇法對(duì)數(shù)組中的n個(gè)元素按從小到大的順序進(jìn)行排序。請(qǐng)修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行和刪行,也不得更改程序的結(jié)構(gòu)!#include#defineN20voidfun(inta[],intn){inti,j,t,P;for(j=0;j標(biāo)準(zhǔn)答案:(1)p=j;(2)p=i;知識(shí)點(diǎn)解析:程序利用選擇法實(shí)現(xiàn)數(shù)組中的n個(gè)元素從小到大的排序。(1)第一個(gè)標(biāo)識(shí)下面“p=j”根據(jù)C語言的語法,不難發(fā)現(xiàn)語句結(jié)束缺少分號(hào),因此改為“p=j;”。(2)第二個(gè)標(biāo)識(shí)下面的“p=j;”上兩句是以i作為循環(huán)和判斷條件,其中語句“for(i=j;i三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)3、請(qǐng)編寫一個(gè)函數(shù)fun,它的功能是:計(jì)算n門課程的平均分,計(jì)算結(jié)果作為函數(shù)值返回。例如:若有5門課程的成績是: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)中填入你編寫的若干語句。#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ù)用于打開文件,輸入數(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.2fkn”,aver);}fclose(fp);fclose(wf);}標(biāo)準(zhǔn)答案:inti;floatave=0.0;for(i=0;i知識(shí)點(diǎn)解析:該程序功能是計(jì)算n門課程的平均分,求解過程首先統(tǒng)計(jì)n門課的總分,然后根據(jù)總分求得平均分。[解題思路](1)在函數(shù)中首先定義平均分的變量,并將其初始化值置為0。(2)然后在for循環(huán)中,求得所有成績的總分,并在總分的基礎(chǔ)上求得平均分。國家二級(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030元宇宙概念產(chǎn)業(yè)市場發(fā)展現(xiàn)狀及技術(shù)融合與資本布局研究報(bào)告
- 2026年叉車年檢考試題庫含答案
- 2026年叉車操作人考試題庫及完整答案一套
- 2026年叉車模擬證考試題庫及完整答案1套
- 2025-2030亞洲數(shù)字經(jīng)濟(jì)合作機(jī)制創(chuàng)新商業(yè)模式競爭態(tài)勢(shì)評(píng)估發(fā)展研究報(bào)告
- 2025-2030亞洲家電品牌多元化發(fā)展研究報(bào)告及市場前景調(diào)研分析
- 2025-2030亞洲出版物發(fā)行行業(yè)市場供需分析及品牌推廣投資發(fā)展研究報(bào)告
- 2025-2030亞洲互濟(jì)銀行消費(fèi)信貸行業(yè)市場深度調(diào)研及發(fā)展趨勢(shì)和投資前景預(yù)測(cè)研究報(bào)告
- 2025-2030中國新風(fēng)系統(tǒng)住宅配套率與區(qū)域市場差異化分析報(bào)告
- 2025-2030東部互聯(lián)網(wǎng)廣告行業(yè)供需趨勢(shì)分析及創(chuàng)業(yè)投資評(píng)估規(guī)劃分析研究報(bào)告
- 2025年黨員民主評(píng)議個(gè)人總結(jié)2篇
- 果園合伙經(jīng)營協(xié)議書
- 2026中國民營醫(yī)院集團(tuán)化發(fā)展過程中的人才梯隊(duì)建設(shè)專題報(bào)告
- 物業(yè)管理經(jīng)理培訓(xùn)課件
- 員工解除競業(yè)協(xié)議通知書
- 【語文】太原市小學(xué)一年級(jí)上冊(cè)期末試題(含答案)
- 儲(chǔ)能電站員工轉(zhuǎn)正述職報(bào)告
- 靜脈炎處理方法
- 不銹鋼護(hù)欄施工方案范文
- 商業(yè)地產(chǎn)物業(yè)管理運(yùn)營手冊(cè)
- 2025及未來5年中國天然植物粉市場調(diào)查、數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
評(píng)論
0/150
提交評(píng)論