![國家二級(C語言)機(jī)試模擬試卷4(共27題)_第1頁](http://file4.renrendoc.com/view8/M03/3F/2E/wKhkGWbL2cmABvUSAALyMrcUhjo994.jpg)
![國家二級(C語言)機(jī)試模擬試卷4(共27題)_第2頁](http://file4.renrendoc.com/view8/M03/3F/2E/wKhkGWbL2cmABvUSAALyMrcUhjo9942.jpg)
![國家二級(C語言)機(jī)試模擬試卷4(共27題)_第3頁](http://file4.renrendoc.com/view8/M03/3F/2E/wKhkGWbL2cmABvUSAALyMrcUhjo9943.jpg)
![國家二級(C語言)機(jī)試模擬試卷4(共27題)_第4頁](http://file4.renrendoc.com/view8/M03/3F/2E/wKhkGWbL2cmABvUSAALyMrcUhjo9944.jpg)
![國家二級(C語言)機(jī)試模擬試卷4(共27題)_第5頁](http://file4.renrendoc.com/view8/M03/3F/2E/wKhkGWbL2cmABvUSAALyMrcUhjo9945.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
國家二級(C語言)機(jī)試模擬試卷4(共9套)(共27題)國家二級(C語言)機(jī)試模擬試卷第1套一、程序填空題(本題共1題,每題1.0分,共1分。)1、請補(bǔ)充函數(shù)fun(),該函數(shù)的功能是判斷一個數(shù)是否為回文數(shù)。當(dāng)字符串是回文時,函數(shù)返回字符申:yes!,否則函數(shù)返回字符串:no!,并在主函數(shù)中輸出。所謂回文即正向與反向的拼寫都一樣,例如:abcba。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫的若干表達(dá)式或語句。試題程序:#include<string.h>#include<stdio.h>char*fun(char*str){char*p1,*p2;inti,t=0;p1=str;p2=str+strlen(str)-1;for(i=0;【】;i++)if(【】){t=1;break;}if(【】)return("yes!");elsereturn("no!");}main(){charstr[50];printf("Input;");scanf("%s",str);printf("%s\n",fun(str));}標(biāo)準(zhǔn)答案:i<=strlen(sb)/2或i<strlen(sw)/2*p1++!=*p2--t==20知識點解析:第一空:判斷回文數(shù)就是將第一個字符與最后—個字符比較,第二個字符與倒數(shù)第二個字符進(jìn)行比較,依此類推,直到中間的字符,如果比較的結(jié)果都是相同,則這個字符串就是回文數(shù),否則不是。所以比較的次數(shù)是strlen(str)/2。第二空:指針p1從第一個字符向后移動,指針p2從最后一個字符向前移動,如果兩字符不相同,則說明此字符串不是回文數(shù),將標(biāo)記變量t置為1。第三空:變量t用來標(biāo)記此字符串是否為回文數(shù),當(dāng)t為0時,表示字符串是回文數(shù),當(dāng)t為1時,表示字符串不是回文數(shù)。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:將長整型數(shù)s中每一位上為偶數(shù)的數(shù)依次取出,構(gòu)成一個新數(shù)放在t中。高位仍在高位,低位仍在低位。例如,當(dāng)s中的數(shù)為:87653142時,t中的數(shù)為:8642。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意;不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includevoidfun(10ngs,long*t){intd;longsi=i;*t=0;while(s>0)(d=s%10;/**************found**************/if(d%2=0)(*t=d*s1+*t;s1*=10;}/**************found**************/s\=10;}}main()(longs,t;printf("\nPleaseenters:");scanf("%id",&s);fun(s,&t);printf("Theresultis:%Id\n",t);}標(biāo)準(zhǔn)答案:(1)if(d%2==0)(2)s/=10;知識點解析:(1)第一個標(biāo)識是判斷d是否是偶數(shù),即比較d%2是否等于0,在C語言中,“一"表示的是“等于",而“="是賦值,因此第一個標(biāo)識下“if(d%2=0)"應(yīng)改為“if(d%2==0)"。(2)第二個標(biāo)識下的“s\=10;"是對a的截取,這里的“\"本意應(yīng)該是除號,但這個在c語言中是不可識別的,所以第二個標(biāo)識下“s\=10;"應(yīng)該改為“s/=10;"。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun(),其功能是:計算并輸出下列多項式值。S=(1+1/2)+(1/3+1/4)+…+(1/(2n-1)+l/2n)例如,若主函數(shù)從鍵盤給n輸入12后,則輸出為S=3.775958。n的值要求大于1但不大于100。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。試題程序:#include<stdio.h>doublefun(intn){}main(){intn;doubles;printf("\nlnputn:");scanf("%d",&n);s=fun(n);printf("\ns=%f\n",s);}標(biāo)準(zhǔn)答案:doublefun(intn){inti;doubles=0.0;for(i=1;i<=n;i++)/*計算S=(1+l/2)+(1/3+1/4)+…+(1/(2n-1)+1/2n)*/s=s+(1.0/(2*i-1)+1.0/(2*i));returns;}知識點解析:本題中s=s+(1.0/(2*i-1)+1.0/(2*i));語句是用C程序去表達(dá)題目中的每一項,這是關(guān)鍵,其他問題不難理解。國家二級(C語言)機(jī)試模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、請補(bǔ)充main函數(shù),該函數(shù)的功能是:輸出方程組“A+B=56,A+2B=72”的一組正整數(shù)解。本題的結(jié)果是:A=40,B=16。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在main函數(shù)的橫線上填入所編寫的若干表達(dá)式或語句。試題程序:#include<stdio.h>main(){inti,j;clrscr();for(i=0;i<100;i++)for(j=0;j<100;j++)if(【】)printf("A=%2d,B=%2d",【】);}標(biāo)準(zhǔn)答案:i+j==56&&i+2*j==72i,j知識點解析:第一空:如果兩數(shù)i和j司時滿足條件:i+j==52,i+2*j==60,則i和j就是方程組的解。兩個條件要同時滿足,一不可,所以要用“與”運(yùn)算符——“&&”。第二空:出于要輸出方程組的解,所以標(biāo)準(zhǔn)輸出函數(shù)printf()的輸出列表是i和j。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定的程序中,函數(shù)hn()的功能是:為一個偶數(shù)尋找兩個素數(shù),這兩個素數(shù)之和等于該偶數(shù),并將這兩個素數(shù)通過形參指針傳回主函數(shù)。請改正函數(shù)fun()中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<stdio.h>#include<math.h>voidfun(inta,int*b,int*c){inti,j,d,y;for(i=3;i<=a/2;i=i+2)/*************found**************/{y=0;for(j=2;j<=sqrt((double)i);j++)if(i%j==0)y=0;if(y==1)/*************found**************/{d=i-a;for(j-2;j<=sqrt((double)d);j++)if(d%j==0)y=0;if(y=-1){*b=i;*c=d;}}}}main(){inta,b,c;do{printf("\nInputa:");scanf("%d",&a);}while(a%2);fun(a,&b,&c);printf("\n\n%d=%d+%d\n",a,b,c);}標(biāo)準(zhǔn)答案:(1)錯誤:y=0;正確:y=1:(2)錯誤:d=i-a;正確:d=a-i;知識點解析:這道題是歷年的考題經(jīng)典。也就是驗證哥德巴赫猜想之變體,原來的思路是(任意一個大于等于6的偶數(shù)都可以分解為兩個素數(shù)之和)n為大于等于6的任一偶數(shù),可分解為n1和n2兩個數(shù),分別檢查n1和n2是否為素數(shù),如都是,則為一組解。如n1不是素數(shù),就不必再檢查n2是否素數(shù)。先從n1=3開始,檢驗n1和n2(n2=N-n1)是否素數(shù)。然后使n1+2再檢驗n1,n2是否素數(shù),…直到n1=n/2為止。該題思路是與“經(jīng)典猜想”是相同的。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun(),其功能是:將所有大于1小于整數(shù)m的非素數(shù)存入xx所指數(shù)組中,非素數(shù)的個數(shù)通過k傳回。例如,輸入17,則應(yīng)輸出46891012141516。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>voidfun(intm,int*k,intxx[]){}main(){intm,n,zz[100];clrscr();printf("\nPleaseenteranintegernumberbetween10and100:");scanf("%d",&n);fun(n,&m,zz);printf("\n\nThereare%dnon-primenumberslessthan%d:",m,n);for(n-0;n<m;n++)printf("\n%4d",zz[n]);}標(biāo)準(zhǔn)答案:voidfun(intm,int*k,intxx[]){inti,j,n=0;for(i=4;i<m;i++)/*找出大于1小于整數(shù)m的非素數(shù)*/{for(j=2;j<i;j++)if{i%j==0)break;if(j<i)xx[n++]=i;}*k=n;/*反回非素數(shù)的個數(shù)*/}知識點解析:這道題是考查一個數(shù)是不是素數(shù)的簡單延伸,只要掌握了判斷素數(shù)的方法,問題便能順利解決,請學(xué)習(xí)者以此題為例,搞清判斷素數(shù)的方法。國家二級(C語言)機(jī)試模擬試卷第3套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是計算下式直到≤10-3,并把計算結(jié)果作為函數(shù)值返回。例如:若形參e的值為le-3,函數(shù)的返回值為0.551690。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includedoublefun(doublee){inti,k;doubles,t,x;s=0;k=1;i=2;/*****************found***************/x=【1】/4;/*****************found***************/while(x【2】e){S=s+k*x;k=k*(-1);t=2*i;/*****************found***************/x=【3】/(t*t);i++;}returns;}main(){doublee=le-3;printf("\nTheresultis:%f\n",fun(e));}標(biāo)準(zhǔn)答案:(1)3.(2)>(3)(2*i+1)知識點解析:第一空:“k=k.(-1);"可知第一次進(jìn)入循環(huán)時,級數(shù)項是負(fù)數(shù),故循環(huán)累加是從第二項開始的,因此s的初始化值是級數(shù)的第一項值3/4,s是double變量,因此不能直接用3除以4,而應(yīng)該是3.0除以4或3除以4.0,因為整數(shù)相除得到的結(jié)果仍然是整數(shù),故第一空處應(yīng)為“3."。第二空:由題干要求可知,循環(huán)的終止條件是級數(shù)項的絕對值小于等于e,故第二空處應(yīng)填“>",在級數(shù)項大于e的時候不停的計算累加和。第三空:x是級數(shù)項的絕對值,第三處是補(bǔ)充級數(shù)項的分子,由題干的級數(shù)可知,分子是2*i+1,故第三處應(yīng)為“(2*i+1)"。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:計算函數(shù)(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y的值不等,z和y的值不等。例如,當(dāng)x的值為9、y的值為11、z的值為15時,函數(shù)值為-3.50。請改正程序中的錯誤,使它能得出正確結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。#include#include#include/************found************/#defineFU(m,n)(m/n)floatfun(floata,floatb,floatc){floatvalue;value=FU(a+b,a-b)+FU(c+b,c-b);/************found************/Return(value);}main(){floatx,y,z,sum;printf("Inputxyz:");scanf("%f%f%f",&x,&y,&z);printf("x=%f,y=%f,z=%f\n",x,y,z);if(x==y||y==z){printf("Dataerror!\n");exit(0);}sum=fun(x,y,z);printf("Theresultis:%5.2f\n",sum);}標(biāo)準(zhǔn)答案:#defineFU(m,n)((m)/(n))return(value);知識點解析:(1)函數(shù)fun兩次調(diào)用宏FU來計算“value=FU(a+b,a-b)+FU(c+b,c-b);”。檢查宏的定義是否正確,可以用實參代入宏進(jìn)行展開:(a+b/a-b),由此看到,F(xiàn)U(a+b,a-b)進(jìn)行的計算不是(a+b)/(a-b),而是(a+b/a-b),因為“/”的優(yōu)先級高于“+”或“-”,所以要使用括號限定計算優(yōu)先順序。所以將“#defineFU(m,n)(m/n)”改為“#defineFU(m,n)((m)/(n))”。(2)第二個標(biāo)識下返回語句的關(guān)鍵字有誤。所以,第二個標(biāo)識下“Return(value);”應(yīng)該改為“return(value);”,C語言中沒有“Return”這個關(guān)鍵字。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、編寫一個函數(shù),從num個字符串中找出最長的一個字符串,并通過形參指針max傳回該串地址。(注意:主函數(shù)中用****作為結(jié)束輸入的標(biāo)志。)注意:部分源程序在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include#includevoidfun(char(*a)[81],intnum,char**max){}main(){charss[10][81],*ps;voidNONO();intn,i=0;printf("輸入若干個字符串");gets(ss[i]);puts(ss[i]);while(!strcrnp(ss[i],"***")==0){i++;gets(ss[i]);puts(ss[i]);}n=i;fun(ss,n,&ps);printf("\nmax=%s\n",ps);NONO();}voidNONO(){/*請在此函數(shù)內(nèi)打開文件,輸入測試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/charqs[20][81],*ps;intn,i=0;FILE*rf,*wf;rf=fopen("in.dat","r");wf=fopen("out.dat","w");fgets(ss[i],81,rf),while(!strncrap(ss[i],"***",4)==0){i++;fgets(ss[i],81,rf);}n=i;fun(ss,n,&ps);fprintf(wf,"%s",ps);fclose(rf);fclose(wf);}標(biāo)準(zhǔn)答案:inti,k=0,maxlen;/*k為a數(shù)組中最長串所在元素的下標(biāo),初始為0,maxlen為其串長*/maxlen=strlen(a[k]);for(i=1;imaxlen)(maxlen=strlen(a[i]);k=i;}}*max=a[k];知識點解析:(1)設(shè)置一個指針變量maxlen,使它的初值為第一個字符串,再使其他字符串的長度與maxlen的長度進(jìn)行比較,若其他字符串的長度大于maxlen,則將其他字符串的首地址賦值給max。(2)最后返回長度最長的字符串的地址。國家二級(C語言)機(jī)試模擬試卷第4套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中。函數(shù)fun的功能是:找出100至x(x≤999)之間各位上的數(shù)字之和為15的所有整數(shù),然后輸出;符合條件的整數(shù)個數(shù)作為函數(shù)值返回。例如,當(dāng)n值為500時,各位數(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個。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行。也不得更改程序的結(jié)構(gòu)!#includeintfun(intx){intn,s1,s2,s3,t;/****************found**************/n=【1】;t=100;/****************found**************/while(t<=【2】){sl=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標(biāo)準(zhǔn)答案:(1)0(2)x(3)t++或t=t+1知識點解析:第一空:由“returnn;"可知,n是返回值,n計數(shù)了滿足題干條件的x的個數(shù),故第一空處n的初始化為0,因此第一空應(yīng)為“0"。第二空:根據(jù)主函數(shù)中fun函數(shù)的調(diào)用“fun(x)",可知fun函數(shù)的參數(shù)x是循環(huán)的終止條件,即循環(huán)變量t從100開始到x結(jié)束,故第二空處應(yīng)為“x"。第三空:在while循環(huán)體內(nèi)沒有t變化的語句,因此第三空處是t自增,因此第三空處應(yīng)為“t++"或“t=t+1"。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun()的功能是:將str所指字符串中的字母轉(zhuǎn)換為按字母序列的后續(xù)字母(Z轉(zhuǎn)換A,z轉(zhuǎn)換a),其他字符不變。請修改函數(shù)fun()中的錯誤,得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include#include#include=’A’&&*str<=’Z’||*str<=’a’&&*str<=’z’){if(*str==’Z’)*str=’A’;elseif(*str==’z’)*str=’a’;else*str+=1;}//****found****(*str)++;}}voidmain(){charstr[80];printf("\nEnterastringwithlength<80.:\n\ngets(str);printf("\nThestring:\n\n");puts(str);fun(str);printf("\n\nTheCords:\n\n");puts(str);}標(biāo)準(zhǔn)答案:(1)錯誤:(*str++);正確:str++(2)錯誤:while1*str!=’@’正確:while(*str)或while(*str!=’\0’)或while(*str!=0)知識點解析:首先判斷字母是否為小寫字母,如果是小寫字母則進(jìn)行轉(zhuǎn)換。第一個標(biāo)識下“while(*str!=’@’)”語句原意是str不指向字符串尾就進(jìn)入下面的循環(huán),所以對于指針判斷不為結(jié)束符的語句應(yīng)該是循環(huán)里為真,所以應(yīng)為“while(*str)”或“while(*str!=’\0’)”或“while(*str!=0)”。第二個標(biāo)識下“(*str)++;”是對字符內(nèi)容加1,而原題是對字符位置加1,所以將其改為“str++;”。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、程序定義了N×N的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)fun,函數(shù)的功能是:使數(shù)組右上三角元素中的值乘以m。例如;若m的值為2,a數(shù)組中的值為:則返回主程序后a數(shù)組中的值應(yīng)為:注意:部分源程序存在文件PROGl.C文件中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#iticlude#include#defineN5voidfun(inta[][N],intm){}main(){inta[NI[N],m,i,j;voidNONO();printf("*****Thearray*****\n"),for(i=0;i=3);printf(”m=%4d\n”,m);fun(a,m);printf(”THERESULT\n”);for(i=0;i標(biāo)準(zhǔn)答案:inti,j;for(i=0;i知識點解析:(1)右上半角的元素是行下標(biāo)小于等于列下標(biāo),即“i<=j"包括對角線。(2)依次訪問二維數(shù)組,把符合條件的元素的值乘以m。國家二級(C語言)機(jī)試模擬試卷第5套一、程序填空題(本題共1題,每題1.0分,共1分。)1、函數(shù)fun的功能是:把形參a所指數(shù)組中的奇數(shù)按原順序依次存放到a[0]、a[1]、a[2]、……中,把偶數(shù)從數(shù)組中刪除,奇數(shù)個數(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。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKI.C中。不得增行或刪行。也不得更改程序的結(jié)構(gòu)!#include#defineN9intfun(inta[],intn){inti,j;j=0;for(i=0;i標(biāo)準(zhǔn)答案:1;j++j知識點解析:第一空:根據(jù)“a[j]=a[i];”可知,a[i]是奇數(shù),變量j記錄奇數(shù)的個數(shù),故第一空處是判斷a[i]是否是奇數(shù),故第一空處應(yīng)為“1”。第二空:變量j記錄奇數(shù)的個數(shù),故第二空處j計數(shù)應(yīng)當(dāng)加1,因此第二空處應(yīng)為“j++”或“j=j+1”。第三空:fun函數(shù)的返回值是奇數(shù)個數(shù),故第三空處應(yīng)為“j”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中fun函數(shù)的功能是:分別統(tǒng)計字符串中大寫字母和小寫字母的個數(shù)。例如,給字符串S輸入:AAaaBBbl23CCceced,則應(yīng)輸出結(jié)果:upper=6,lower=8。請改正程序中的錯誤,使它能計算出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include/***************found****************/voidfun(char*s,inta,intb){while(*s)(if(*s>=’A’&&‘s<=’Z’)/***************found****************/*a=a+1;if(*s>=’a’&&*s<=’Z’)/***************found****************/*b=b+1;s++;}}main()(chars[100];intupper=0,lower=0;printf("\nPleaseastring:");gets(s);fun(s,&upper,&lower);printf("\nupper=%dlower=%d\n",upper,lower);}標(biāo)準(zhǔn)答案:(1)voidfun(char*s,int*a,int*b)(2)*a=*a+1;(3)*b=*b+1;知識點解析:(1)第一個標(biāo)識下面“voidfun(char*s,inta,intb)",因為主函數(shù)調(diào)用fun函數(shù)第二個、第三個參數(shù)傳送的是參數(shù)地址,因此定義的fun函數(shù)中的第二個、第三個參數(shù)應(yīng)是指針型。應(yīng)將“voidfun(char*s,inta,intb)"改為“voidfun(char*s,int*a,int*b)"。(2)第二個和第三個標(biāo)識下面,因為a、b都是指針型,將a、b中的內(nèi)容加1,應(yīng)為“*a=*a+1;"和“*b=*b+1;"。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)proc(),它的功能是:求出str所指字符串中指定字符的個數(shù),并返回此值。例如,若輸入字符串12341234123,輸入字符4,則輸出2。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填人所編寫的若干語句。試題程序:#include#include#include#defineN81intproc(char*str,charc){}voidmain(){chara[N],ch;system("CLS");printf("\nPleaseenterastring:");gets(a);printf("\nPleaseenterachar:");ch=getchar();printf("\nThenumberofthecharis:%d\n",proc(a,oh));}標(biāo)準(zhǔn)答案:intproc(char*str,charc){inti=0;//i是放與c相同的字符的個數(shù)的變量for(;*str!=’\0’;str++)if(*str==c)//str所指字符串中指定字符的個數(shù)i++;returni;}知識點解析:求出str所指字符串中指定字符的個數(shù),可以通過將str所指字符串中每一個字符與指定字符相比較,變量i中存放字符串中指定字符的個數(shù)。最后返回給主函教。國家二級(C語言)機(jī)試模擬試卷第6套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:將形參指針?biāo)附Y(jié)構(gòu)體數(shù)組中的三個元素按num成員進(jìn)行升序排列。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#includetypedefstruct{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)答案:*stdPERSONstd知識點解析:第一空:fun函數(shù)的功能是將形參指針?biāo)附Y(jié)構(gòu)體數(shù)組中的三個元素進(jìn)行排序,可知fun函數(shù)的參數(shù)是指針,由“if(std[0].num>std[1].num)”可知形參名為std,故第一空處應(yīng)為“voidfun(PERSON*std)”。第二空:temp變量用來進(jìn)行交換時臨時保存變量值,由“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、給定程序MODll.C中函數(shù)fun的功能是:利用插入排序法對字符串中的字符按從小到大的順序進(jìn)行排序。插入法的基本算法是:先對字符串中的頭兩個元素進(jìn)行排序。然后把第三個字符插入到前兩個字符中,插入后前三個字符依然有序;再把第四個字符插入到前三個字符中……。待排序的字符串已在主函數(shù)中賦予。請改正程序中的錯誤,使它能得出正確結(jié)果。注意:不要改動mmn函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。#include#include#defineN80voidinsert(char*aa){inti,j,n;charch;/**********found**********/n=strlem(aa);for(i=1;i=0)&&(ch標(biāo)準(zhǔn)答案:n=strlen(aa);ch=aa[i];知識點解析:(1)strlen是求字符串長度的函數(shù),函數(shù)調(diào)用的形式是:strlen(字符串地址),故第一標(biāo)識下應(yīng)改成“n=strlen(aa);”。(2)程序調(diào)試時會提示“c=aa[i];”中的c未定義,insert函數(shù)中定義的是變量ch作為存放aa字符串中字符的臨時變量,然后對其與其他字符進(jìn)行比較。所以將“c=aa[i];”改為“ch=aa[i];”。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,它的功能是:求出ss所指字符串中指定字符的個數(shù),并返回此值。例如,若輸入字符串:123412132,輸入字符為:1,則輸出:3。注意:部分源程序在文件PROGI.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include#include#defineM81intfun(char*ss,charc){}main(){chara[M],ch;voidNONO();printf("\nPleaseenterastring:");gets(a);printf("\nPleaseenterachar:");ch=getchar();printf("\nThenumberofthecharis:%d\n",fun(a,ch));NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入測試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/inti;FILE*rf,*wf;chara[M],b[M],ch;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%s",a);fscanf(rf,"%s",b);ch=*b;fprintf(wf,"%c=%d\n",ch,fun(a,ch));}fclose(rf);fclose(wf);}標(biāo)準(zhǔn)答案:{intcnt=0;char*p=ss;while(*p){if(*p==c)cnt++;p++;}returncnt;}知識點解析:如果不是串尾就進(jìn)入while循環(huán),在循環(huán)過程中利用if條件表達(dá)式判斷當(dāng)前字符是否為指定的字符,如果符合條件,那么對統(tǒng)計計數(shù)變量進(jìn)行加1操作。國家二級(C語言)機(jī)試模擬試卷第7套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:在形參ss所指字符串?dāng)?shù)組中查找與形參t所指字符串相同的串,找到后返回該串在字符串?dāng)?shù)組中的位置(下標(biāo)值),未找到則返回-1。ss所指字符串?dāng)?shù)組中共有N個內(nèi)容不同的字符串,且串長小于M。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#defineN5#defineM8intfun(char【1】(*ss)[M],char*t){inti;/**********found***********/for(i=0;i<1;i++)/**********found**********/if(strcmp(ss[i],t)==0)return【2】;return-1;}main(){charch[N][M]={"if","while","switch","int","for"},t[M];intn,i;printf("\nTheoriginalstring\n\n");for(i=0;i標(biāo)準(zhǔn)答案:(1)N(2)i(3)一1知識點解析:第一空:“for(i=0;i<1;i++)"補(bǔ)充循環(huán)的結(jié)束條件,fun的參數(shù)(*ss)[M]是指向N行M列的字符串?dāng)?shù)組,循環(huán)是逐行查找是否存在t所指的字符串,因此循環(huán)次數(shù)是N次,故第一空處應(yīng)為“N"。第二空:“if(strcmp(ss[i],t)=0)return【2】;"說明兩個字符串相同,按照題干要求,應(yīng)返回該串在字符串?dāng)?shù)組中的位置i,故第二空處為“i"。第三空:“if(n=【3】)ptintf("\nDon’tfound!\n");",fun函數(shù)未找到則返回-1,因此這里是判斷n是否等于-1,如果n等于-1標(biāo)識沒有找到,在屏幕上輸出“Don’tfound!",因此第三空處為“-1"。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:求出以下分?jǐn)?shù)序列的前n項之和。和值通過函數(shù)值返回到main函數(shù)。2/1,3/2,5/3,8/5,13/8,21/13……例如,若n=5,則應(yīng)輸出:8.391667。請改正程序中的錯誤,使它能計算出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include/****************found*****************/voidfun(intn){inta,b,c,k;doubles;s=0.0;a=2;b=1;for(k=1,k<=njk++){/****************found*****************/s=s+(Double)a/b;c=a;a=a+b;b=c;}retuEns;}main(){intn=5;printf("\nThevalueoffunctionis:%lf\n",fun(n));}標(biāo)準(zhǔn)答案:(1)doublefun(intn)(2)s=s+(double)a/b;知識點解析:(1)fun函數(shù)中的語句“doubles;"以及“returns;"說明fun函數(shù)具有double返回值,所以應(yīng)將“fun(intn)"改為“doublefun(intn)"。(2)第二標(biāo)識下“s=s+(Double)a/b;"對s進(jìn)行累加,a和b均是int變量,計算結(jié)果也是int會丟失精度,需要強(qiáng)制類型轉(zhuǎn)換,將a或b轉(zhuǎn)換成double型?!?Double)a"強(qiáng)制類型轉(zhuǎn)換是錯誤的,C語言中不存在“Double’’關(guān)鍵字,第二標(biāo)識下應(yīng)改成“s=s+(double)a/b;"。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、函數(shù)fun的功能是;將s所指字符串中除了下標(biāo)為偶數(shù)、同時ASCⅡ值也為偶數(shù)的字符外,其余的全都刪除:串中剩余字符所形成的一個新串放在t所指的數(shù)組中。例如,若s所指字符串中的內(nèi)容為:"ABCDEFGl23456",其中字符A的ASCⅡ碼值為奇數(shù),因此應(yīng)當(dāng)刪除;其中字符B的ASCⅡ碼值為偶數(shù),但在數(shù)組中的下標(biāo)為奇數(shù),因此也應(yīng)當(dāng)刪除;而字符2的ASCⅡ碼值為偶數(shù),所在數(shù)組中的下標(biāo)也為偶數(shù),因此不應(yīng)當(dāng)刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是:"246"。注意:部分源程序存在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容。僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include#includevoidfun(char*s,chart[]){}main(){chars[100],t[100];voidNONO();printf("\nPleaseenterstringS:"),scanf("%s",S);fun(s,t);printf("\nTheresultis:%s\n",t);NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/chars[100],t[100];FILE*rf,*wf;inti;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%s",s);fun(s,t);fprintf(wf,"%s\n",t);}fclose(rf);fclose(wf);}標(biāo)準(zhǔn)答案:inti,j=0;for(i=0;i知識點解析:(1)判斷一個字符串中的某一字符下標(biāo)i是否為偶數(shù),可用“i%2==0"來判斷;也可以從下標(biāo)0開始,每次增2。判斷字符中的ASCII碼值是否為偶數(shù),則可用"s[i]%2==0"來判定。(2)對串s中下標(biāo)為偶數(shù)的字符進(jìn)行考查,滿足ASCⅡ碼值是偶數(shù)條件的字符就順序放在新串s中,否則就不存放。(3)所有字符處理完后,記得在新串s的末尾加上結(jié)束符"’\0’"。國家二級(C語言)機(jī)試模擬試卷第8套一、程序填空題(本題共1題,每題1.0分,共1分。)1、字符串str由數(shù)字字符組成(長度不超過5個字符),可看作任意進(jìn)制的數(shù),請補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:把str字符串轉(zhuǎn)換成任意進(jìn)制的數(shù),結(jié)果保存在數(shù)組xx中,由函數(shù)返回轉(zhuǎn)換后數(shù)組腆的實際長度。其中x表示str原來的進(jìn)制,y表示要轉(zhuǎn)換成的進(jìn)制。例如,輸入str=“1111”,x=2,y=10,結(jié)果輸出:15。如果輸入str=“15”,x=10,Y=2,結(jié)果輸出:1111。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫的若干表達(dá)式或語句。試題程序:#include<stdio.h>#include<stdlib.h>#include<string.h>#defineN8intxx[N];intfun(char*str,intx,inty){intsum;inti=0;char*p=str;for(i=0;i<N;i++)xx[i]=0;sum=*p-’0’;p++;while(*p){sum=【】;p++;}i=0;while(sum!=0){xx[i]=【】;【】;i++;}returni;}main(){charstr[6];inti;intn;intx;inty;printf("Enterastringmadeupof’0’to’9’digitscharacter:");gets(str);if(strlen(str)>5){printf("Error:stringtoolonger!,pleaseinputagain!\n\n");exit(0);}for(i=0;str[i];i++)if(str[i]<’0’||str[i]>’9’){printf("Error:%cnotis’0’to’9’digitscharacter!\n\n",str[i]);exit(0);}printf("Theoriginalstring:");puts(str);printf("\nINPUTx=");scanf("%d",&x);printf("\nINPUTy=");scanf("%d",&y);n=fun(str,x,y);printf("\n%sisconveredto",str);for(i=n-1;i>=0;i--)printf("%d",xx[i]);}標(biāo)準(zhǔn)答案:sum*x+*p-’0’sum%ysum=sum/y知識點解析:第一空:為了進(jìn)行數(shù)字運(yùn)算,必須要將字符串中的數(shù)字字符轉(zhuǎn)換為數(shù)字,用數(shù)字字符減去字符’0’的ASCII碼,就得到對應(yīng)的數(shù)字。將x進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)的算法是:以1001為例,對應(yīng)的十進(jìn)制數(shù)為l*x3+0*x2+O*x+1=x*(x*(x*1+0)+0)+1。第二空:將十進(jìn)制數(shù)轉(zhuǎn)換為y進(jìn)制數(shù)的算法與將y進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)的算法正好相反,十進(jìn)制數(shù)對y取余,得到y(tǒng)進(jìn)制數(shù)的最低位。第三空:將十進(jìn)制數(shù)整除y后得到的數(shù),再對y取余,則得到y(tǒng)進(jìn)制數(shù)的次低位,如此循環(huán),得到y(tǒng)進(jìn)制數(shù)的各位,轉(zhuǎn)換的結(jié)果存于數(shù)值xx[N]中。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODll.C中函數(shù)fun的功能是:將s所指字符串的正序和反序進(jìn)行連接,形成一個新串放在t所指的數(shù)組中。例如,當(dāng)s所指字符串為:“ABCD”時,則t所指字符串中的內(nèi)容應(yīng)為:“ABCDDCBA”。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!標(biāo)準(zhǔn)答案:(1)voidfun(char*s,char*t)(2)t[2*d]=‘\0’;知識點解析:本題中函數(shù)的功能是將字符串的正序和反序進(jìn)行連接。題目中首先由字符串的起始位置正序取字符,然后再由串尾逆序取字符,實現(xiàn)正序和逆序的連接。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、請編寫程序fun,函數(shù)的功能是:實現(xiàn)B=A+Aˊ,即把矩陣A加上A的轉(zhuǎn)置,存放在矩陣B中。計算結(jié)果在main函數(shù)中輸出。例如,輸入下面的矩陣:其轉(zhuǎn)置矩陣為:123147456258789369程序輸出:261061014101418注意:部分源程序在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。標(biāo)準(zhǔn)答案:知識點解析:該程序功能是實現(xiàn)B=A+Aˊ,即把矩陣A加上A的轉(zhuǎn)置。其中,所謂矩陣的轉(zhuǎn)置,是把行中的數(shù)據(jù)與列中的數(shù)據(jù)進(jìn)行對調(diào)。解題過程中首先求得已給的矩陣的轉(zhuǎn)置,然后在循環(huán)過程中對矩陣與該矩陣的轉(zhuǎn)置對應(yīng)元素求和。國家二級(C語言)機(jī)試模擬試卷第9套一、程序填空題(本題共1題,每題1.0分,共1分。)1、請補(bǔ)充main函數(shù)。該函數(shù)的功能是:求1~100(不包括100)以內(nèi)所有素數(shù)的平均值。程序運(yùn)行后的結(jié)果為42.40。注意:部分源程序給出如下.請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在main函數(shù)的橫線上填入所編寫的若干表達(dá)式或語句。試題程序:#include<stdio.h>main(){inti,j,n=0,flag;floa
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代辦公環(huán)境的網(wǎng)絡(luò)安全培訓(xùn)
- 未來學(xué)習(xí)模式基于網(wǎng)絡(luò)教育平臺的思考
- 現(xiàn)代辦公空間中的綠色環(huán)保用品設(shè)計思考
- 2024年四年級品德與社會上冊 第三單元 生活在這里真好 第11課《我家來了新鄰居》說課稿 粵教版001
- 2024-2025學(xué)年高中物理 第十二章 機(jī)械波 4 波的衍射和干涉說課稿4 新人教版選修3-4001
- Module 1 Unit 1 She's a nice teacher(說課稿)-2023-2024學(xué)年外研版(三起)英語四年級下冊
- 2023九年級化學(xué)上冊 第一章 大家都來學(xué)化學(xué)1.2 化學(xué)實驗室之旅說課稿(新版)粵教版001
- 2025農(nóng)村養(yǎng)殖場場地租地合同
- 2025國際專利技術(shù)許可合同模板版
- Unit 5 Nature and Culture(說課稿)2023-2024學(xué)年人教新起點版英語六年級下冊
- 電動汽車用驅(qū)動電機(jī)系統(tǒng)-編制說明
- 江蘇卷2024年高三3月份模擬考試化學(xué)試題含解析
- (正式版)JTT 1497-2024 公路橋梁塔柱施工平臺及通道安全技術(shù)要求
- 2024年四川省成都市新都區(qū)中考英語一診試卷(含解析)
- 醫(yī)療器械物價收費(fèi)申請流程
- 招聘專員轉(zhuǎn)正述職報告
- “一帶一路”背景下的西安市文化旅游外宣翻譯研究-基于生態(tài)翻譯學(xué)理論
- 2024年江蘇省昆山市六校中考聯(lián)考(一模)化學(xué)試題
- 大學(xué)生文學(xué)常識知識競賽考試題庫500題(含答案)
- 國家電網(wǎng)智能化規(guī)劃總報告
- 邢臺市橋西區(qū)2024年事業(yè)單位考試《公共基礎(chǔ)知識》全真模擬試題含解析
評論
0/150
提交評論