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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

國家二級C語言機試(操作題)模擬試卷30(共9套)(共27題)國家二級C語言機試(操作題)模擬試卷第1套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序的主函數(shù)中,已給出由結構體構成的鏈表結點a、b、c,各結點的數(shù)據(jù)域中均存入字符,函數(shù)fun()的作用是:將a、b、c三個結點鏈接成一個單向鏈表,并輸出鏈表結點中的數(shù)據(jù)。請在程序的下畫線處填入正確的內容并把下畫線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>typeclef.structlist{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:將三個結點連接起來,即將pa的指針域指向pb,pb的指針域指向pc。填空2:輸出鏈表結點中的數(shù)據(jù),表示為p一>data。填空3:指針后移,指向下一個結點,即p=p一>next。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中,函數(shù)fun()的功能是統(tǒng)計s所指一維數(shù)組中0的個數(shù)(存在變量zero中)和1的個數(shù)(存在變量one中),并輸出結果。請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構。試題程序:#include<stdio.h>voidfun(int*s,intn){/*********found*********/intitone=0,zero;for(i=0;i<n;i++)/*********found*********/switch(s[i]);{/*********found*********/case0:zero++;case1:one++;}printf("one:%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);}標準答案:(1)inti,one=0,zero=0;(2)switch(s[i])(3)case0:zero++;break;知識點解析:(1)變量zero用來統(tǒng)計數(shù)字0的個數(shù),應將其初始化為0。(2)語法錯誤,switch語句后不加分號。(3)當數(shù)字為0時,變量zero加1,此時應使用break語句跳出switch語句,進行下一次循環(huán),否則會繼續(xù)執(zhí)行case1語句,使程序不能得出正確結果。三、程序設計題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,其功能是將形參s所指字符串放入形參a所指的字符數(shù)組中,使a中存放同樣的字符串。說明:不得使用系統(tǒng)提供的字符串函數(shù)。注意:部分源程序存在PROG1.C中,請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(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ù),調用函數(shù),輸出數(shù)據(jù),關閉文件。*/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);}標準答案:voidfun(char*a,char*s){while(*s!=’\0’){*a=*s;a++;s++;}*a=’\0’;}知識點解析:要將s所指的字符串存入a所指的字符串中,程序要求不能使用系統(tǒng)提供的字符串函數(shù),本題可以使用循環(huán)語句,依次取出a所指字符串中的元素,將其存入s所指的字符串中,最后為s所指的字符串添加結束標識’\0’。國家二級C語言機試(操作題)模擬試卷第2套一、程序填空題(本題共1題,每題1.0分,共1分。)1、下列給定程序中,函數(shù)fun的功能是:計算如下公式前n項的和,并作為函數(shù)值返回。例如,當形參n的值為10時,函數(shù)返回值為9.612558。請在程序的下畫線處填入正確的內容并將下畫線刪除,使程序得出正確的結果。注意:部分源程序給出如下。不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>doublefun(intn){inti;doubles,t;/*********found*********/s=【1】;/*********found*********/for(i=1;i<【2】;i++){t=2.0*i;/*********found*********/S=S+(2.0*i一1):jc(2.0*i+1)/【3】;}returns;}voidmain(){intn=一1;while(rl<0){printf("Pleaseinput(n>0):");scarlf("%d",&n);}printf("\nTheresultis:%f\n",fun(i"1));}標準答案:(1)0.0(2)n(3)(t*t)知識點解析:本題考查:變量初始化操作,需注意該變量是用做累加器還是累乘器;for循環(huán)語句。填空1:程序開始定義了變量s,但沒有對其進行初始化,根據(jù)公式及后面的程序可知變量s用來存放公式的前n項和,因此該變量應初始化為0.0。填空2:通過for循環(huán)語句將表達式各項進行累加,結果存于變量s中,循環(huán)變量i的取值范圍為1一n。填空3:根據(jù)題目要求確定表達式通項。前面已定義t=2.0*i,因此此空應填(t*t)。程序要求計算表達式的值時,一般都設定一個變量s并賦初值。如果s用來存放表達式的和,則賦初值為0;如果s用來存放表達式的積,則賦初值為1。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中函數(shù)fun的功能是:統(tǒng)計substr所指的字符串在str所指的字符串中出現(xiàn)的次數(shù)。例如,若字符串為aaas1kaaas,子字符串為as,則應輸出2。請改正程序中的錯誤,使它能得出正確的結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>intfun(char*str,char*sub-str){inti,j,k,num=0;/*********found*********/for(i=0,str[i],i++)for(j=i,k=0;substr[k]==str[j];k++,J++)/*********found*********/If(substr[k+1]==’\0’){num++;break;}returnnum;}main(){charstr[80],substr[80];printf("Inputastring:");gets(str);printf("Inputasubstring:");gets(substr);printf("%d\n",fun(str,substr));}標準答案:(1)for(i=0;str[i];i++)(2)if(substr[k+1]:=’\0’)知識點解析:本題考查:for循環(huán)語句的格式,for循環(huán)語句使用最為靈活,其一般形式為for(表達式1;表達式2;表達式3),注意表達式之間使用“;”相隔;if條件語句的格式,其中if關鍵字需要區(qū)別大小寫,不能混淆使用。關鍵字是由C語言規(guī)定的具有特定意義的字符串,也稱為保留字。用戶定義的標識符不應與關鍵字相同,并且關鍵字應小寫。先看循環(huán)條件for(i=0,str[i],i++),不難發(fā)現(xiàn)此處for循環(huán)語句的格式有誤,其中表達式之間應以“;”相隔;同時很容易發(fā)現(xiàn)if條件語句處的關鍵字書寫錯誤。三、程序設計題(本題共1題,每題1.0分,共1分。)3、編寫函數(shù)fun,其功能是:根據(jù)以下公式求π的值(要求精度0.0005,即某項小于0.0005時停止迭代)。程序運行后,若輸入精度0.0005,則程序應輸出為3.140578。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<Stdio.h>#include<conio.h>#include<math.h>doublefun(doubleeps){}voidmain(){doublex;printf("Inputeps:");Scanf("%1f",&x);printf("\neps=%1f,PI=%if\n",x,fun(x));}標準答案:doublefun(doubleeps){doubles=0.0,s1=1.0;intn=1;while(s1>=eps)/*當某項大于精度要求時,繼續(xù)求下一項*/s=s+s1;/*求和*/{s1=s1*n/(2*n+1);/*求多項式的每一項*/n++;}return2*s;}知識點解析:本題考查:迭代法求給定多項式的值。迭代算法是讓計算機對一組指令(或一定步驟)進行重復執(zhí)行,在每次執(zhí)行這組指令(或這些步驟)時,都從變量的原值推出它的一個新值。需要注意變量的數(shù)據(jù)類型以及賦初值操作。首先應該定義double類型變量,并且賦初值,用來存放多項式的某一項和最后的總和。從第二項開始以后的每一項都是其前面一項乘以n/(2*n+1),程序中用s1來表示每一項,s表示求和后的結果。需注意s1和s的初值都為1.0,因為循環(huán)變量從第二項開始累加。國家二級C語言機試(操作題)模擬試卷第3套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:利用指針數(shù)組對形參ss所指字符串數(shù)組中的字符串按由長到短的順序排序,并輸出排序結果。ss所指字符串數(shù)組中共有N個字符串,且串長小于M。請在程序的下畫線處填入正確的內容并把下畫線刪除,使程序得出正確的結果。注意:部分源程序在文件BIANK1.C中。不得增行或刪行,也不得更改程序的結構!試題程序:#1r1clucle<stotio.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+l;j<N;j++)/*********found*********/if(str1en(ps[k])<str1en(【2】)k=j;/*********found*********/tp=ps[i];ps[i]=ps[k];ps[k]=【3】;}printff"\nThestringaftersortingbylength:\n\n");for(i=0;i<N;i++)puts(ps[i]);}main(){charch[N][M]={"red","green","blue","yellow","black"};inti;printf("\nTheoriginalstringputs(ch[i]);printf("\n");fun(ch);}標準答案:(1)i(2)ps[j](3)tp知識點解析:本題是按字符串的長短進行排序。填空1:外循環(huán)每循環(huán)一次,k應保存當前的i值,所以應填i。填空2:使用內循環(huán)對i+l后面的字符串長度進行比較,所以應填ps[j]。填空3:此處的作用是交換兩個變量的值,所以應填tp。二、程序修改題(本題共1題,每題1.0分,共1分。)2、已知一個數(shù)列從0項開始的前3項:0、0、1,以后的各項都是其相鄰的前3項之和。下列給定的程序中,函數(shù)fun的功能是:計算并輸出該數(shù)列前n項的平方根之和sum。n的值通過形參傳入。例如,當n=10時,程序的輸出結果應為23.197745。請改正程序中的錯誤,使它能得出正確的結果。注意:部分源程序在文件MODI1,C中,不要改動mam函數(shù),不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<math.h>/*********found*********/fun(intn){doublesum|s0|s1,s2,s;intk;sum=1.0;if(r1<=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=");scar1f("%d",&n);printf("%f\n",fun(n));}標準答案:(1)doublefun(intn)(2)returnsum;知識點解析:(1)根據(jù)函數(shù)的返回值可知函數(shù)fun應定義為double類型。(2)語法錯誤,缺分號。三、程序設計題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,它的功能是計算下列級數(shù)和,和值由函數(shù)值返回。例如,當n=10,x=0.3時,函數(shù)值為1.349859。注意:部分源程序在文件PROG1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(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);/******************/}標準答案:doublefun(doublex,xintn){inti;doubles=1.0,s1=1.0;for(i=1;i<=n,i++){s1=s1*i;/*各項中的階乘*/s=s+pow(x,i)/s1;1*按公式求出*/}returns;}知識點解析:程序定義了變量s1和s,s1表示每項的分母(即各項的階乘),s存放累加和。循環(huán)語句控制累加的次數(shù),在循環(huán)體中進行階乘和累加操作,累加的結果存入s中。此處使用了求乘方函數(shù)pow(x,i),其含義是求x的i次方的值。國家二級C語言機試(操作題)模擬試卷第4套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:將a所指3×5矩陣中第k列的元素左移到第0列,第k列以后的每列元素行依次左移,原來左邊的各列依次繞到右邊。例如,有下列矩陣:123451234512345若k為2,程序執(zhí)行結果為345123451234512請在程序的下畫線處填入正確的內容并把下畫線刪除,使程序得出正確的結果。注意:部分源程序在文件BLANK1.C中。不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>#defineM3#defineN5voidfun(int(*a)[N],intk){inti,j,P,temp;/*********found*********/for(p=1;P<=【1】;P++)for(i=0;i<M;i++){temp=a[i][0];/*********found*********/for(j=0;j<【2】;j++)a[i][j]=a[i][j+1];/*********found*********/a[i][N一1]=【3】;}}main(){intx[M][N]={{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5}},i,j;printf("Thearraybeforemoving:\n\n");for(i=0;i<M;i++){for(j=0;j<N;j++)printf("%3d",x[i][j]);printf("\n");}fun(x,2);printf("Thearrayaftermoving:\n\n");for(i=0;i<M;i++){for(j=0;j<N;j++)printf("%3d’,x[i][j]);printf("\n");}}標準答案:(1)k(2)N一1(3)temp知識點解析:填空1:外循環(huán)p的值為數(shù)組移動的次數(shù),試題要求第k列左移,則需要移動的次數(shù)為k,所以應填k。填空2:矩陣共N列,所以應填N—1。填空3:臨時變量temp中存放的值為數(shù)組最左邊元素的值,需要把temp放到數(shù)組的末尾,即放到a[i][N—1]中,所以應填temp。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:讀入一個字符串(長度<20),將該字符串中的所有字符按ASCII碼值升序排序后輸出。例如,若輸入"edcba",則應輸出’abcde’。請改正程序中的錯誤,使它能得出正確的結果。注意:部分源程序在文件MODI1.C中,不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!試題程序:#include<string.h>#include<stdio.h>voidfun(chart[]){charc;inti,j;/*********found*********/for(i=strlen(t);i;i--)for(j=0;j<i;j++)/*********found*********/if(t[j]<t[j+1]){C=t[j];t[j]=t[j+1];t[j+1]=c;}}main(){chars[81];printf("\nPleaseenteracharacterstring:");gets(s);print("\n\nBeforesorting:\n%s",s);fun(s);printf("\nAftersortingdecendingly:\n%s",s);}標準答案:(1)for(i=strlen(t)一1;i;i--)或for(i=strlen(t)一1;i>0;i--)(2)if(t[j]>t[j+1])知識點解析:(1)本題是利用選擇法對數(shù)組元素進行比較排序。所謂選擇法,是依次用當前取得的元素和其后面的元素進行比較,在第一個元素和其后面的元素順次比較時,可以借助中間變量來對兩個數(shù)進行交換,要保證第一個元素始終存放數(shù)組中的最大數(shù),以后依次挑選出次大數(shù),這樣最終的數(shù)組就是有序的。strlen函數(shù)所求得的字符串長度包括字符串結束符,所以要減1。(2)這里是一個分析邏輯錯誤,題中要求按升序排序,所以應改為if(t[j]>t[j+1])。三、程序設計題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun。其功能是:將M行N列的二維數(shù)組中的數(shù)據(jù),按列的順序依次放到一維數(shù)組中。一維數(shù)組中數(shù)據(jù)的個數(shù)存放在形參n所指的存儲單元中。例如,若二維數(shù)組中的數(shù)據(jù)為333333334444444455555555則一維數(shù)組中的內容應是:334455334455334455334455注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>voidfun(int(*s)[10],int*b,int*n,intmm,intnn){}main(){intw[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}),i,j;inta[100]={0},n=0;printf("Thematrix:\n");for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%3d",w[i][j]);printf("\n");}fun(w,a,&n,3,4);printf("TheAarray:\n");for(i=0;i<n;i++)printf("%3d",a[i]);}標準答案:voidfun(int(*s)[1],int*b,int*n,intmm,intnn){inti,j;for(j=0;j<nn;j++)/*將二維數(shù)組中的數(shù)據(jù)按列的順序依次放入一維數(shù)組中*/for(i=0;i<mm;i++){b[*n]=*(*(s+i)+j);*n=*n+1;/*通過指針返回元素個數(shù)*/}}知識點解析:題目要求實現(xiàn)將二維數(shù)組元素存入一維數(shù)組,需使用for循環(huán)語句來控制二維數(shù)組元素的下標,同時使用指針變量配合操作??梢杂脙蓚€循環(huán)來處理問題,由于是按列的順序取出,所以第1個循環(huán)用于控制列下標,第2個循環(huán)用于控制行下標。國家二級C語言機試(操作題)模擬試卷第5套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:利用指針數(shù)組對形參ss所指字符串數(shù)組中的字符串按由長到短的順序排序,并輸出排序結果。ss所指字符串數(shù)組中共有N個字符串,且串長小于M。請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結構!1#include<stdio.h>2#include<string.h>3#defineN54#defineM85voidfun(char(*ss)[M])6{char*ps[N],*tp;inti,j,k;7for(i=0;i<N;i++)ps[i]=ss[i];8for(i=0;i<N-1;i++){9/**********found**********/10k=__1___;11for(j=i+1;j<N;j++)12/**********found**********/13if(strlen(ps[k])<strlen(___2___))k=j;14/**********found**********/15tp=ps[i];ps[i]=ps[k];ps[k]=___3____;16}17printf(’’\nThestringaftersortingbylength:\n\n’’);18for(i=0;i<N;i++)puts(ps[i]);19}20main()21{charch[N][M]={’’red’’,’’green’’,"blue’’,¨yellow","black¨),22inti;23printf(’’\nTheoriginalstring\n\n’’);24for(i=0;i<N;i++)puts(ch[i]);printf(’’\n’’);25fun(ch)}標準答案:(1)i(2)ps[j](3)tp知識點解析:本題中函數(shù)fun的功能是利用指針數(shù)組對形參ss所指字符串數(shù)組中的字符串按由長到短的順序排序,并輸出排序結果。在fun函數(shù)中采用了選擇排序法,在選擇排序法中的降序排序,首先從數(shù)組中挑選一個最大的元素,把它和第一元素交換,接著從剩下的n-1個元素中再挑出一個最大的元素,把它和第二個元素交換,不斷重復以上過程,直到比較完最后兩個元素。第一空:分析可知,fun函數(shù)采用的選擇排序,在第一空處是初始化k?!癴or(j=i+1;j<N;j++)”循環(huán)是尋找長度最長的字符串,找到之后和k字符串交換,因此k從0開始,隨著i變化,故第一空處應為“i”。第二空:“if(strlenq(ps[k])<strlen(__2__))k=j;”新的字符串ps[j]如果比ps[k]的長度長,那么k記錄下新的最長的字符串的下標位置j,故第二空處應為“ps[j]”。第三空:“tp=ps[i];ps[i]=ps[k];ps[k]=__3___;”是字符串地址交換,顯然第三空處應是臨時變量tp。二、程序修改題(本題共1題,每題1.0分,共1分。)2、已知一個數(shù)列從第0項開始的前三項分別為0,0,1,以后的各項都是其相鄰的前三項之和。給定程序MODI1.C中函數(shù)fun的功能是:計算并輸出該數(shù)列前n項的平方根之和。n的值通過形參傳入。例如,當n=10時,程序的輸出結果應為:23.197745。請改正程序中的錯誤,使程序能輸出正確的結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!1#include<stdio.h>2#include<math.h>3/************found************/4fun(intn)5{doublesumfa0,a1,a2,a;intk;6sum=1.0;7if(n<=2)sum=0.0;8s0=0.0;s1=0.0;s2=1.0;9for(k=4;k<=n;k++)10{s=s0+s1+s2;11sum+=sqrt(s);12s0=s1;s1=s2;s2=s;13}14/************found************/15returnsum16}17main()18{intn;19printf(’’InputN=’’);20scanf(’’%d’’,&n);21printf(’’%f\n’’,fun(n));22}標準答案:(1)doublefun(intn)(2)returnsum;知識點解析:本題中函數(shù)的功能是計算并輸出該數(shù)列前n項的平方根之和sum。解題思路首先根據(jù)題干求得每一項的值,然后再計算數(shù)列前n項的平方根之和。(1)第一個錯誤標識下fun函數(shù)的定義根據(jù)題干要返回前n項的平方根之和,函數(shù)具有返回值,所以“fun(intn)”應改為“doublefun(intn)”,其中,double為雙精度型變量。(2)第二個標識符下返回平方根之和,根據(jù)C語言語法每一句C語言后面應該以“;”為結尾,所以“returnsum”改為“returnsum;”。三、程序設計題(本題共1題,每題1.0分,共1分。)3、編寫函數(shù)fun,它的功能是計算下列級數(shù)和,和值由函數(shù)值返回。例如,當n=10,x=0.3時,函數(shù)值為1.349859。注意:部分源程序在文件PROG1.C文件中。請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。1#include<stdio.h>2#include<math.h>3doublefun(doublex,intn)4{5}6main()7{voidNONO();8printf(’’%f\n’’,fun(0.3,10));9NONO();10}11voidNONO()12{/(本函數(shù)用于打開文件,輸入數(shù)據(jù),調用函數(shù),輸出數(shù)據(jù),關閉文件。*/13FILE*fp,*wf;14inti,n;15doubles,x;16fp=fopen(’’in.dat’’,’’r’’);17wf=fopen(’’out.dat’’,’’w’’);18for(i=0;i<10;i++){19fscanf(fp,’’%1f,%d’’,&x,&n),20s=fun(x,n);21fprintf(wf,’’%f\n’’,s);22}23fclose(fp);24fclose(wf);}標準答案:1doubles=1.0,y=x;2inti;3longk=1;4for(i=1;i<=n;i++){5k=k*i;6s+=y/k;7y*=x;8}9returns;知識點解析:該程序功能是計算并輸出多項式值。根據(jù)題干中給出的數(shù)列,首先推出每_項的表達式,然后再對多項式進行累加求和。(1)根據(jù)題干中給出的數(shù)列,推出每一項分子是在前一項的基礎上乘以x,分母是每一項的階乘,它可以在前一項的基礎上乘以當前項的項數(shù),即第n項是n。(2)在循環(huán)中求得每一項,然后對其進行累加求和。國家二級C語言機試(操作題)模擬試卷第6套一、程序填空題(本題共1題,每題1.0分,共1分。)1、函數(shù)fun的功能是:把形參a所指數(shù)組中的最大值放在a[0]中,接著求出a所指數(shù)組中的最小值放在a[1]中;再把a所指數(shù)組元素中的次大值放在a[2]中,把a數(shù)組元素中的次小值放在a[3]中;其余以此類推。例如:若a所指數(shù)組中的數(shù)據(jù)最初排列為:1、4、2、3、9、6、5、8、7,則按規(guī)則移動后,數(shù)據(jù)排列為:9、1、8、2、7、3、6、4、5。形參n中存放a所指數(shù)組中數(shù)據(jù)的個數(shù)。請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結構!#inolude#defineN9/**********found**********/voidfun(int_____1_____,intn){inti,j,max,min,px,pn,t;/**********found**********/for(i=0;ia[j]){min=a[j];pn=j;)}if(px!=i){t=a[i];a[i]=max;a[px]=t;if(pn==i)pn=px;}if(pn!=i+1){t=a[2+1];a[2+1]=min;a[pn]=t;)}}main(){intb[N]={1,4,2,3,9,6,5,8,7),i;printf("\nTheoriginaldata:\n");for(i=0;i標準答案:(1)*a(2)2(3)i+1知識點解析:第一空:主函數(shù)內fun函數(shù)的調用“fun(b,N);”,其中b為整型數(shù)組名,故fun函數(shù)的第一參數(shù)為整型指針,又根據(jù)“max=a[j]”可知第一個參數(shù)名為a,故第一空處為“*a”。第二空:根據(jù)題意a所指數(shù)組中的最大值放在a[0]中,接著求出a所指數(shù)組中的最小值放在a[1]中;再把a所指數(shù)組元素中的次大值放在a[2]中,把a數(shù)組元素中的次小值放在a[3]中,升序排序和降序排序的下標變化是每次在前一次的基礎上+2,即a[0]、a[2]、a[4]…降序排序,a[1]、a[3]、a[5]…升序排序,故第二空應為“2”。第三空:選擇排序法中的升序排序,首先從數(shù)組中挑選一個最小的元素,把它和第一元素交換,接著從剩下的n-1個元素中再挑出一個最小的元素,把它和第二個元素交換,不斷重復以上過程,直到比較完最后兩個元素。故內層循環(huán)變量i應該從i+1開始,因此第三空處應為“i+1”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:按順序給s所指數(shù)組中的元素賦予從2開始的偶數(shù),然后再按順序對每五個元素求一個平均值,并將這些值依次存放在W所指的數(shù)組中。若S所指數(shù)組中元素的個數(shù)不是5的倍數(shù),多余部分忽略不計。例如,S所指數(shù)組有14個元素,則只對前10個元素進行處理,不對最后的4個元素求平均值。請改正程序中的錯誤,使它能得出正確結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構。#include#defineSIZE20fun(double*s,double*w){intk,i;doublesum;for(k=2,i=0;i標準答案:(1)sum=0.0;(2)if((i+1)%5==0)知識點解析:(1)在第一標識下“sun=0.0;”,根據(jù)題意,這是給sum賦值,而sun沒有定義編譯時會提示錯誤,應改為“sum=0.0;”。(2)錯誤標識下的if判斷語句是依順序取5個字符,if中的邏輯表達式語法有誤,由于1%5恒等于1,所以i+1%5也就等價于i+1了,所以將“if(i+1%5==0)”改為“if((i+1)%5==0)”,此處主要注意的是運算符的優(yōu)先級。三、程序設計題(本題共1題,每題1.0分,共1分。)3、學生的記錄由學號和成績組成,N名學生的數(shù)據(jù)已在主函數(shù)中放入結構體數(shù)組s中,請編寫函數(shù)fun,它的功能是:把低于平均分的學生數(shù)據(jù)放在b所指的數(shù)組中,低于平均分的學生人數(shù)通過形參n傳回,平均分通過函數(shù)值返回。注意:部分源程序在文件PROGl.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#inclucle#defineN8typedefstruct{charnLlm[10];doubles;}STREC;doublefun(STREC*a,STREC*b,int*n){}main(){STRECS[N]={{"GA05",85),{"GA03",76},{"GA02",69},{"GA04",85),{"GA01",91},{"GA07",72),{"GA08",64),{"GA06",87};STRECh[N],t;FILE*out;inti,j,n;doubleave;ave=fun(s,h,&n);printf("The%dstudentdatawhichislowerthan%7.3f:\n",r1,ave),for(i=0;ih[j].s){t=h[i];h[i]=h[j];h[j]=t;}for(i=0;i標準答案:inti;doubleave=0.0;*n=0;for(i=0;i知識點解析:(1)首先,通過循環(huán)求總分,然后求得平均分。(2)在循環(huán)中,進行平均分與每個成績進行比較,并將滿足條件的數(shù)據(jù)存入數(shù)組及對其進行累加。國家二級C語言機試(操作題)模擬試卷第7套一、程序填空題(本題共1題,每題1.0分,共1分。)1、給定程序中,函數(shù)fun的功能是:統(tǒng)計形參s所指字符串中數(shù)字字符出現(xiàn)的次數(shù),并存放在形參t所指的變量中,最后在主函數(shù)中輸出。例如,形參s所指的字符串為:abcdef35adgh3kjsdf7。輸出結果為:4。請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結構!#includevoidfun(char*s,int*t){inti,n;n=0;for(i=0;____1____!=0;1++)____3____;}main(){chars[80]="abcdef35adgh3kjsdf7";intt;printf("\nTheoriginalstringis:%s/n",s);printf("\nTheresultis:%d\n",t);}標準答案:(1)s[i](2)—9.(3)*t=n知識點解析:搜索整個字符串,判斷s[i]>=’0’且s[i]<=’9’,滿足該條件后,計數(shù)變量加1,因此第一空:循環(huán)終止條件是達到了字符串的尾部,字符串以“\0”(或NULL)結束,故第一空處應為s[i]。第二空:數(shù)字字符的判斷是s[i]>=’0’且s[i]<=’9’,故第二空處應為“’9’”。第三空:這里是將數(shù)字字符出現(xiàn)的次數(shù)存放在形參t里,n記錄了數(shù)字字符的個數(shù),而形參t是指針變量,故第三處應為“*t=n”。二、程序修改題(本題共1題,每題1.0分,共1分。)2、給定程序MODI1.C中函數(shù)fun的功能是:通過某種方式實現(xiàn)兩個變量值的交換,規(guī)定不允許增加語句和表達式。例如變量a中的值原為8,b中的值原為3,程序運行后a中的值為3,b中的值為8。請改正程序中的錯誤,使它能得出正確的結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!#includeintfun(int*x,inty){intt;return(y);}main(){inta=3,b=8;printf("%d%d\n",a,b);b=fun(&a,b);printf("%d%d\n",a,b);}標準答案:(1)t=*x;*x=y;(2)return(t);知識點解析:(1)根據(jù)fun中x變量的定義,x為指針型變量,所以第一個錯誤標識下的“t=x;x=y;”改為“t=*x;*x=y;”。(2)交換之后t中存放原來x的值,x存放原來y的值,這里應該是返回原來x的值,所以第二個標識下的“return(y);”應該改為“return(t),”或者“returnt;”。指針作為函數(shù)的參數(shù)、函數(shù)的定義以及調用。三、程序設計題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,它的功能是:求出1到1000之間能被7或11整除、但不能同時被7和11整除的所有整數(shù)并將它們放在a所指的數(shù)組中,通過n返回這些數(shù)的個數(shù)。注意:部分源程序在文件PROG1.C中。請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。#includevoidfun(int*a,int*n){}main(){intaa[1000],n,k;voidNONO();fun(aa,&n);for(k=0;k<n;k++)if((k+1)0010==0)printf("\n");elseprintf("%5d",aa[k]);NONO();}voidNONO(){/*本函數(shù)用于打開文件,輸入測試數(shù)據(jù),調用fun函數(shù),輸出數(shù)據(jù),關閉文件。*/intaa[1000],n.k;FILE*fp;fp=fopen("out.dat","w");fun(aa,&n);for(k=0,k<n;k++)if((k+1)0010==0)fprintf(fp,"\n");elsefprintf(fp,"%5d",aa[k]);fclose(fp);}標準答案:1inti;2*n=0;3for(1=7;1<1000;1++)4if(((1007)==0||(10011)==0)&&(i0077)!=0)a[(*n)++]=i;知識點解析:進入fun函數(shù),判斷是否被7整除→判斷是否被11整除→并且不被77整除→按要求返回計算結果,首先,*n置0.設置為累計器,計算符合條件的數(shù)的個數(shù)。然后,通過循環(huán),判斷小于1000的每一個整數(shù)是否符合題干中的要求。其中的判斷條件能否被7或者被11整除為:i%7==0||i%11==0,不能被11和7同時整除為:i%771=0,它們之間的并關系就用&&連接,最后結果即為:(1%7==0||i%11==0)&&i%77!=0。最后,將符合條件的整數(shù)存入數(shù)組a中,同時對*n進行自加,返回結果。國家二級C語言機試(操作題)模擬試卷第8套一、程序填空題(本題共1題,每題1.0分,共1分。)1、下列給定程序的功能是:調用函數(shù)fun將指定源文件中的內容復制到指定的目標文件中,復制成功時函數(shù)返回1,失敗時返回0。在復制的過程中,把復制的內容輸出到屏幕。主函數(shù)中源文件名放在變量sfname中,目標文件名放在變量tfname中。請在下畫線處填入正確的內容并將下畫線刪除,使程序得出正確的結果。注意:不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>#include<stdlib.h>intfun(char*source.char*target){FILE*fs,*ft;charch;/******found******/if((fs=fopen(source,___1___))==NULL)return0;if((ft=fopen(target,"w"))==NULL)return0;printf("\nThedatainfile:\n");ch=fgetc(fs);/******found******/while(!feof(___2___)){putchar(ch);/******found******/fpute(ch,___3___);ch=fgetc(fs);}fclose(fs);felose(ft);printf("\n");return1;}main(){charsfname[20]="myfile1",tfname[20]="myfile2";FILE*myf;inti;charc;myf=fopen(sfname,"w");printf("\nTheoriginaldata:\n");for(i=1;i<30;i++){c=’A’+rand()%25;fprintf(myf,"%c",c);printf("%c",c);};felose(nyf);printf("\n\n");if(fun(sfnarne,tfname))printf("Succeed!");elsepfinff("Fail!");}標準答案:(1)"r"(2)fs(3)ft知識點解析:本題考查:打開文件操作,fopen函數(shù)用來打開一個文件,其一般形式為“文件指針名=fopen(文件名,使用文件方式);”;文件結束檢測函數(shù)feof函數(shù);寫字符函數(shù)fputc,功能是把一個字符寫入指定的文件中,函數(shù)調用的形式為“fputc(字符量,文件指針);”。其中,待寫入的字符量可以是字符常量或變量,被寫入的文件可以用寫、讀/寫、追加方式打開。文件一旦使用完畢,需使用關閉文件函數(shù)fclOSe將文件關閉,以避免文件的數(shù)據(jù)丟失等錯誤。填空1:本題考查對文件操作的掌握。打開一個文件的調用方式是:fs=fopen(文件名,使用文件方式),以只讀的方式打開文件,所以文件打開方式為"r"。填空2:while循環(huán)語句中,循環(huán)條件通過feof()函數(shù)來檢測是否到文件結尾。填空3:fputc()函數(shù)用于將一個字符寫到磁盤文件上,調用形式為:fputc(要輸出的字符,文件指針)。二、程序修改題(本題共1題,每題1.0分,共1分。)2、下列給定程序中,函數(shù)fun的功能是:在有n名學生、2門課成績的結構體數(shù)組std中,計算出第1門課程的平均分,作為函數(shù)值返回。例如,主函數(shù)中給出了4名學生的數(shù)據(jù),則程序運行的結果為:第1門課程的平均分是76.125000請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構!試題程序:#include<stdio.h>typedefstruet{charnum[8];doublescore[2];}STU;doublefun(STUstd[],intn){inti;/******found******/doublesum;/******found******/for(i=0;i<2;i++)/******found******/Bum+=std[i].score[1];returnsum/n;}main(){STUstd[]={"N1001",76.5,82.0,"N1002",66.5,73.0,"N1005",80.5,66.0,"N1006",81.0,56.0};printf("第1門課程的平均分是:%lf\n",fun(std,4));}標準答案:(1)doublesum改為doublesum=0.0;(2)for(i=0;i<2;i++)改為for(i=0;i<n;i++);(3)sum+=std[i].score[1]改為sum+=std[i].score[0];知識點解析:本題考查:臨時變量初始化,C語言里臨時變量不初始化,它的默認值是不確定的一個值。再者,考查C語言約定數(shù)組的下標是從0開始的。(1)doublesum改為doublesum=0.0;累加求和需要初始化累加結果的臨時變量。(2)for(i=0;i<2;i++)改為for(i=0;i<n;i++);共有n個學生的成績,需要累加所有學生第一門課的成績。(3)sum+=std[i].score[1]改為sum+=std[i].score[0];第1門課程的平均分,C語言的下標是從0開始的。三、程序設計題(本題共1題,每題1.0分,共1分。)3、請編寫函數(shù)fun,其功能是:判斷形參n中的正整數(shù)是幾位數(shù)(輸入數(shù)據(jù)的位數(shù)不超過4位),并將結果通過函數(shù)值返回。例如,若輸入的數(shù)據(jù)為123,則輸出結果為:輸入的數(shù)字是3位。注意:請勿改動主函數(shù)main和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。試題程序:#include<stdio.h>voidNONO();intfun(intn){}main(){intn,place;do{printf("請輸入—個4位以內的正整數(shù):");scanf("%d",&n);}while(n<0||n>9999);place=fun(n);printf("輸入的數(shù)字是%d位\n",place);NONO();}voidNONO()/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調用函數(shù),輸出數(shù)據(jù),關閉文件。*/{FILE*fp,*wf;inti,n,plaee;fo=fopen("in.dat","r");wf=fopen("out.dat","w");for(i-0;i<10;i++){fseanf(fp,"%d",&n);place:fun(n);fprintf(wf,"%d\n",place);}fclose(fp);fclose(wf);}標準答案:intbits=1;//臨時變量統(tǒng)計位數(shù)while(n/10)/*判斷是否為0,若不為0,bits加1,再將n除以10,繼續(xù)判斷*/{bits++;n=n/10;}returnbits;知識點解析:本題考查:對循環(huán)跳出的條件的理解,以及理解取數(shù)字位數(shù)的方法。通過對指定的多位數(shù)每次除以10,去掉最后一位,直到為0結束,使用臨時變量來統(tǒng)計一個多位數(shù)的位數(shù)。國家二級C語言機試(操作題)模擬試卷第9套一、程序填空題(本題共1題,每題1.0分,共1分。)1、使用VC++2010打

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論