國家二級(C語言)機試模擬試卷20 (三)_第1頁
國家二級(C語言)機試模擬試卷20 (三)_第2頁
國家二級(C語言)機試模擬試卷20 (三)_第3頁
國家二級(C語言)機試模擬試卷20 (三)_第4頁
國家二級(C語言)機試模擬試卷20 (三)_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

國家二級(C語言)機試模擬試卷第1

一、程序填空題(本題共I題,每題1.0分,共J分0)

1、程序通過定義學生結構體變量,存儲了學生的學號、姓名和3門課的成績。所

有學生數據均以二進制方式輸出到文件中。函數fun的功能是從形參filename所指

的文件中讀入學生數據,并按照學號從小到大排序后,再用二進制方式把排序后的

學生數據輸出到filename所指的文件中,覆蓋原來的文件內容。請在程序的下劃

線處填入正確的內容并?巴下劃線刪除,使程序得出正確的結果。注意:源程序存

放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結構!

#includc#dcflncN5typedefstructstudent{longsno;charnamc[10];floaf

score[3];)STU;voidfun(char*filena,me){FTLE*fp;inti,j;STUs[N],t;

/*******************found********************/fp=fopen(fllename,[]]

fread(s,sizeof(STU),N,fp);fclose(fp);for(i=0;i

標準答案:(l)“rb”(2)>(3)fwrite

知識點解析:第一空:眼據題干要求,"fp=fopen(filename,【I]):"是打開

filename所指文件,讀出學生數據"fread(s,sizeof(STU),N,fp);",然后關閉文

件“fclose(fp)”,故第一空處是只讀方式打開文件,因此第一空處應為第二

空:根據題意,for循環(huán)是將學生數據按照學號從小到大排序后,這里采用的是冒

泡法排序,如果發(fā)現前面的數據比后面的大則交換,故第二空處應為第三

空:文件是以只寫方式(“wb”)打開,執(zhí)行"[3](s,sizeof(STU),N,fp);”后,關

閉文件,即第二處是一次把所有學生數據寫入文件.這是執(zhí)行數據塊寫函數

fwrite,故第三空處為“斯rite"。

二、程序修改題(本題共I題,每題7.0分,共[分0)

2、給定程序MODH.C中函數fun的功能是:根據整型形參m的值,計算如下公

i_________i

式的值?!?再-…-赤例如,若m中的值為:5,則應輸出:0.536389。

請改正程序中的錯誤,使它能得出正確的結果。注意;不要改動main函數,不得

增行或刪行,也不得更改程序的結構!#includedoublefun(intm){doubley=l.0;

[nt]?/**************found****************/for(i=2?i

標準答案:(l)for(i=2;i<=m;i++)(2)y—=1.0/(i*i);

知識點解析:(1)第一個標識下面,"fbr(i=2;i

三、程序設計題(本題共1題,每題1.0分,共7分0)

3、請編寫一個函數fun,它的功能是:找出一維整型數組元素中最大的值和它所

在的下標,最大的值和它所在的下標通過形參傳回。數組元素中的值已在主函數中

賦予。主函數中x是數組名,n是x中的數據個數:max存放最大值,index存放

最大值所在元素的下標。注意:部分源程序存在文件PR0G1.C文件中。請勿改

動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的

若干語句。#include#includevoidfun(inta[]fintn,int*max,int*d){)main(){int

i,x[20],max,index,n=10;voidNONO();for(i~0;i

標準答案:int1;*max=a[0];*d=0;/*把數組的第I個元素值賦值給最大值變

量*max*/for(i=l;i

知識點解析:進入fun函數,根據前面的分析:(1產max指針變量首先指向數組a

的第一個數據,同時將標志位*d初始值賦為0。(2)然后利用for循環(huán)對每一個當前

數組數據與max標記的數據進行比較。(3)循環(huán)中將求得的最大數據a[i]賦值給

*msx,并將該數據項數組標志位賦給標志位*d。

國家二級(C語言)機試模擬試卷第2

一、程序填空題(本題共I題,每題1.0分,共7分。)

1、請補充函數fun(),該函數的功能是;交換數組aa中最大和最小兩個元素的位

置,結果依然保存在原數組中,其它元素位置不變。注意數組aa中沒有相同元

素。例如,輸入“33,67,42,58,25,76,85,16,41,56”,則輸出“33,57,

42,58,25,76,16,85,41,56”。注意:部分源程序給出如下。請勿改動主函

數main和其他函數中的任何內容,僅在函數fun()的橫線上填入所編寫的若干表達

式或語句。試題程序:#include<stdio.h>#defineN10voidfun(intaa|]){inti,j,

t;intmax=0,min=0;for(i=0;i<N;i++){if([])max=i;if([])min=i;)t=aa

[max];[];aa[min]=t;}main(){inti;intaa[N]=|33,67,42,58,25,76,85,16,41,

56);clrscr();printf("\n***originallist***\n");for(i=0;i<N;i++)printf("%4d",aa

[i]);fun(aa);printf(M\n***newlist***\n");for(i=0;i<N;i++)printf("%4d",aa[i]);}

標準答案:aa[max]<aa[i]aa[min]>aa[i]aa[max]=aa[min]

知識點解析:第一空:先假設aa[0]最大,如果找到更大的元素,則將這個元素的

下標賦給max。第二空:同理,先假設aa[0]最小,如果找到更小的元素,則將這

個元素的下標賦給min。第三空:找到最大值和最小值之后,借助第三個變量t交

換這兩個元素。

二、程序修改題(本題共1題,每題1.0分,共7分0)

2、下列給定程序中fun。函數的功能是:將n個無序整數從小到大排序。請改正程

序中的錯誤,使它能得出正確的結果。注意;不要改動main函數,不得增行或刪

行,也不得更改程序的結構。試題程序:#include<conio.h>#include<stdio.h>

#include<stdlib.h>fun(intn,int*a){inti,j,p,t;for(j=O;j<n-l;j++){P=j;

/***************^und*******************/for(i=j+I;i<n-1;i++)if(a[p]>a[i])

/***************found*******************/t=i,if

{t=a[j];a[j]=a[p];a[p]=t;}})putarr(ihtn,int*z){inti;for(i=l;i<=n;i++,z++)

{printf(u%4d",*z);if(!(i%10))printf(u\n");}printf('”);}main(){int

aa[20]={9,3,0,4,1,2,5,6,8.10,7),n=11;clrscr();printf("\n\nBeforesorting%d

numbers:\n",n);putarr(n,aa);fun(n,aa);printf("\nAftersorting%d

numbers:\n*\n);putarr(n,aa);}

標準答案:⑴?昔誤:for(i=j+1;iVn-1;i++)正確:for(i=j+l;iVn;i++)(2)錯

誤:t=i;正確:p=i;

知識點解析:該程序是對n個數實現從小到大的排序,該題中先是找小輸入整數的

最小項,置于指針第1個元素的位置:再找出第2個元素至尾元素的最小項,置于

第2個元素的位置:之后順次處理后讀元素。

三、程序設計題(本題共I題,每題1.0分,共1分。)

3、請編寫函數fun(),該函數的功能是:移動字符串中的內容,移動的規(guī)則是把第

1到第m個字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前

部。例如,字符串中原有的內容為ABCDEFGHIJK,m的值為3,移動后,字符

串中的內容應該是DEFGHIJKABC。注意:部分源程序給出如下。請勿改動主函

數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語

句。試題程序:#include<stdio.h>#include<string.h>#defineN80voidfun

(char*w,intm){)main(){chara[N]="ABCDEFGHIJK";intm;printf("Theorigina

string:\n");puts(a);printf("\n\nEnterm:");scanf("%d'\&m);fun(a,m);printf("

\nThestringaftermoving:\n");puts(a);printf("\n\n");}

標準答案:voidfun(char*w,intm){inti,j;chart;for(i=l;iV=m;i++)/*進

行m次的循環(huán)左移*/{t=w[0];for(j=l/w[j]!=,\0,;j++)/*從第2個字符開始以后的

每個字符都依次前移一個字符*/"中-1]=\¥⑴;w[j-l]=t;/*將第1個字符放到最后

一個字符中*/}}

知識點解析:我們在學習C語言的時候,應該廣泛地應用到循環(huán)的方法,本題應

采用“循環(huán)左移”的算法°即從第2個字符開始以后的每個字符都依次前移一個字

符,而原來的第1個字符放在申中的最后個字符。當耍平移出個字符時,則要

進行m次的循環(huán)左移。內嵌的循環(huán)的作用是完成從第2個字符開始以后的每個字

符都依次前移一個字符,的作用是將第1個字符放到最后一個字符中。

家二級(C語言)機試模擬試卷第3

一、程序填空題(本題共I題,每題1.0分,共I分C)

1、給定程序的功能是:調用函數fun將指定源文件中的內容復制到指定的目標文

件中,復制成功時函數返回值為1,失敗時返回值為0。在復制的過程中,把復制

的內容輸出到終端屏幕。主函數中源文件名放在變量sfname中,目標文件名放在

變量tfnamc中。請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得

出正確的結果。注意:源程序存放在存生文件夾下的BLANK1.C中。不得增行

1!tinclude<stdio.h>

2linclude<stdlib.h>

3intfun(char*source,char^target)

4(FILEcharch;

5/………*found………*/

6if((fs-fopen(source,1_))

--NULL)

7return0;

8if((ft?fopen(target,Mw"))??NULL)

9return0;

10printf(n\nThedatainfile:\nw);

11ch-fgetc(fs);

12/*****?…*found*****????*/

13while(!feof(___2___))

14{putchar(ch);

15/………*found……*…/

16fputc(ch,___3);

17ch-fgetc(fs);

18

19fclose(fs);fclose(ft);

20printf(w\n\nw);

21return1;

22

23main()

nn

24(charsfname[20]-myfilelr

tfname[20]asWmyfile2n;

25FILE*rayf;int1;charc;

26myf-fopen(sfname,"w");

27printf(w\nTheoriginaldata:\n");

28for(i-l;i<30;i++)

29(c-*A**rand()%25;

R

30fprintf(myf,"%crc);

R

31printf("%crc);)

32fclose(myf);printf(w\n\n°);

33if(fun(sfname,tfname))

34printf("Succeed!");

35!elseprintf("Fail!");

或刪行,也不得更改程序的結構!36?1

標準答案:(l)"r"(2)fs(3)ft

知識點解析:fun函數要求實現的功能是將指定源文件中的內容復制到指定的目標

文件中,即以只讀方式打開源文件,以只寫方式打開目標文件,然后將源文件內的

內容復制到目標文件中。

二、程序修改題(本題共[題,每題L0分,共[分0)

2、給定程序MODI1.C中函數fun的功能是:應用遞歸算法求形參a的平方根。

xl=--(xO+—―)

求平方根的迭代公式如下:2xO例如,a為2時,平方根值為:

1.414214。請改正程序中的錯誤,使它能得出正確結果。注意:不要改動main

函數,不得增行或刪行,也不得更改程序的結構。

1?include<stdio.h>

2*include<math.h>

3/**???*****found**********/

4doublefun(doublea,dounlexO)

5{doublexl,y;

6xl?(xO*a/x0)/2.0;

7/********??found**********/

8if(fabs(xl-xo)>0.00001)

9y-fun(a,xl);

10elsey-xl;

11returny;

12

main()

14{doublex;

15printf("Enterx:**);scanf

16printf("Thesquarerootof%lf

w

is%lf\n,x#fun(x,1.0));

17i)

標準答案:(1Roublefun(doublea,doublexO)(2)if(fabs(xl-x0)>0.OOOOI)

知識點解析:(1)主函數中1.Of,x是double型變量,1.0是浮點數,可

知fun有兩個double型參數,而第一標識下“dounlc”不是C語言關鍵字,所以應世

“doublefun(doublea,dounlex0)"改為"doublefun(doublea,doublex0)”。(2)第二個標

識下的if語句是判斷進行遞歸運算的條件,第二標識下變量xO沒有定義,根據題

意,這里是判斷xl和xO的差值的絕對值是否比0.00001大,所以第二個標識下

t€ifi[fabs(xl-xo)>0.0

三、程序設計題(本題共[題,每題7.0分,共1分。)

3、程序定義了NxN的二維數組,并在主函數中自動賦值。請編寫函數fun,函數

的功能是:使數組右上三角元素中的值乘以m。例如:若m的值為2,a數組中的

I97

a=238,則返回主程序后a數組中的值應為:

456

21814

2616

值為:4512注意:部分源程序存

在文件PROG1.C文件中。請勿改動主函數main和其他函數中的任何內容,僅在

函數fun的花括號中填入你編寫的若干語句。

1?include<stdio.h>

2finclude<stdlib.h>

3?defineN5

4voidfun(inta[][N],intm)

5

6

7)

8main()

9(inta[N](NJirj;voidNONOO;

10printf(**?**?Thearray*****\n");

11for(1-0;i<N;i++)

12(for(j-0;j<N;j++)

13(a[i](j]*rand()%20;printf

14printf("\n");

15}

16dom?rand()%10;while(m>-3);

17printf("m■%4d\nH,m);

18fun(a,m);

19printf("THERESULTS”);

20for(i-0;i<N;i++)

21{for(j-0;j<N;printf

<-%4d-fa(i)(j));

22printf("\n");

23)

24NONO();

25)

26voidNONO()

27</*本函數用于打開文件,帖入數據,調用函

ft.輸出數據,關閉文件.*/

28FILE*rf,*wf;

29inti,j,n,a⑸⑸;

30rf-fopen("in.dat","r");

31wf-fopen("out.dat",Ww");

32for(i-0;i<5;i++)

33for(j?0;j<5;j++)

34fscanf(rf,"Id",(a(i)(j));

35fscanf(rf,8%d?,&n);

36fun(a,n);

37for(i-0;i<5;1+?){

38for(j-0;j<5;fprintf

w

(wf,%4d-ra(i](jD;

39fprintf(wf,"\n");

40

41fclose(rf);

42fclose(wf);

43

1iinti,j;

25for(i-0;i<N;i++)

3ifor(j-i;j<N;j++)

標準答案:4!

知識點解析:該程序功能是使數組右上半三角元素中的值乘以m。本題中首先要

確定右上角半角元素的特點,然后對元素逐個進行乘以m的操作。其中,右上角

的元素是行下標小于等于列下標的元素。

國家二級(C語言)機試模擬試卷第4

一、程序填空題(本題共/題,每題i.o分,共1分。)

1、給定程序中,函數fun的功能是:判斷形參s所指字符串是否是“回文

"(Palindrome),若是,函數返回值為1;不是,函數返回值為0?!被匚摹笆钦x和

反讀都一樣的字符串(不區(qū)分大小寫字母)。例如,LEVEL和Level是“回文”,而

LEVLEV不是“回文”。請在程序的下劃線處填入正確的內容并把下劃線刪除,使

程序得出正確的結果。注意:源程序存放在考生文件夾下的BLANKI.C中。不

得增行或刪行,也不得更改程序的結構!#include#include#includeintfun(char*s)

{char*ip,*rp;/***********found*********/Ip=[1];rp=s+strlen⑸一1;

while((toupper(*lp)==toupper(*rp))&&(ip

標準答案:(l)s(2)-----(3)return0

知識點解析:第一空:“rp=s+strleMs)-l;”可知rp指向最后一個元素,因此Ip是指

向第一個元素,因此第一空應為“s”.第二空:“l(fā)p++;rp【2】;"lp往后移動,rp

應該往前移動,故第二空處應為“一一”。第三空:“if(lp

二、程序修改題(本題共1題,每題7.0分,共2分。)

2、給定程序MODI1.C中函數fun的功能是:實現兩個整數的交換。例如給a和

b分別輸入:60和65,輸出為:a=65b=60請改正程序中的錯誤,使它能得出正確

的結果。注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構!

#includc/**********found**********/voidfun(inta,b){intt;

/*****來*東*女found比*近女上東東女東/t=b;b=a;a=t;}main(){inta,b;printf("Entera,b:");

scanf("%d,%d",&a,&b);fun(&a,&b);printf("a=%db=%d\n",a,b);}

標準答案:voidfun(intxa,int*b)t=*b;*b=*a;*a=t;

知識點解析:(1)該題明顯是指針類型的錯誤。主函數傳的形參分別是a、b的地

址,而函數fun中卻定義a、b為整型,所以第一個標識下的飛01(1向11(由12m”改為

“voidfun(int*a,int*b)“。(2)根據上面的修改,第二個標識下,"t=b;b=a;a=t;”明

顯應該是“t=*b;*b=*a;

三、程序設計題(本題共2題,每題1.0分,共2分。)

3、編寫函數fun,它的功能是:求小于形參n同時能被3與7整除的所有自然數之

和的平方根,并作為函數值返回。例如若n為1000時、程序輸出應為:

s=153.909064o注意:部分源程序在文件PROG1.C文件中。請勿改動主函數

main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。

#includc#includcdoublefun(intn){}main()/*主函數*/{voidNONO();

printf("s=^f\n",fun(1000));NONO();}voidNONO(){/*本函數用于打開文

件,輸入數據,調用函數,輸出數據,關閉文件。*/FILE*fp,*wf;inti,n;

doubles;fp=fopcn("in.clat","r");wf=fopcn("out.dat","w");for(i=0;

i<10;i++){fscanf(fp,"%d",&n);s=fun(n),fprintf(wf,s);)

fclose(fp);fclose(wf);)

標準答案:doublesum=0.0;inti;for(i=21;i<=n;i++)if((i%3==0)&&(i%

7==0))sum+=i;returnsqrt(sum);

知識點解析:(1)首先,利用循環(huán)逐個選出能同時被3與7整除的所有自然數0(2)

然后,對這些自然數求和。最后求得平方根,并返回這個值。

4、編寫函數fun,它的功能是計算下列級數和,和值由函數值返回。例如,當

n=10,x=0.3時,函數值為1.349859o注意:部分源程序在文件PROGLC文

件中。請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中

填入你編寫的若干語句。#include#includedoublefun(doublex,intn){}main()

{voidNONO():printf('%f\n",fun(0.3,10)):NONO();)voidNONO(){/*

本函數用于打開文件,輸入數據,調用函數,輸出數據,關閉文件。*/

FILE*fp,*wf;inti,n;doubles,x;fp=fopen(*in.dat","r");

wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(fp,u%lf,%d",&x,

&n);s=fun(x,n);fprintf(wf,s);}fclose(fP);fclose(wf);}

標準答案:doubles=l.0,y=x;inti;longk=l;for(i=l;i<=n;i++){k=k*i;

s+=y/k;y*=x;}returns:

知識點解析:(1)根據題干中給出的數列,推出每一項分子是在前一項的基礎上乘

以x,分母是每一項的階乘,它可以在前一項的基礎上乘以當前項的項數,即第n

項是n。(2)在循環(huán)中求得每一項,然后對其進行累加求和。

國家二級(C語言)機試模擬試卷第5

一、程序填空題(本題共1題,每題1.0分,共7分0)

1、給定程序中,函數fun的功能是:找出100至x(xW999)之間各位上的數字之和

為15的所有整數,然后輸出;符合條件的整數個數作為函數值返回。例如,當n

值為500時,各位數字之和為15的整數有: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個。請在程序的下劃線處填入正確的內

容并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下

的BLANK1.C中。不得增行或刪行,也不得更改程序的結構!

finclude<stdio.h>

2intfun(intx)

3{intn,si,s2,s3,t;

4/………*"und……?…/

5n?_1__;

6t-100;

7found*………/

8while(t<-_2_)

9(sl-t%10;s2-(t/10)%10;s3-t/100;

10if(sl+s2+s3=-15)

(printf("%d”,t);

12

13

14******found****

153;

16

17returnn;

18

19main()

20{intx-1;

21while(x>999||x<0)

22{printf("Pleaseinput(0<x<-

999):");scanf("%dWr&x);)

23printf(w\nTheresultis:%d\n",

fun(x));

24

標準答案:(l)0(2)x(3)t++或t=t+l

知識點解析:本題函數fun的功能是找出100至x(xW999)之間各位上的數字之和為

15的所有整數,需要求一個三位數x的個位、十位和百位,x%10,x/10再對10

求余、x/100分別得到x個位、十位和百位。

二、程序修改題(本題共[題,每題1.0分,共1分0)

2、給定程序MODH.C中函數fun的功能是:統計substr所指子字符串在str所指

字符串中出現的次數。例如,若字符串為aaaslkaaas,子字符串為as,則應輸出

2o請改正程序中的錯誤,使它能計算出正確的結果。注意:不要改動main函

數,不得增行或刪行,也不得更改程序的結構!

linclude<stdio.h>

2intfun(char*str,char*substr)

3{intirj,krnum?0;

4/…………found…………/

5for(i-0,str[1],i++)

6for(j-i,k-0;substr[kJ—str(j];

k++,”?)

7?found………

8If(substr(k>l]->\01)

9{num++;

10break;

12returnnum;

13

14main()

15

16charstr[80],substr(80];

17printf("Inputastring:");

18gets(str);

19printf("Inputasubstring:");

20gets(substr);

21printf("%d\n”,fun(strrsubstr));

22

標準答案:(l)for(i=0;str[i];i++)(2)if(substr[k+l]==,\O,)

知識點解析:本題中函數的功能是統計子字符串subsir在字符串sir中出現的次

數。解題過程是在str中查找指定的子串,并且統i一子串出現的次數。

三、程序設計題(本題共1題,每題1.0分,共/分C)

3、請編寫函數fun,函數的功能是求出二維數組周邊元素之和,作為函數值返

回。二維數組中的值在主函數中賦予。例如:二維數組中的值為:135792999

46999813570則函數值為61。注意:部分源程序存在文件PROG1.C文件

中。請勿改動主函數main和其他函數中的任何內容,僅在函數「un的花括號中填

?include<stdio.h>

2?defineM4

3?defineN5

4intfun(inta[M][N])

5

6

7

8main()

9(int(2,9,

9,9,4),(6,9,9,9,8},

10inti,j,y;voidNONO();

11printf("Theoriginaldatais:

\nw);

12for(i-0;i<M;

13(for(j?0;j<N;j++)printf

(w%6dw,aa[i](j]);

14printf(w\n");

15)

16y-fun(aa);

17printf(w\nThesum:%d\nw,y);

18printf("\nw);

19NONO();

20)

21voidNONO()

22{/*請在此函數內打開文件,輸入測試數據,

調用fun函數,輸出數據,關閉文件.*/

23inti,j,yrk,aa(MJ[NJ;

24FILE*rf,*wf;

25rf-fopen(Hin.datH,"rM);

26wf-fopen("out.dat","wH);

27for(k-0;k<10;k++)(

28for(i?0;i<M;i++)

29for(j-0;j<N;j**)fscanf(rf,

"%d%6aa[i][j]);

30y=fun(aa);

H

31fprintf(wf,"%d\n/y);

32}

33fclose(rf);

34fclose(wf);

入你編寫的若干語句。35)

inttot-0,Ltj;

2

3for(i-0;i<N;i++){

4tot*-a(0][i];

5[M-l][i];

6)

7for(i-1;i++)(

8totf-a[i][0];

9tot4—a(i)(N-l);

10}

標準答案:11returntot;

知識點解析:該程序功能是求出二維數組周邊元素之和。其中周邊元素是指數組的

最上和最下的兩行,最左和最右的兩列。數組第一行元素的行下標為0,最后一行

元素的行下標為M-1,第一列的列下標為0,最后一列的列下標為N-1。

國家二級(C語言)機試模擬試卷第6

一、程序填空題(本題共[題,每題1.0分,共7分。)

1、給定程序中,函數fun的功能是:找出NxN矩陣中每列元素中的最大值,并按

順序依次存放于形參b所指的一維數組中。請在程序的下劃線處填入正確的內容

并把下劃線刪除,使程序得出正確的結果。注意:源程序存放在考生文件夾下的

BLANK1.C中。不得增行或刪行,也不得更改程序的結構!#inckide#defineN4

voidfun(int(*a)[N],int*b){inti,j;for(i=0;i

標準答案:(l)a[0][i](2)〈(3)x,y

知識點解析:第一空:第二個循環(huán)是尋找每列的最大值,方法是用最大值變量b[i]

標記第一個待找數據,逐個把所有待找數據和b[i]進行比較,并用b[i]標記其當前

最大值,從而找出最大值。故第一空處為第一個待找數據第二空:由上

述的分析可知,如果b[i]小于那么用b[i]標記其當前最大值,故第二空處為

“V"。第三空:fun函數的聲明為:voidfun(int(*a)[N]?int*b)?函數的兩個參數均

是指針。故在主函數內fun函數的調用形式為“fun(x,y)”,x是二維數組首地址,y

是一維數組首地址。

二、程序修改題(本題共7題,每題1.0分,共7分。)

2、給定程序M0DI1.C中函數fun的功能是:先從鍵盤上輸入一個3行3列矩陣

的各個元素的值,然后瑜出主對角線元素之和。請改正函數fun中的錯誤或在橫

線處填上適當的內容并任橫線刪除,使它能得出正確的結果。注意:不要改司

main函數,不得增行或刪行,也不得更改程序的結構!#includeincludevoidfun()

{inta[3][3],sum;inti,j:/***********found************/

printf("Inputdata:");for(i=0;i<3;i++){for(j=0;j<3;j++)/

***********found************/scanf'%d",a[i]|j]);)for(i=0;i<3;i++)

sum=sum+a[i][i];printf("sum=%d\n",sum);)main(){fun();)

標準答案:(l)sum=0(2)scanf(H^d,",&a[i]|j]);

知識點解析:(1)根據題意計算元素求和,所以函數fun中不僅要有用于存儲累加和

的變量sum,而且要給sum賦初值。因此,填空處填上"sum=0"。(2)scanf()語句中

的實參必須是地址型的,而下標卻是整型的變量。因此第二個標識下“叫]用”

應改為

三、程序設計題(本題共7題,每題7.0分,共I分0)

3、請編寫函數fun,函數的功能是:將大于形參m且緊靠m的k個素數存入KX所

指的數組中°例如,若輸入17.5?則應輸出:19,23.29.31.37c注意:部分

源程序在文件PROG1.C文件中。請勿改動主函數main和其他函數中的任何內

容,僅在函數fun的花括號中填入你編寫的若干語句。#includevoidfun(inLm,int

k,intxx[])(}Nain(){intIn,n,zz[1000];voidNONO();printf("\nPleaseenter

twointegers:");scanf("%d%d”,&m,&n);funim,n,zz);for(m=0;m

標準答案:intr=0,temp,P,sign=l;for(temp=m+1;temp=temp)

知識點解析:進入fun函數,根據前面的分析:首先,定義、初始化變量sign,作

為素數的標志;定義r,初始化為存儲素數數組的起始位。然后,每判斷一次

lemp中的值是否為素數后,使lemp的值增1,再次對lemp中新的值進行判斷其是

否為素數,不斷循環(huán)此過程,直到m的值等于指定的個數,即函數中的k個數。

國家二級(C語言)機試模擬試卷第7

一、程序填空題(本題共,題,每題1.0分,共/分。)

1、給定程序的功能是:從鍵盤輸入若干行文本(每行不超過80個字符),寫到文件

myfile4.ixt中,用一1作為字符串輸入結束的標志。然后將文件的內容讀出顯示

在屏幕上。文件的讀寫分別由自定義函數ReadTexl和WrileText實現。請在程序

的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結果。注意:源

程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序

的結構!#inckide#include#includevoidWriteText(FILE*);voidReadText(FTLE

*);main()(FILE*fp;if((fp=fbpen(,,myfile4.txt”,"w"))=NULL){printf("open

fail!!\n,r);exit(O);jwziteTexl(fp);fcloseffp);

if((fp=fdpen(,,myfile4.txt",,Y,))=NULL){print^openfail!!\n,>);exit(O);|

ReadText(fp);fclose(fp);}/**********found**********/voidWriteTcxt(FILE

[1]){charstr|811;printtff'\nEnterstringwith—1toend:\n");gets(str);

while(strcmp(str,"一l'?!=0){/fputs([2],

fw);printf("%s'',[3]);fgcts(str,81,fr);}}fputs("\rT,fw);

gets(str);}}voidReadText(FTLE*fr){charstr|81];printR”\nReadfileandoutput

toscreen:\n");fgetsisir,81,fr);while(!leof(fr)){/

標準答案:(l)*fw(2)str(3)slr

知識點解析:第一空:此處是補充函數參數名,參數類型已知是FILE文件指針,

futs(”\n”,fw)是將字符\”寫入文件,可知fw是文件指針名,因此第一宅處應該是

voidwriieTexl(FILE*fw)0第二空:while(strcmp(strJ?l")!=O)循環(huán)的結束標志是str

字符串等于時循環(huán)退出,如果str不等于“-1”,執(zhí)行循環(huán)體內容;用fputs函數

將出字符串寫入文件。fputs函數的調用形式是:fputs(s,fp),其中s是指向字符

串的指針或字符串數組名,fp是指向將要被寫入的文件的文件指針,因此第二處

應該是fputs(str,fw)o笫三空:while(!feof(fr))循環(huán)的作用是不斷讀取文件直到到達

文件尾,每次最多讀81個,將讀到的數據放在s打字符串里,并用printf輸出到屏

幕,因此第三處應該是primf(”%s”.sir)。

二、程序修改題(本題共7題,每題7.0分,共I分0)

2、假定整數數列中的數不重復,并存放在數組中。給定程序MODII.C中函數

fun的功能是:刪除數列中值為x的元素。n中存放的是數列中元素的個數。請改

正程序中的錯誤,使它能得出正確結果。注意:不要改動main函數,不得增行或

刪行,也不得更改程序的結構。#include#defineN20intfun(int*a,intn,intx){int

p=0,i;a[n]=x;while(x!=a[p])p=p+l;/**********found**********/if(P==n)return-1;

else{for(i=p;i

標準答藁:if(p==n)return-1;a[i]=a[i+l];

知識點解析:(1)第一標識下“if(P==n)return-1;”中變量P沒有定義,編譯時會提

示出錯。根據題意,這里是判斷p是否已經到了字符串的末尾,即是否存在值為x

的元素,如果不存在則返回-1,故第一標識下應改為“if(p==n)return-1;"。(2)

“fbr(i=p;i

三、程序設計題(本題共[題,每題7.0分,共[分0)

3、請編寫函數fun,函數的功能是:刪去一維數組中所有相同的數,使之只剩一

個。數組中的數己按由小到大的順序排列,函數返回刪除后數組中數據的個數。

例如。一維數組中的數據是:2223445666677899101010。冊IJ除后,數組

中的內容應該是:2345678910o注意:部分源程序在文件PROG1.C中。請

勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編

寫的若干語句。#include#defineN80intfiin(inta[bintn){}main(){inta[N]=(2,

2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10),i,n=20;

voidNONO();printfV'Theorig

溫馨提示

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

評論

0/150

提交評論