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

下載本文檔

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

文檔簡介

國家二級C語言機(jī)試(操作題)模擬試卷11(共9套)(共27題)國家二級C語言機(jī)試(操作題)模擬試卷第1套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,已建立一個帶有頭結(jié)點(diǎn)的單向鏈表,鏈表中的各結(jié)點(diǎn)包含數(shù)據(jù)域(data)和指針域(next),數(shù)據(jù)域為整型。函數(shù)fun的作用是:找出鏈表各結(jié)點(diǎn)數(shù)據(jù)域中的最大值,其最大值由函數(shù)值返回。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在文件BLANK1.C中,不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>#include<stdlib.h>#pragmawarning(disable:4996)structlist{intdata;structlist*next;};structlist*createlist(intdata[],intn){structlist*head=0,*p,*q;inti;head=(structlist*)malloc(sizeof(structlist));head一>data=data[0];p=q=head;for(i=1;i<n;i++){p=(structlist*)malloc(sizeof(structlist));p一>data=data[i];q一>next=p;q=p;}p一>next=NULL;returnhead;}/*********found*********/intfunc(【1】head){intpmax=head一>data;structlist*p=head一>next;while(p!=NULL){if(p一>data>pmax)pmax=p一>data;/*********found*********/p=2】;}/*********found*********/【3】}voidmain(){intdata[]={123,21,65,789,32,310,671,651,81,101},pmax;structlist*head;head=createlist(data,10);pmax=func(head);printf("Nax=%d\n”",pmax);}標(biāo)準(zhǔn)答案:(1)structlist*(2)p一>next;(3)returnpmax;知識點(diǎn)解析:程序定義了結(jié)構(gòu)體類型list,用來作為鏈表的結(jié)點(diǎn)類型,它包含兩個成員:data數(shù)據(jù)成員,next指針成員。func()函數(shù)參數(shù)為鏈表的頭結(jié)點(diǎn)指針,pmax用來存放最大值,通過while循環(huán)遍歷整個鏈表,在遍歷的過程中,將當(dāng)前結(jié)點(diǎn)的data與pmax比較,若pmax小于當(dāng)前結(jié)點(diǎn)的data,則使用當(dāng)前結(jié)點(diǎn)的data更新pmax,最后將pmax的值作為函數(shù)返回值返回。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:從低位開始依次取長整型變量s中奇數(shù)位上的數(shù),構(gòu)成一個新數(shù)放在t中(注意:位置從0開始計算)。例如:輸入:12345678,則輸出:1357輸入:123456789,則輸出:2468請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結(jié)果。注意:不要改動mmn函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>#pragmawarning(disable:4996)voidfun(longs,long*t){longsl=10;s/=10;/*********found*********/*t=s/10;while(s>0){s=s/100;/*********found*********/t=s%10*sl+t;/*********found*********/sl/=10;}}main(){longs,t;printf("”\nPleaseenterlongnumber:");scanf("%ld",&s);fun(s,&t);printf("Theresultis:%ld\n",t);}標(biāo)準(zhǔn)答案:(1)*t=s%10;(2)*t=s%10*sl+*t;(3)sl*=10;知識點(diǎn)解析:fun()函數(shù)中,S是待處理的數(shù),t是用來存放新數(shù)的指針,sl表示當(dāng)前數(shù)字在新數(shù)中某位上的基數(shù)。由于題意從S的低位到高位從0開始,所以第1個奇數(shù)位是S的十位數(shù)字,需要將S除以10去掉個位數(shù)字,sl賦初值為十位的基數(shù)10,將處理后的S的個位數(shù)字存放到指針t中。接著通過while循環(huán),每次將S除以100,跳過偶數(shù)位上的數(shù)字,然后將奇數(shù)位上的數(shù)字乘以對應(yīng)的基數(shù)s1后,與t指向的數(shù)累加,重新存放到指針t中,并將基數(shù)s1乘以10,表示下一位的基數(shù),直s為0。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,其功能是:在一個含有11個四位數(shù)的數(shù)組中,統(tǒng)計出這些數(shù)的奇數(shù)、偶數(shù)個數(shù),然后計算出個數(shù)多的那些數(shù)的算術(shù)平均值并由函數(shù)返回,個數(shù)通過)r)r傳回。例如,若11個數(shù)據(jù)為:1101,1202,1303,1404,1505,2611,2712,2813,2914,3202,4222則輸出:yy=6,pjz=2609.33注意:部分源程序在文件PROG1.C中,請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。#include<stdio.h>#pragmawarning(disable:4996)#defineN11doublefun(intxx[],int*yy){}main(){intyy,xx[N]={111,1202,1303,1404,1505,2611,2712,2813,2914,3202,4222);doublepjz;voidNONO();pjz=fun(xx,&yy);printf("yy=%d,pjz=%.2lf\n",yy,pjz);NONO();}voidNONO(){/*請在此函數(shù)內(nèi)打開文件,輸入測試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/inti,j,xx[N],yy;doublepjz;FILE*rf,*wf;rf=fopen("in.dat","r");wf=fopen("out.dat","w");for(i=0;i<10;i++){for(j=0;j<N;j++)fscanf(rf,"%d",&xx[j]);pjz=fun(xx,&yy);fprintf(wf,"%d,%.2lf\n",yy,pjz);}fclose(rf);fclose(wf);}標(biāo)準(zhǔn)答案:doublefun(intxx[],int*yy){inti,odd_count=0,even_count=0;doubleave,odd_sum=0.0,evensum=0.0;for(i=0;i<N;i++){if(xx[i]%2==0){evencount++;evensum+=xx[i];}else{odd_count++;odd_sum+=xx[i];}}if(odd_count>even_count){*yy=odd_count;ave=odd_sum/odd_count;}else{*yy=even_count;ave=even_sum/even_count;}returnave;}知識點(diǎn)解析:程序首先定義循環(huán)變量i,odd_count統(tǒng)計奇數(shù)個數(shù),初值為0,even_count統(tǒng)計偶數(shù)個數(shù),初值為0,odd_sum統(tǒng)計奇數(shù)之和,初值為0.0,even_sum統(tǒng)計偶數(shù)之和,初值為0.0,另外還定義了平均值ave。接著遍歷數(shù)組,對當(dāng)前元素對2求余,若結(jié)果為0,表示是偶數(shù),統(tǒng)計偶數(shù)個數(shù)同時累加到even_sum中;若結(jié)果為1,表示奇數(shù),統(tǒng)計奇數(shù)個數(shù)同時累加到odd_sum中。最后比較odd_count和even_count的大小,若odd_count較大,則求得奇數(shù)的平均值ave,并將odd_count存放到y(tǒng)y指向的地址;若even_count較大,則求得偶數(shù)的平均值ave,并將even_count存放到y(tǒng)y指向的地址,最后將ave作為函數(shù)返回值返回。國家二級C語言機(jī)試(操作題)模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blankl中的解決方案。此解決方案的項目中包含一個源程序文件blank1.c。在此程序中,函數(shù)fun()的功能是將形參s所指字符串中的數(shù)字字符轉(zhuǎn)換成對應(yīng)的數(shù)值,計算出這些數(shù)值的累加和并作為函數(shù)值返回。例如,形參s所指的字符串為abs5def126jkm8,程序執(zhí)行后的輸出結(jié)果為22。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件blank1.c中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdio.h>2#include<string.h>3#include<ctype.h>4intfun(char*s)5{intsum=0;6while(*S){7/*********found*********/8if(isdigit(*s))9sum+=*s-<u>【1】</u>;10/*********found*********/11<u>【2】</u>;12}13/*********found*********/14return<u>【3】</u>;15}16main()17{chars[81];int.n;18printf("\nEnterastring:\n\n");19gets(s);20n=fun(s);21printf("\nTheresultis:%d\n\n",n);22}標(biāo)準(zhǔn)答案:(1)48或’0'(2)s++(3)sum知識點(diǎn)解析:本題把字符串中的數(shù)字字符轉(zhuǎn)換成對應(yīng)的數(shù)值并進(jìn)行累加。填空1:’0'對應(yīng)的ASCⅡ值是48,因此數(shù)字字符轉(zhuǎn)換成對應(yīng)數(shù)值時只要減去48,即該數(shù)字字符對應(yīng)的數(shù)值。故空1處應(yīng)該填48或者’0’。填空2:判斷完一個字符之后,將字符串指針移到下一個位置,故空2處應(yīng)該填s++。填空3:函數(shù)fun()返回累加和sum,故空3處應(yīng)該填sum。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modil中的解決方案。此解決方案的項目中包含一個源程序文件modi1.c。在此程序中,函數(shù)fun()的功能是計算并輸出k以內(nèi)最大的10個能被13或17整除的自然數(shù)之和。k的值由主函數(shù)傳入,若k的值為500,則函數(shù)的值為4622。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:部分源程序在文件modil.c中,不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdio.h>2#include<conio.h>3#include<stdlib.h>4intfun(infk)5{intm=0,mc=0,j;6while((k>=2)&&(mc<10))7{8/*********found*********/9if((k%13=0)||(k%17=0))10{m=m+k;mC++;}11k--;12/*********found*********/13returnm;14}15voidmain()16{system("CLS");17printf("%d\n",fun(500));18}標(biāo)準(zhǔn)答案:(1)if((k%13==0)||(k%17==0))(2)}returnm;知識點(diǎn)解析:(1)c語言中,x能被y整除的表示方法是x%y==0,而不是題目中所表示的x%y=0。所以,if((k%13=0)||(k%17=0))應(yīng)改為if((k%13==0)||(k%17==0))。(2)while循環(huán)缺少"}",此類信息在做題時一定要注意,可以在做題前先運(yùn)行一下程序,這樣明顯的錯誤一般都會有錯誤信息顯示出來。如丟失"}"的錯誤信息是"Compoundstatementmissing}infunctionfun"。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下progl中的解決方案。此解決方案的項目中包含一個源程序文件pmgl.c。在此程序中,編寫函數(shù)fun(),它的功能是求小于形參n且同時能被3與7整除的所有自然數(shù)之和的平方根,并將其作為函數(shù)值返回。例如,若n為1000時,程序輸出應(yīng)為s=153.909064。注意:部分源程序在文件progl.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:1#include<math.h>2#include<stdio.h>3doublefun(intn)4{56}7main()/*主函數(shù)*/8{voidNONO();9printf("s=%f\n",fun(1000));10NONO(),11}12voidNONO()13{/*本函數(shù)用于打開文件、輸入數(shù)據(jù)、調(diào)用函數(shù)、輸出數(shù)據(jù)及關(guān)閉文件*/14FILE*fp,*wf;15inti,n;16doubles;17fp=fopen("in.dat","r");18wf=fopen("out.dat","w");19for(i=0;i<10;i++){20fscanf(fp,"%d",&n);21s=fun(n);22fprintf(wf,"%f\n",s);23}24fclose(fp);25fclose(wf);26}標(biāo)準(zhǔn)答案:1doublefun(intn)2{3doublesum=0.0;4inti;5for(i=21;i<n;i++)6if((i%3==0)&&(i%7==0))7sum+=i;8returnsqrt(sum);9}知識點(diǎn)解析:本題考查算術(shù)運(yùn)算的算法。首先利用一個for循環(huán)判斷小于n且能同時被3和7整除的整數(shù),并將滿足條件的整數(shù)累加到sum。之后調(diào)用sqrt()函數(shù)計算sum的平方根,并將其作為函數(shù)的返回值返回。國家二級C語言機(jī)試(操作題)模擬試卷第3套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blankl中的解決方案。此解決方案的項目中包含一個源程序文件blank1.c。在此程序中,函數(shù)fun()的功能是計算如下公式。并且把計算結(jié)果作為函數(shù)值返回。例如,若形參e的值為1e-3,則函數(shù)返回值為0.551690。請在程序的下劃線處填入正確的內(nèi)容并將下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdio.h>2doublefun(doublee)3{inti,k;doubles,t,x;4s=0;k=1;i=2;5/*********found*********/6x=<u>【1】</u>/4;7/*********found*********/8while(x<u>【2】</u>e)9{s=s+k*x;10k=k*(-1);11t=2*i;12/*********found*********/13x=<u>【3】</u>/(t*t);14i++;15}16returns;17}18main()19{doublee=1e-3;20printf("\nTheresultis:%f\n",fun(e));21}標(biāo)準(zhǔn)答案:(1)3.0或(double)3(2)>(3)(t+1)知識點(diǎn)解析:本題考查:基本算術(shù)運(yùn)算的類型轉(zhuǎn)換。其轉(zhuǎn)換規(guī)則如下。如果雙目運(yùn)算符兩邊運(yùn)算對象的類型一致,則所得結(jié)果的類型與運(yùn)算對象的類型一致。如果雙目運(yùn)算符兩邊運(yùn)算對象的類型不一致,則系統(tǒng)將自動進(jìn)行類型轉(zhuǎn)換,使運(yùn)算符兩邊運(yùn)算對象的類型達(dá)到一致后,再進(jìn)行運(yùn)算。其類型轉(zhuǎn)換規(guī)則如下表所示。在while循環(huán)語句中,一般考查如何根據(jù)題意確定循環(huán)條件,以及如何通過循環(huán)變量的變化實(shí)現(xiàn)循環(huán)操作。填空1:變量x定義為double型,而運(yùn)算符"/"后面是整型,因此給x賦值時,需要注意數(shù)據(jù)類型,此處應(yīng)為double型。故空1處應(yīng)該填3.0或(double)3。填空2:while循環(huán)語句的循環(huán)條件。根據(jù)題意確定循環(huán)變量應(yīng)大于1e-3,故空2處應(yīng)該填>。填空3:表達(dá)式的通項是(2*i+1)/(2*i)2,由于程序中已定義t=2*i,故空3處應(yīng)該填(t+1)。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modil中的解決方案。此解決方案的項目中包含一個源程序文件modil.c。在此程序中,函數(shù)fun()的功能是求出如下分?jǐn)?shù)序列的前n項之和,和值通過函數(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)!試題程序:1#include(stdlib.h>2#include<conio.h>3#include<stdio.h>4/*********found*********/5voidfun(intn)6{7inta=2,b=1,c,k;8doubles=0.0;9for(k=1;k<=n;k++)10{11/*********found*********/12s=s+(Double)a/b;13c=a;a=a+b;b=c;14}15return(s);16}17voidmain()18{19intn=5;20system("CLS");21printf("\nThevalueoffunctionis:%1f\n",fun(n));22}標(biāo)準(zhǔn)答案:(1)doublefun(intn)(2)s=s+(double)a/b;知識點(diǎn)解析:本題考查:函數(shù)定義。函數(shù)定義的一般形式為"類型標(biāo)識符函數(shù)名(形參列表)",其中類型標(biāo)識符用來說明函數(shù)的類型,函數(shù)的類型實(shí)際上是函數(shù)返回值的類型。(1)由語句"return(s);"和變量s定義為double型可知,該函數(shù)定義時其類型為double型。(2)注意數(shù)據(jù)類型double的書寫格式。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下progl中的解決方案。此解決方案的項目中包含一個源程序文件progl.c。在此程序中,請編寫函數(shù)fun(),其功能是找出2×M整型二維數(shù)組中最大元素的值,并將此值返回調(diào)用函數(shù)。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:1#defineM42#include<stdio.h>3intfun(inta[][M])4{56}7voidmain()8{9intarr[2][M]={5,8,3,45,76,-4,12,82};10printf("max=%d\n",fun(arr));11}標(biāo)準(zhǔn)答案:1intfun(inta[][M])2{3inti,j,max=a[0][0];4/*對二維數(shù)組進(jìn)行遍歷*/5for(i=0;i<2,i++)6for(j=0;j知識點(diǎn)解析:本題考查:求數(shù)組的最大值,需運(yùn)用循環(huán)語句。因為數(shù)組是二維數(shù)組,所以應(yīng)使用兩層for循環(huán)嵌套。使用for循環(huán)語句時需注意循環(huán)變量的取值范圍。此類求最大值或最小值的問題,可以采用逐個比較的方式。遍歷數(shù)組中所有元素,從中找出數(shù)組的最大值或最小值。首先定義變量max來存放數(shù)組的第1個元素的值,然后利用for循環(huán)逐個找出數(shù)組中的元素,并與變量max比較。如果元素值大于max,則將該值賦給max。循環(huán)結(jié)束后max的值即為數(shù)組最大值。最后將該值返回。該類題目考查較多,需要掌握逐個比較的方法。對于m×n二維數(shù)組,采用逐個查找的方法,代碼實(shí)現(xiàn)如下:1for(i=0;i國家二級C語言機(jī)試(操作題)模擬試卷第4套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項目中包含一個源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:利用指針數(shù)組對形參ss所指字符串?dāng)?shù)組中的字符串按由長到短的順序排序,并輸出排序結(jié)果。ss所指字符串?dāng)?shù)組中共有N個字符串,且串長小于M。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<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("\nThestringaftersortingbylength:\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]);printf("\n");fun(ch);}標(biāo)準(zhǔn)答案:(1)i(2)ps[j](3)tp知識點(diǎn)解析:本題是按字符串的長短進(jìn)行排序。填空1:外循環(huán)每循環(huán)一次,k應(yīng)保存當(dāng)前的i值,所以應(yīng)填i。填空2:使用內(nèi)循環(huán)對i+1后面的字符串長度進(jìn)行比較,所以應(yīng)填ps[j]。填空3:此處的作用是交換兩個變量的值,所以應(yīng)填tp。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項目中包含一個源程序文件modi1.c。在此程序中,已知一個數(shù)列從0項開始的前3項:0、0、1,以后的各項都是其相鄰的前3項之和。下列給定的程序中,函數(shù)fun的功能是:計算并輸出該數(shù)列前n項的平方根之和sum。n的值通過形參傳入。例如,當(dāng)n=10時,程序的輸出結(jié)果應(yīng)為23.197745。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<math.h>/*****************/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;知識點(diǎn)解析:(1)根據(jù)函數(shù)的返回值可知函數(shù):fun應(yīng)定義為double類型。(2)語法錯誤,缺分號。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun,它的功能是計算下列級數(shù)和,和值由函數(shù)值返回。例如,當(dāng)n=10,x=0.3時,函數(shù)值為1.349859。注意:部分源程序在文件PROG1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#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));/*****************/wf=fopen("out.dat","w");fprintf(wf,"%f",fun(0.3,10));fclose(wf);/*****************/}標(biāo)準(zhǔn)答案:doublefun(doublex,intn){inti;doubles=1.0,s1=1.0;for(i=1;i<=n;i++){s1=s1*i;/*各項中的階乘*/s=s+pow(x,i)/s1;/*按公式求出*/}returns;}知識點(diǎn)解析:程序定義了變量s1和s,s1表示每項的分母(即各項的階乘),s存放累加和。循環(huán)語句控制累加的次數(shù),在循環(huán)體中進(jìn)行階乘和累加操作,累加的結(jié)果存入中。此處使用了求乘方函數(shù)pow(x,i),其含義是求x的i次方的值。國家二級C語言機(jī)試(操作題)模擬試卷第5套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項目中包含一個源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:根據(jù)形參i的值返回某個函數(shù)的值。當(dāng)調(diào)用正確時,程序輸出:x1=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>doublef1(doublex){returnx*x;)doublef2(doublex,doubley){returnx*y;}/*********found*********/【1】fun(inti,doublex,doubley){if(i==1)/*********found*********/return【2】(x);else/*********found*********/return【3】(x,y);}main(){doublex1=5,x2=3,r;r=fun(1,x1,x2);r+=fun(2,x1,x2);printf("\nx1=%f,x2=%f,x1*x1+x1*x2=%f\n\n",x1,x2,r);}標(biāo)準(zhǔn)答案:(1)double(2)f1(3)f2知識點(diǎn)解析:填空1:本空函數(shù)fun的返回值,根據(jù)return可知,不論返回的是f1還是f2,它們的返回值均為double型的,故此空應(yīng)該填寫double。填空2:因為函數(shù)fun的功能是根據(jù)形參i的值返回某個函數(shù)的值,當(dāng)i等于1時,應(yīng)該返回的是n。填空3:如果不滿足if的話,應(yīng)該返回的是f2。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項目中包含一個源程序文件modi1.c。在此程序中,函數(shù)fun的功能是:比較兩個字符串,將長的字符串的首地址作為函數(shù)值返回。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<conio.h>#include<stdio.h>/*********found*********/doublefun(char*s,char*t){ints1=0,t1=0;char*ss,*tt;ss=S;tt=t;while(*ss){s1++;/*********found*********/(*ss)++;}while(*tt){t1++;/*********found*********/(*tt)++;}if(t1>s1)returnt;elsereturns;}voidmain(){chara[80],b[80];printf("\nEnterastring:");gets(a);printf("\nEnterastringagain:");gets(b);printf("\nThelongeris:\n\n%s\n",fun(a,b));}標(biāo)準(zhǔn)答案:(1)char*fun(char*s,char*t)(2)ss++;(3)tt++;知識點(diǎn)解析:(1)在主函數(shù)的輸出語句中,函數(shù)fun是以字符三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun,其功能是:移動字符串中的內(nèi)容,移動的規(guī)則是把第1~m個字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。例如,字符串中原有的內(nèi)容為“ABCDEFGHIJK”,m的值為3,移動后,字符串中的內(nèi)容應(yīng)該是“DEFGHUKABC”。注意:部分源程序在文件PROG1.C中。請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#include<string.h>#defineN80voidfun(char*w,intm){}voidmain(){FILE*wf;chara[N]="ABCDEFGHIJK",b[N]*"ABCDEFGHIJK";intm;printf("Theoriginastring:\n");puts(a);printf("\n\nEnterm:");scanf("%d",&m);fun(a,m);printf("\nThestringaftermoving:\n”);puts(a);printf("\n\n");/*********found*********/wf=fopen("out.dat","w");fun(b,3);fprintf(wf,"%s",b);fclose(wf);/*********found*********/}標(biāo)準(zhǔn)答案:voidfun(char*w,intm){inti,j;chart;for(i=1;i<=m;i++)/*進(jìn)行m次的循環(huán)左移*/{t=w[0];for(j=1;w[j]!=’\0’;jj++)/*從第2個字符開始以后的每個字符都依次前移一個字符*/w[j﹣1]=w[j];w[j﹣1]=t;/*將第1個字符放到最后一個字符中*/}}知識點(diǎn)解析:本題應(yīng)采用“循環(huán)左移”的算法,多層循環(huán)用于控制移動的字符的個數(shù),即需進(jìn)行多少次循環(huán),內(nèi)嵌循環(huán)的作用是將從第2個字符以后的每個字符依次前移一個位置,最后將第1個字符放到最后一個字符中。國家二級C語言機(jī)試(操作題)模擬試卷第6套一、程序填空題(本題共1題,每題1.0分,共1分。)1、下列給定程序中,函數(shù)fun的功能是:把形參s所指字符串中下標(biāo)為奇數(shù)的字符右移到下一個奇數(shù)位置,最右邊被移出字符串的字符繞回放到第一個奇數(shù)位置,下標(biāo)為偶數(shù)的字符不動(注:字符串的長度大于等于2)。例如,形參s所指字符串為″abcdefgh″,執(zhí)行結(jié)果為″ahcbedgf″。請在下畫線處填入正確的內(nèi)容并將下畫線刪除,使程序得出正確的結(jié)果。注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>voidfun(char*s){inti,n,k;charc;n=0:for(i=0;s[i]!=′\0′;i++)n++;/******found******/if(n%2==0)k=n—____1____;elsek=n—2;/******found******/c=____2____;for(i=k—2;i>=1;i=i—2)s[i+2]=s[i];/******found******/s[1]=____3____;}main(){chars[80]=″abcdefgh″;printf(″\nTheoriginalstringis:%s\n″,s);fun(s);printf(″\nTheresultis:%s\n″,s);}標(biāo)準(zhǔn)答案:(1)1(2)s[k]或*(s+k)(3)c知識點(diǎn)解析:本題考查:指針型變量;if…else語句;賦值語句。填空1:函數(shù)fun中變量n統(tǒng)計字符的長度,假如長度為偶數(shù),則k=n—1;假如長度為奇數(shù),則k=n—2,使得下標(biāo)為奇數(shù)的最后一個元素有效(不是′\0′)。填空2:了解變量k的作用后,則將最右邊的奇數(shù)位置的數(shù)賦值給變量c。填空3:將最后一個下標(biāo)為奇數(shù)的元素移到第一個奇數(shù)位置。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:將長整型數(shù)中各位上為偶數(shù)的數(shù)依次取出,構(gòu)成一個新數(shù)放在t中。高位仍在高位,低位仍在低位。例如,當(dāng)s中的數(shù)為87653142時,t中的數(shù)為8642。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>voidfun(longs.long*t){intd;longs1=1;*t=0;while(s>0){d=s%10;/******found******/if(d%2=0){*t=d*sl+*t;sl*=10;}/******found******/s\=10;}}main(){longs,t;printf(″\nPleaseenters:″);scanf(″%ld″,&s);fun(s,&t);printf(″Theresultis:%ld\n″,t);}標(biāo)準(zhǔn)答案:(1)if(d%2==0)(2)s/=10;知識點(diǎn)解析:本題考查:if語句條件表達(dá)式,注意“==”和“=”的區(qū)別;除法運(yùn)算符“/”。(1)分析程序,在if的條件表達(dá)式中,不應(yīng)該出現(xiàn)賦值運(yùn)算符“=”,應(yīng)使用“==”運(yùn)算符。(2)這里是一個運(yùn)算符的錯誤,表示除法的運(yùn)算符是“/”。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)voidfun(intx,intpp[],int*n),它的功能是:求出能整除x且不是偶數(shù)的各整數(shù),并按從小到大的順序放在pp所指的數(shù)組中,這些除數(shù)的個數(shù)通過形參n返回。例如,若x中的值為30,則有4個數(shù)符合要求,它們是1、3、5、15。注意:請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>#include<stdlib.h>voidfun(intx,intpp[],int*n){}voidmain(){FILE*wf;intx,aa[1000],n,i;system(″CLS″);printf(″\nPleaseenteranintegernumber:\n″);scanf(″%d″,&x);fun(x,aa,&n);for(i=0;i<n;i++)printf(″%d″,aa[i]);printf(″\n″);/******found******/wf=fopen(″out.dat″,″w″);fun(30,aa,&n);for(i=0;i<n;i++)fprintf(wf,″%d″,aa[i]);fclose(wf);/******found******/}標(biāo)準(zhǔn)答案:voidfun(intx,intpp[],int*n){inti,j=0;for(i=1;i<=x;i=i+2)/*i的初始值為1,步長為2,確保i為奇數(shù)*/if(x%i==0)/*將能整除x的數(shù)存入數(shù)組pp中*/pp[j++]=i;*n=j;/*傳回滿足條件的數(shù)的個數(shù)*/}知識點(diǎn)解析:本題考查:偶數(shù)的判定方法;整除的實(shí)現(xiàn)。本題題干信息是:能整除x且不是偶數(shù)的所有整數(shù)。循環(huán)語句中變量i從1開始且每次增2,所以i始終是奇數(shù)。整除的方法,在前面已經(jīng)講過多次,這里就不再贅述了。對于本題目要求的不是偶數(shù)的判定方法,即該數(shù)對2求余不為0。除以上方法外,還可以通過for循環(huán)語句直接把偶數(shù)篩出去,確保參與操作的數(shù)均為奇數(shù)。國家二級C語言機(jī)試(操作題)模擬試卷第7套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項目中包含一個源程序文件blank1.c。在此程序的主函數(shù)中,已給出由結(jié)構(gòu)體構(gòu)成的鏈表節(jié)點(diǎn)a、b、c,各節(jié)點(diǎn)的數(shù)據(jù)域中均存入字符,函數(shù)fun()的作用是:將a、b、c三個節(jié)點(diǎn)鏈接成一個單向鏈表,并輸出鏈表節(jié)點(diǎn)中的數(shù)據(jù)。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除。使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stctio.h>typedefstructlist{chardata;structlist*next;}Q;voidfun(Q*pa,Q*pb,Q*pc){Q*p;/*********found*********/pa﹣>next=【1】;pb﹣>next=pc;p=Pa;while(p){/*********found*********/print=f("%c",【2】);/*********found*********/p=【3】;}printf("\n");}main(){Qa,b,c;a.data=’E’;b.data=’F’;c.data=’G’;C.next=NULL;fun(&a,&b,&c);}標(biāo)準(zhǔn)答案:(1)pb(2)p﹣>data(3)p﹣>next知識點(diǎn)解析:填空1:將三個節(jié)點(diǎn)連接起來,即將pa的指針域指向pb,pb的指針域指向pc。填空2:輸出鏈表節(jié)點(diǎn)中的數(shù)據(jù),表示為p﹣>datao填空3:指針后移,指向下一個節(jié)點(diǎn),即p=p﹣>nexto二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項目中包含一個源程序文件modi1.c。在此程序中,函數(shù)fun()的功能是統(tǒng)計s所指一維數(shù)組中0的個數(shù)(存在變量zero中)和1的個數(shù)(存在變量one中),并輸出結(jié)果。請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#include<stdio.h>voidfun(int*s,intn){/*********found*********/inti,one=0,zero;for(i=0;i<n;i++)/*********found*********/switch(s[i]);{/*********found*********/case0:zero++;case1:one++;}printf("orle:%dzero:%d\n",one,zero);}main(){inta[20]={1,1,1,0,1,0,0,0,1,0,0,1,1,0,0,1,0,1,0,0,}n=20;fun(a,n);}標(biāo)準(zhǔn)答案:(1)inti,one=0,zero=0;(2)switch(s[i])(3)case0:zero++;break;知識點(diǎn)解析:(1)變量zero用來統(tǒng)計數(shù)字0的個數(shù),應(yīng)將其初始化為0。(2)語法錯誤,switch語句后不加分號。(3)當(dāng)數(shù)字為0時,變量zero加1,此時應(yīng)使用break語句跳出switch語句,進(jìn)行下一次循環(huán),否則會繼續(xù)執(zhí)行case1語句,使程序不能得出正確結(jié)果。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun,其功能是將形參s所指字符串放入形參a所指的字符數(shù)組中,使a中存放同樣的字符串。說明:不得使用系統(tǒng)提供的字符串函數(shù)。注意:部分源程序存在PROG1.C中,請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun指定的部位填入所編寫的若干語句。試題程序:#include<stdio.h>#defineN20voidNONO();voidfun(char*a,char*s){}main(){chars1[N],*s2="abcdefghijk";fun(s1,s2);printf("%s\n”",s1);printf("%s\n",s2);NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*fp,*wf;inti;chars1[256],s2[256];fp=fopen("in.dat”,"r");wf=fopen("out.dat","w");for(i=0;i<10;i++){fgets(s2,255,fp);fun(s1,s2);fprintf(wf,"%s",s1);}fclose(fp);fclose(wf);}標(biāo)準(zhǔn)答案:voidfun(char*a,char*s){while(*s!=’\0’){*a=*s;a++;s++;}*a=’\0’;}知識點(diǎn)解析:要將s所指的字符串存入a所指的字符串中,程序要求不能使用系統(tǒng)提供的字符串函數(shù),本題可以使用循環(huán)語句,依次取出a所指字符串中的元素,將其存人s所指的字符串中,最后為s所指的字符串添加結(jié)束標(biāo)識’\0’。國家二級C語言機(jī)試(操作題)模擬試卷第8套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blankl中的解決方案。此解決方案的項目中包含一個源程序文件blank1.c。在此程序中,函數(shù)fun()的功能是統(tǒng)計形參s所指的字符串中數(shù)字字符出現(xiàn)的次數(shù),并將結(jié)果存放在形參t所指的變量中,最后在主函數(shù)中輸出。例如,若形參s所指的字符串為"abcdef35adgh3kjsdf7",則輸出結(jié)果為4。請在程序的下劃線處填入正確內(nèi)容并將下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdio.h>2voidfun(char*s,int*t)3{inti,n;4n=0;5/*********found*********/6for(i=0;<u>【1】</u>!=0;i++)7/*********found*********/8if(s[i]>=’0’&&s[i]<=<u>【2】</u>)9n++;10/*********found*********/11<u>【3】</u>;12}13main()14{chars[80]="abcdef35adgh3kjsdf7";15intt;16printf("\nTheoriginalstringis:%s\n",s);17fun(s,&t);18printf("\nTheresultis:%d\n",t);19}標(biāo)準(zhǔn)答案:(1)s[j](2)'9’(3)*t=n知識點(diǎn)解析:填空1:通過for循環(huán)語句遍歷字符串s,遍歷至字符串結(jié)束標(biāo)志,退出循環(huán)。變量i用來存放字符型數(shù)組下標(biāo),故空1處應(yīng)該填s[i]。填空2:題目要求判斷數(shù)字字符在0~9。故空2處應(yīng)該填'9'。填空3:將數(shù)字字符個數(shù)n存入變量t中,此處需注意變量t是指針變量。故空3處應(yīng)該填*t=n。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modil中的解決方案。此解決方案的項目中包含一個源程序文件modil.c。在此程序中,函數(shù)fun()的功能是通過某種方式實(shí)現(xiàn)兩個變量值的交換,規(guī)定不允許增加語句和表達(dá)式。例如,變量a中的值原為8,b中的值原為3,程序運(yùn)行后a中的值為3,b中的值為8。請改正程序中的錯誤,使它得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdlib.h>2#include<conio.h>3#include<stdio.h>4intfun(int*x,infy)5{6intt;7/*********found*********/8t=x;x=y;9/*********found*********/10return(y);11}12voidmain()13{14inta=3,b=8;15system("CLS");16printf("%d%d\n",a,b);17b=fun(&a,b);18printf("%d%d\n",a,b);19}標(biāo)準(zhǔn)答案:(1)t=*x;*x=y;(2)return(t);或returnt;知識點(diǎn)解析:本題考查:指針型變量的使用,通過return語句完成函數(shù)值的返回。(1)首先,定義變量t作為中間變量,然后進(jìn)行數(shù)據(jù)交換,注意參數(shù)x是指針變量,交換時應(yīng)使用*x。(2)根據(jù)代碼b=fun(&a,b);,可以知道返回值將賦給變量b,而b中應(yīng)存放交換前*x中的值,所以函數(shù)應(yīng)返回變量t。三、程序設(shè)計題(本題共1題,每題1.0分,共1分。)3、使用Vc++2010打開考生文件夾下progl中的解決方案。此解決方案的項目中包含一個源程序文件progl.c。在此程序中,編寫函數(shù)fun(),其功能是求出1~1000能被7或11整除,但不能同時被7和11整除的所有整數(shù),并將其放在a所指的數(shù)組中,通過n返回這些數(shù)的個數(shù)。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:1#include<stdlib.h>2#include<conio.h>3#include<stdio.h>4voidfun(int*a,int*n)5{67}8voidmain()9{10intaa[1000],n,k;11system("CLS");12fun(aa,&n);13for(k=0;k<13;k++)14if((k+1)%10==0)15{printf("%5d",aa[k]);16printf("\n");}/*一行寫9個數(shù)*/17else18printf("%5d",aa[k]);19}標(biāo)準(zhǔn)答案:1voidfun(int*a,int*n)2{3inti,j=0;4for(i=1;i<=1000;i++)/*求1~1000能被7或11整除但不能同時被7和11整除的所有整數(shù),并將其放入數(shù)組a中*/5if((i%7==0||i%11==0)&&i%77!=0}6a[j++]=i;7*n=j;/*傳回滿足條件的數(shù)的個數(shù)*/8}知識點(diǎn)解析:if語句用來判斷能被7整除或者能被11整除,但又不能同時被7和11整除的數(shù)。此處需充分理解"邏輯與"和"邏輯或"的區(qū)別。fof循環(huán)語句的循環(huán)條件用來控制循環(huán)變量取值范圍。該題需要運(yùn)用循環(huán)判斷結(jié)構(gòu)來實(shí)現(xiàn),其中循環(huán)語句比較容易,只要確定循環(huán)變量的范圍即可。題目要求找出能被7或11整除,但不能同時被7和11整除的所有整數(shù)。能同時被7和11整除的整數(shù)一定能被77整除,且不能被77整除的數(shù)不一定就是能被7或11整除的數(shù)。因而,可得出程序中if語句的條件表達(dá)式。注意(i%7==0||i%11==0)兩邊必須要有圓括號。國家二級C語言機(jī)試(操作題)模擬試卷第9套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項目中包含一個源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:找出N×N矩陣中每列元素中的最大值,并按順序依次存放于形參b所指的一維數(shù)組中。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論