版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
國家二級C語言機試(操作題)模擬試卷28(共8套)(共24題)國家二級C語言機試(操作題)模擬試卷第1套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blankl中的解決方案。此解決方案的項目中包含一個源程序文件blank1.c。在此程序中,函數(shù)fun()的功能是將形參n所指變量中各位上為偶數(shù)的數(shù)去掉,剩余的數(shù)按原來從高位到低位的順序組成一個新數(shù),并通過形參指針n傳回所指變量。例如,若輸入一個數(shù)27638496,則新數(shù)為739。請在程序的下劃線處填入正確的內(nèi)容并將下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdio.h>2voidfun(unsignedlong*n)3{unsignedlongx=0,i;intt;4i=1;5while(*n)6/*********found*********/7{t=*n%<u>【1】</u>;8/*********found*********/9if(t%2!=<u>【2】</u>)10{x=x+t*i;i=i*10;}11*n=*n/10;12}13/*********found*********/14*n=<u>【3】</u>;15}16main()17{unsignedlongn=-1;18while(n>99999999||n<0)19{printf("Pleaseinput(0<n<100000000):");20scanf("%1d",&n);}21fun(&n);22print("\nTheresultis:%1d\n",n);12}標準答案:(1)10(2)0(3)x知識點解析:填空1:通過t對10求余,取出該數(shù)值的個位數(shù)。故空1處應該填10。填空2:通過if條件語句實現(xiàn)奇偶數(shù)的判定。如果條件表達式對2求余為0則為偶數(shù),否則為奇數(shù)。故空2處應該填0。填空3:最后將新生成的數(shù)x賦給形參n指向的變量。故空3處應該填x。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項目中包含一個源程序文件modi1.c。在此程序中,函數(shù)fun()的功能是計算n!。例如,當n=5時,則輸出120.000000。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動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!=%1f\n\n",n,fun(n));20}標準答案:(1)if(n==0)(2)result*=n--;或{result*=n;n--;}知識點解析:(1)這里是一個簡單的格式錯誤,if條件判斷語句應該以圓括號標識。(2)階乘是指從1~n的連續(xù)自然數(shù)相乘的積。如5!=1×2×3×4×5。所以應修改為result*=n--;。三、程序設計題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下progl中的解決方案。此解決方案的項目中包含一個源程序文件progl.c。在此程序中,請編寫函數(shù)fun(),其功能是將一個數(shù)字字符串轉(zhuǎn)換成一個整數(shù)(不得調(diào)用C語言提供的將字符串轉(zhuǎn)換成整數(shù)的函數(shù))。例如,若輸入字符串"-1234",則函數(shù)把它轉(zhuǎn)換成整數(shù)值-1234。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:1#include<stdio.h>2#include<string.h>3longfun(char*p)4{56}7voidmain()8{9chars[6];10longn;11printf("Enterastring:\n");12gets(s);13n=fun(s);14printf("%1d\n",n);15}標準答案:1longfun(char*p)2{3longn=0;4intflag=1;5if(*p==’-’)/*負數(shù)時置flag為-1*/6{p++;flag=-1;}7elseif(*p=='+’)/*正數(shù)時置flag為1*/8p++;9while('p!='\0')10{n=n*1O+*p-’0';/*將字符串轉(zhuǎn)換成相應的整數(shù)*/11p++;12}13returnn*flag;14}知識點解析:if語句的作用是判斷該字符串為正數(shù)還是負數(shù),while循環(huán)的作用是將字符串轉(zhuǎn)換成相應的整數(shù)。注意:*p是一個字符(如'9’、'4'),并不是一個數(shù),要將其轉(zhuǎn)換成相應的數(shù)字需令其減去’0’(而不是'\0'),即*p-'0'就得到*p這個字符的相應數(shù)字,如’0'-'0'=0、’8'-'0'=8等。國家二級C語言機試(操作題)模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項目中包含一個源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:用函數(shù)指針指向要調(diào)用的函數(shù),并進行調(diào)用。規(guī)定在【2】處使f指向函數(shù)f1,在【3】處使f指向函數(shù)f2。當調(diào)用正確時,程序輸出:x1=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000。注意:部分源程序在文件BLANKl.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>doublef1(doublex){returnx*x;}doublef2(doublex,doubley){returnx*y;)doublefun(doublea,doubleb){/*********found*********/[【1】(*f)();doubler1,r2;/*********found*********/f=【2】;r1=f(a);/*********found*********/f=【3】;r2=(*f)(a,b);returnr1+r2;}main(){doublex1=5,x2=3,r;r=fun(x1,x2);printf("\nx1=%f,x2=%f,x1*x1+x1*x2=%f\n",x1,x2,r);}標準答案:(1)double(2)f1(3)f2知識點解析:填空1:(*f)()代表一個指向函數(shù)的指針變量,而本題所被調(diào)用的f1、f2兩函數(shù)的返回值均為double型,因而此空應該填寫double。填空2:因為在給函數(shù)指針變量賦值時,只需給出函數(shù)名而不必給出參數(shù),因而此空應該填寫n。填空3:同填空2,此空應該填寫f2。相關(guān)知識點:(1)指向函數(shù)的指針變量的一般定義形式為:數(shù)據(jù)類型(*指針變量名)();(2)函數(shù)的調(diào)用可以通過函數(shù)名調(diào)用,也可以通過函數(shù)指針調(diào)用。(3)在給函數(shù)指針變量賦值時,只需給出函數(shù)名而不必給出參數(shù)。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項目中包含一個源程序文件modi1.c。此程序建立了一個帶頭節(jié)點的單向鏈表,并用隨機函數(shù)為各節(jié)點賦值。函數(shù)fun的功能是將單向鏈表節(jié)點(不包括頭節(jié)點)數(shù)據(jù)域為偶數(shù)的值累加起來,并且作為函數(shù)值返回。請改正函數(shù)fun中的錯誤,使它能得出正確的結(jié)果。注意:部分源程序在文件MODI1.C中,不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>#include<conio.h>#include<stdlib.h>typedefstructaa{intdata;dtructaa*next;}NODE;intfun(NODE*h){intsum=0;NODE*p;p=h一>next;/*********found*********/while(P一>next){if(P一>data%2==0)sum+=p一>data;/*********found*********/p=h一>next;}returnsum;}NODE*creatlink(intn){NODE*h,*p,*s;inti;h=P=(NODE*)malloc(sizeof(NODE));for(i=1;i<n;i++){s=(NODE*)malloc(sizeof(NODE));s一>data=rand()%16;s一>next=P一>next;p一>next=s;p=p一>next;}p一>next=NULL;returnh;}outlink(NODE*h){NODE*p;p=h一>next;printf("\n\nTheLIST:\n\nHEAD");while(p){printf("一>%d",p一>data);P=P一>next;)printf("\n");}voidmain(){NODE*head;intsum;system("CLS");head=creatlink(10);outlink(head);sum=fun(head);printf("\nSUM=%d",sum);}標準答案:(1)while(p!=NULL)(2)p=p一>next;知識點解析:(1)判斷當前指針p指向的節(jié)點是否存在,若存在則對該節(jié)點數(shù)據(jù)域進行判斷操作。(2)判斷結(jié)束后指針指向下一個節(jié)點。三、程序設計題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun,該函數(shù)的功能是:判斷字符串是否為回文,若是,則函數(shù)返回1,主函數(shù)中輸出“YES”,否則返回0,主函數(shù)中輸出“NO”?;匚氖侵疙樧x和倒讀都一樣的字符串。例如,字符串LEVEL是回文,而字符串123312就不是回文。注意:部分源程序在文件PROG1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#defineN80intfun(char*str){}main(){chars[N];FILE*out;char*test[]={"1234321","123421","123321","abcdCBA"};inti;printf("Enterastring:");gets(s);printf("\n\n");puts(s);if(fun(s))printf("YES\n");elseprintf("NO\n");/*****************/out=fopen("out.dat","w");for(i=0;i<4;i++)if(fun(test[i]))fprintf(out,"YES\n");elsefprintf(out,"NO\n");fclose(out);/*****************/}標準答案:intfun(char=*str){inti,n=0,fg=1;Char*p=str;while(*p)/*將指針p置位到字符串末尾,并統(tǒng)計字符數(shù)*/{n++;p++;}for(i=0;i<n/2;i++)/*循環(huán)比較字符*/if(str[i]===str[n-1-i]);/*相同,什么都不作//else/*不同,直接跳出循環(huán)*/{fg=0;break;}returnfg;}知識點解析:判斷回文就是將第一個字符與最后一個字符比較,第二個字符與倒數(shù)第二個字符進行比較,依此類推,直到中間的字符,如果比較的結(jié)果都相同,那么這個字符串就是回文,否則不是。程序中循環(huán)語句用來遍歷字符串,條件語句用來判斷當前字符與對應位置的字符是否相同。國家二級C語言機試(操作題)模擬試卷第3套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序的主函數(shù)中,已給出由結(jié)構(gòu)體構(gòu)成的鏈表結(jié)點a、b、c,各結(jié)點的數(shù)據(jù)域中均存入字符,函數(shù)fun()的作用是:將a、b、c三個結(jié)點鏈接成一個單向鏈表,并輸出鏈表結(jié)點中的數(shù)據(jù)。請在程序的下畫線處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。注意:不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.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******/printf(″%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);}標準答案:(1)pb(2)p—>data(3)p—>next知識點解析:填空1:將三個結(jié)點連接起來,即將pa的指針域指向pb,pb的指針域指向pc。填空2:輸出鏈表結(jié)點中的數(shù)據(jù),表示為p—>data。填空3:指針后移,指向下一個結(jié)點,即p=p—>next。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:計算整數(shù)n的階乘。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#include<stdio.h>doublefun(intn){doubleresult=1.0;while(n>1&&n<170)/******found******/result*=——n;/******found******/return;}voidmain(){intn:printf(″Enteraninteger:″);scanf(″%d″,&n);printf(″\n%d!=%lg\n″,n,fun(n));}標準答案:(1)result*=n——;(2)returnresult;知識點解析:本題考查:復合賦值運算;通過return語句完成函數(shù)值的返回。該題采用循環(huán)語句計算n的階乘。當n大于1且小于170時,令result與n相乘,同時n自動減1,循環(huán)至n=2(n=1時無須相乘)。最后將階乘的積result返回給主函數(shù)。三、程序設計題(本題共1題,每題1.0分,共1分。)3、編寫函數(shù)fun,其功能是:將兩個兩位數(shù)的正整數(shù)a、b合并成一個整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個位數(shù)依次放在c數(shù)的十位和千位上,b數(shù)的十位和個位數(shù)依次放在c數(shù)的百位和個位上。例如,當a=45,b=12時,調(diào)用該函數(shù)后,c=5142。注意:請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>voidfun(inta,intb,long*c){}main(){inta,b;longc;voidNONO();printf(″Inputa,b:″);scanf(″%d%d″,&a,&b);fun(a,b,&c);printf(″Theresultis:%d\n″,c);NONO();}voidNONO()/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/{FILE*rf,*wf;inti,a,b;longc;rf=fopen(″in.dat″,″r″);wf=fopen(″out.dat″,″w″);for(i=0;i<10;i++){fscanf(rf,″%d,%d″,&a,&b);fun(a,b,&c);fprintf(wf,″a=%d,b=%d,c=%ld\n″,a,b,c);}fclose(rf);fclose(wf);}標準答案:voidfun(inta,intb,long*c)*c=b%10+(a/10)*10+(b/10)*100+(a%10)*1000;知識點解析:本題考查:如何取出數(shù)值n的各個位;知道數(shù)值n的各個位,叉如何表示該數(shù)值;指針型變量的使用。本題中主要的問題是如何取出a和b的個位數(shù)和十位數(shù),取出后如何表示成c中相應的位數(shù)。由于a和b都是只有兩位的整數(shù),所以分別對它們除10可得到它們的十位數(shù),分別用10對它們求余可得到它們的個位數(shù)。得到后對應乘以1000、100、10、1就可得到c的千位數(shù)、百位數(shù)、十位數(shù)和個位數(shù)。注意:使用c時要進行指針運算。知道兩位數(shù)數(shù)值n,需要表示個位和十位,采用求余和除法操作,如n%10(取個位)、n/10(取十位)。國家二級C語言機試(操作題)模擬試卷第4套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項目中包含一個源程序文件blank1.c。在此程序中,函數(shù)fun的功能是:計算如下公式直到||≤10-3,并且把計算結(jié)果作為函數(shù)值返回。例如,若形參e的值為le﹣3,則函數(shù)返回值為0.551690。請在程序的下劃線處填入正確的內(nèi)容并將下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>doublefun(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=1e﹣3;printf("\nTheresultis:%f\n",fun(e));}標準答案:(1)3.0或(double)3(2)>(3)(t+1)知識點解析:填空1:變量x定義為double類型,而運算符“/”后面是整型數(shù),因此給x賦值時,需要注意數(shù)據(jù)類型,此處不能將3.0寫成3。填空2:while循環(huán)語句的循環(huán)條件。根據(jù)題意確定循環(huán)變量應大于1e﹣3,因此此處應填“>”。填空3:表達式的通項是(2*i+1)/(2*i)2,由于程序中已定義t=2*i,所以此處應該填寫(t+1)。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項目中包含一個源程序文件modi1.c。在此程序中,函數(shù)fun的功能是:求出如下分數(shù)序列的前n項之和,和值通過函數(shù)值返回。例如,若n=5,則應輸出8.391667。請改正程序中的錯誤,使其得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>/*********found*********/voidfun(intn){inta=2,b=1,c,k;doubles=0.0;for(k=1;k<=n;k++){/*********found*********/s=s+(Double)a/b;c=a;a=a+b;b=c;}return(s);}voidmain(){intn=5;system("CLS");printf("\nThevalueoffunctionis:%lf\n",fun(n));}標準答案:(1)doublefun(intn)(2)s=s+(double)a/b;知識點解析:(1)由語句“return(s);”和變量s定義為double型可知,該函數(shù)定義時其類型標識符為double類型。(2)注意數(shù)據(jù)類型double的書寫格式。三、程序設計題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun,其功能是:找出2×M整型二維數(shù)組中最大元素的值,并將此值返回調(diào)用函數(shù)。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#defineM4#include<stdio.h>intfun(inta[][M]){}voidmain(){intarr[2][M]={5,8,3,45,76,﹣4,12,82};printf("max=%d\n",fun(arr));}標準答案:intfun(inta[][M]){inti,j,max=a[0][0];/*對二維數(shù)組進行遍歷*/for(i=0;i<2;i++)for(j=0;j<M;j++)if(max<a[i][j])/*將最大值保存在max中*/max=a[i][j];returnmax;}知識點解析:此類求最大值或最小值的問題,可以采用逐個比較的方式,對數(shù)組中所有元素遍歷一遍,從中找出數(shù)組最大值或最小值。首先定義變量max用來存放數(shù)組的第一個元素的值,然后利用for循環(huán)逐個找出數(shù)組中的元素,并與max比較,如果元素值大于max,則將該值賦予max,循環(huán)結(jié)束后max的值即為數(shù)組最大值,最后將該值返回。國家二級C語言機試(操作題)模擬試卷第5套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:有N×N矩陣,根據(jù)給定的m(m=N)值,將每行元素中的值均右移m個位置,左邊置為0。例如,N=3,m=2,有下列矩陣123456789程序執(zhí)行結(jié)果為001004007請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>#defineN4voidfun(int(*t)[N],intm){inti,j;/**********found**********/for(i=0;i<N;___1___){for(j=N-1-m;j>=0;j--)/**********found**********/t[i][j+___2___]=t[i][j];/**********found**********/for(j=0;j<___3___;j++)t[i][j]=0;}}main(){intt[][N]=(21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j,m;printf("\nTheoriginalarray:\n");for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%2d",t[i][j]);printf("\n"),}printf("Inputm(m<=%d):",N);scanf("%d",&m);fun(t,m),printf("\nTheresultis:\n");for(i=0;i<N;i++)(for(j=0;j<N;j++)printf("%2d",t[i][j]);printf("\n");}}標準答案:(1)i++(2)m(3)m知識點解析:函數(shù)fun的功能是將每行元素中的值均右移m個位置。第一空:題目要求對每行元素中的值均右移m個位置。故第一空處循環(huán)變量每次增1,共循環(huán)N次,完成對N行的移位操作,因此,第一空處應為“i++”。第二空:循環(huán)“for([j=N-1-m;j>=0;j--)”是進行行元素中的值右移m個位置,即把t[i][j]元素放置在t[i][j+m]上,因此,第二空應為“m”。第三空:循環(huán)“for(j=0;j<___3___;j++)”是對空出來的位置補0,每行元素的前m位數(shù)據(jù)已經(jīng)移動到后面,每行空處m個元素,因此,第三空為“m”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:計算并輸出high以內(nèi)最大的10個素數(shù)之和。high的值由主函數(shù)傳給fun函數(shù)。若high的值為:100,則函數(shù)的值為:732。請改正程序中的錯誤,使程序能輸出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include<stdio.h>#include<math.h>intfun(inthigh){intsum=0,n=0,j,yeS;/**********found**********/while((high>=2)&&(n<10){yes=1;for(j=2;j<=high/2;j++)if(high%j==0){/**********found**********/yes=0;break}if(yes){sum+=high;n++;}high--;}returnsum;}main(){printf("%d\n",fun(100));}標準答案:(1)while((2<=high)&&(n<10))(2)yes=0;break;知識點解析:函數(shù)的功能是計算并輸出high以內(nèi)最大的10個素數(shù)之和。(1)C語言中左右括弧必須成對出現(xiàn),在第一個標識下“while((high>=2)&&(n<10)”中,顯然缺少一個右括弧,應改為“while((2<=high)&&(n<10))”。(2)在判斷素數(shù)的循環(huán)過程中,只要被判斷的數(shù)能被某數(shù)整除就不是素數(shù),就會跳出判斷循環(huán),在C語言中使用break語句跳出循環(huán),并且C語言中的語句使用分號為結(jié)尾。所以“break”應改為“break;”。三、程序設計題(本題共1題,每題1.0分,共1分。)3、編寫函數(shù)fun,它的功能是:利用以下所示的簡單迭代方法求方程:cos(x)-x=0的一個實根。xn+1=cos(xn)迭代步驟如下:(1)取x1初值為0.0;(2)x0=x1,把x1的值賦給X0:(3)x1=cos(x0),求出一個新的x1z(4)若x0-x1的絕對值小于0.000001,執(zhí)行步。驟(5),否則執(zhí)行步驟(2);(5)所求x1就是方程cos(x)-x=0的一個實根,作為函數(shù)值返回。程序?qū)⑤敵鼋Y(jié)果Root=0.739086。注意:部分源程序在文件PROG1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#include<math.h>#include<stdio.h>doublefun(){}main(){voidNONO();printf("Root=%f\n",fun());NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/FILE*wf;wf=fopen("out.dat","w");fprintf(wf,"%f\n",fun());fclose(wf);}標準答案:floatx0,x1=0.0;do{x0=x1;x1=cos(x0);}while(fabs(x0-x1)>0.000001);returnx1;知識點解析:該程序功能是利用簡單迭代方法求方程的一個實根。牛頓迭代法的求解思想是從一個初始值開始,逐步逼近所求方程的根。其具體過程是:將初始值代入迭代公式,得到一個迭代輸出值。再次迭代時,將上一次的迭代輸出值當作本次的迭代輸入。不斷重復以上過程,直到滿足題目要求為止。牛頓迭代公式為:Xn+1=Xn-f(x)/f’(x)。其求解過程在題干中已經(jīng)給出。國家二級C語言機試(操作題)模擬試卷第6套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blankl中的解決方案。此解決方案的項目中包含一個源程序文件blank1.c。在此程序中,函數(shù)fun()的功能是計算出形參s所指字符串中包含的單詞個數(shù),并將其作為函數(shù)值返回。為便于統(tǒng)計,規(guī)定各單詞之間用空格隔開。例如,形參s所指的字符串為ThisisaClanguageprogram.,函數(shù)的返回值為6。請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:部分源程序在文件blank1.c中。不得增行或刪行.也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdio.h>2intfun(char*s)3{infn=0,flag=0;4while(*s!=’\0’)5{if(*s!=’’&&flag==0){6/*********found*********/7<u>【1】</u>;flag=1;}8/*********found*********/9if(*s=='')flag=<u>【2】</u>;10/*********found*********/11<u>【3】</u>;12}13returnn;14}15main()16{charstr[81];intn;17prIntf("\nEnteralinetext:\n");18gets(str);19n=fun(str);20printf("\nThereare%dwordsinthistext.\n\n",n);21}標準答案:(1)n++(2)0(3)s++知識點解析:填空1:單詞個數(shù)用變量n來統(tǒng)計。當前字母不是空格且flag狀態(tài)標志為0時,可以判斷出現(xiàn)一個新的單詞,則單詞數(shù)加1,將狀態(tài)標志flag置為1,故空1處應該填n++。填空2:當前字符是空格時,flag狀態(tài)標志置0,故空2處應該填0。填空3:判斷完一個字符之后,要繼續(xù)判斷字符串的下一個位置,故空3處應該填s++。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modil中的解決方案。此解決方案的項目中包含一個源程序文件modi1.C。在此程序中,函數(shù)fun()的功能是從n個學生的成績中統(tǒng)計出低于平均分的學生人數(shù),并將此人數(shù)作為函數(shù)值返回,平均分存放在形參aver所指的存儲單元中。例如,輸入8名學生的成績:80.5、60、72、90.5、98、51.5、88、64,則平均分為75.5625,低于平均分的學生人數(shù)為4。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:部分源程序在文件modil.c中,不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:1#include<stdlib.h>2#include<stdio.h>3#include<conio.h>4#defineN205intfun(float*s,intn,float*aver)6{floatave,t=0.0;7intcount=0,k,i;8for(k=0;k<n;k++)9/*********found*********/10t=s[k];11ave=t/n;12for(i=0;i<n;i++)13if(s[i]<ave)count++;14/*********found*********/15*aver=&ave;16returncount;17}18voidmain()19{floats[30],aver;20intm,i;21system("CLS");22printf{"\nPleaseenterm:");23scanf("%d",&m);24printf("\nPleaseenter%dmark:\n",m);25for(i=0;i<m;i++)26scanf("%f",s+i);27printf("\nThenumberofstudents:%d\n",fun(s,m,&aver));28printf("Ave=%f\n"。aver);29}標準答案:(1)t+=s[k];(2)*aver=ave;知識點解析:(1)函數(shù)fun()中,第1個for循環(huán)求數(shù)組s各個元素的平均值。需要將每個元素值累加到變量t,再用變量t除以變量n,所以應改為t+=s[k];。(2)函數(shù)fun()中,第2個for循環(huán)求數(shù)組s小于平均值的元素個數(shù)。循環(huán)結(jié)束后,將平均值保存到變量liver中,所以應改為*aver=ave;。三、程序設計題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下progl中的解決方案。此解決方案的項目中包含一個源程序文件progl.c。在此程序中,請編寫一個函數(shù)fun(),用來求出數(shù)組中值最大的元素在數(shù)組中的下標并將其存放在k所指向的存儲單元中。例如,輸入如下整數(shù):876675896101301401980431451777則輸出結(jié)果為6,980。注意:部分源程序在文件pmg1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:1#include<conio.h>2#include<stdio.h>3#include<stdlib.h>4intfun(int*s,intt,int*k)5{67}8voidmain()9{10FILE*wf;11inta[10]={876,675,896,101,301,401,980,431,451,777},k;12system("CLS");13fun(a,10,&k);14printf("%d,%d\n",k,a[k]);15/*****************/16wf=fopen("out.dat","w");17fprintf(wf,"%d,%d",k,a[k]);18fclose(wf);19/*********found*********/20}標準答案:1intfun(int*s,intt,int*k)2{3inti;4*k=0;/*k所指的數(shù)是數(shù)組的下標*/5for(i=0;i<t;i++)6if(s[*k]<s[i])*k=i;/*找到數(shù)組中值最大的元素,把該元素的下標賦給k所指的數(shù)*/7returns[*k];/*返回數(shù)組的最大元素*/8}知識點解析:本題中使用指針變量k作為值最大的元素的下標。使用時要注意對k進行指針運算。程序一開始讓k指向數(shù)組中的第1個元素,即*k=0。通過for循環(huán)與數(shù)組各個元素比較,找到最大值。國家二級C語言機試(操作題)模擬試卷第7套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項目中包含一個源程序文件blank1.c。在此程序中,函數(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é)果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.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("\nTheoriginaldata:\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");}標準答案:(1)1(2)j++(3)j知識點解析:填空1:根據(jù)題目要求,需進行奇偶數(shù)的判定,可以通過if條件語句來判斷數(shù)組元素是否為奇數(shù),如果元素不能被2整除,則為奇數(shù),所以填入if(a[i]%2==1)。填空2:將為奇數(shù)的元素重新存放到數(shù)組的前面,同時下標增1。填空3:函數(shù)返回值需要返回數(shù)組中奇數(shù)的個數(shù),因此返回變量j。二、程序修改題(本題共1題,每題1.0分,共1分。)2、使用VC++2010打開考生文件夾下modi1中的解決方案。此解決方案的項目中包含一個源程序文件modi1.c。在此程序中,函數(shù)fun的功能是:求兩個非零正整數(shù)的最大公約數(shù),并作為函數(shù)值返回。例如,若num1和num2分別為49和21,則輸出的最大公約數(shù)為7;若num1和num2分別為27和81,則輸出的最大公約數(shù)為27。請改正程序中的錯誤,使它能得出正確結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdio.h>intfun(inta,intb){intr,t;if(a<b){/*********found*********/t=a;b=a;a=t;}r=a%b;while(r!=0){a=b;b=r;r=a%b;}/*********found*********/return(a);}voidmain(){intnum1,num2,a;printf("Inputnum1num2:");scanf("%d%d",&num1,&hum2);printf("num1=%dnum2=%d\n\n",num1,hum2);a=fun(num1,num2);printf("Themaximuncommondivisoris%d\n\n",a);}標準答案:(1){t=a;a=b;b=t;}(2)return(b);或returnb;知識點解析:求最大公約數(shù)算法一般采用輾轉(zhuǎn)相除法。輾轉(zhuǎn)相除法的算法為:首先將m除以n(m>n)得余數(shù)r,再用余數(shù)r去除原來的除數(shù),得到新的余數(shù),重復此過程直到余數(shù)為0時停止,此時的除數(shù)就是m和n的最大公約數(shù)。程序首先判斷參數(shù)a和b的大小,如果a<b則進行交換,這里是一個數(shù)學邏輯錯誤,應先將a的值賦給中間變量t,再將b的值賦給a,最后將t的值賦給b。當余數(shù)r為0時,除數(shù)b即為所求的最大公約數(shù),所以函數(shù)應返回b。三、程序設計題(本題共1題,每題1.0分,共1分。)3、使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,規(guī)定輸入的字符串中只包含字母和*號。編寫函數(shù)fun,其功能是:刪除字符串中所有的*號。編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。例如,字符串中的內(nèi)容為“****A*BC*DEF*G*******”,刪除后,字符串中的內(nèi)容應當是“ABCDEFG”。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>voidfun(char*a){}voidmain(){chars[81];printf("Enterastring:\n");gets(s);fun(s);printf("Thestringafterdeleted:\n");puLs(s);}標準答案:voidfun(char*a){inti,j=0;for(i=0;a[i]!=’\0’;i++)if(a[i]!=’*’)a[j++]=a[i];/*若不是要刪除的字符’*’則保留*/a[j]=’\0’;/*最后加上字符串結(jié)束符’\0’*/}知識點解析:用循環(huán)操作從字符串開始往后逐個進行比較,若不是要刪除的字符(用if(a[i]!=’*’)來控制)則保留。變量i和j用來表示原字符串的下標和刪除*號后新字符串的下標。注意,下標變量j要從0開始,最后還要加上字符串結(jié)束標識‘\0’。國家二級C語言機試(操作題)模擬試卷第8套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打開考生文件夾下blank1中的解決方案。此解決方案的項目中包含一個源程序文件blank1.c。在此程序中,函數(shù)fun的作用是:統(tǒng)計整型變量m中各數(shù)字出現(xiàn)的次數(shù),并存放到數(shù)組a中,其中:a[0]存放0出現(xiàn)的次數(shù),a[1]存放1出現(xiàn)的次數(shù),…,a[9]存放9出現(xiàn)的次數(shù)。例如,若m為14579233,則輸出結(jié)果應為:0,1,1,2,1,1,0,1,0,1,請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#inclucte<stdio.h>voidfun(intm,inta[10]){inti;for(i=0;i<10;i++)/*********found*********/【1】=0;while(m>0){/*********found*********/i=【2】;a[i]++;/*********found*********/m=【3】;}}main(){intm,a[10],i;printf("請輸入一個整數(shù):");scarlf(“%d”,&m);fun(m,a);for(i=0;i<10;i++)printf("%d,",a[i]);printf("\n");}標準答案:(1)a[i](2)m%10(3)m/10知識點解析:數(shù)組a各元素初始化為0,用求余和整除相結(jié)合的方法得到數(shù)字的每一位數(shù)字,并用它做為數(shù)組a的下標,相應元素加1。填空1:數(shù)組a的10個元素賦值為0。填空2:m%10可得到數(shù)m的最后一位數(shù)字。填空3:m/10可使數(shù)字截短,即去掉最后一位。二、程序修改題(本題共1題,每題
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2031年中國微電腦PH/ORP控制器行業(yè)投資前景及策略咨詢研究報告
- 2025至2031年中國螺紋取壓楔式流量計行業(yè)投資前景及策略咨詢研究報告
- 2024至2030年龍膽酸鈉鹽項目投資價值分析報告
- 2025至2031年中國變量注塑機行業(yè)投資前景及策略咨詢研究報告
- 2024至2030年阿伯丁鉤項目投資價值分析報告
- 2025至2031年中國便攜式剪切儀行業(yè)投資前景及策略咨詢研究報告
- 2024至2030年中國粉底霜42數(shù)據(jù)監(jiān)測研究報告
- 2024至2030年中國微波手術(shù)理療機數(shù)據(jù)監(jiān)測研究報告
- 2025年重慶環(huán)衛(wèi)集團有限公司招聘筆試參考題庫含答案解析
- 2025年山東東營經(jīng)濟技術(shù)開發(fā)區(qū)東匯新能源有限公司招聘筆試參考題庫附帶答案詳解
- 中國省市地圖模板可編輯模板課件
- 《中國潰瘍性結(jié)腸炎診治指南(2023年)》解讀
- 三年級數(shù)學上冊《寒假作業(yè)》
- 兒童社區(qū)獲得性肺炎的診斷和治療
- 中職班主任德育培訓
- DB-T29-74-2018天津市城市道路工程施工及驗收標準
- 小學一年級20以內(nèi)加減法混合運算3000題(已排版)
- 病機-基本病機 邪正盛衰講解
- 中科院簡介介紹
- 《小石潭記》教學實錄及反思特級教師-王君
- 【高中語文】《錦瑟》《書憤》課件+++統(tǒng)編版+高中語文選擇性必修中冊+
評論
0/150
提交評論