2021年陜西省西安市全國計算機(jī)等級考試C語言程序設(shè)計真題(含答案)_第1頁
2021年陜西省西安市全國計算機(jī)等級考試C語言程序設(shè)計真題(含答案)_第2頁
2021年陜西省西安市全國計算機(jī)等級考試C語言程序設(shè)計真題(含答案)_第3頁
2021年陜西省西安市全國計算機(jī)等級考試C語言程序設(shè)計真題(含答案)_第4頁
2021年陜西省西安市全國計算機(jī)等級考試C語言程序設(shè)計真題(含答案)_第5頁
已閱讀5頁,還剩39頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2021年陜西省西安市全國計算機(jī)等級考試

C語言程序設(shè)計真題(含答案)

學(xué)校:班級:姓名:考號:

一、2.填空題(10題)

1.下面程序執(zhí)行后輸出的結(jié)果是[】。

intm=13;

intfun(intx,inty)

{intm=3;

return(x*y-m);

)

main()

{inta=7,b=5;

printf("%d\n",fun(a,b)/m);

)

2.下面程序的功能是【】。

doublesub(doublex,inty)

{intn;doublez;

for(n=1,z=x;n<y;n++)z=z*x;

returnz;}

main()

{doublea=2.0,b=4.0,c;

c=sub(a,b);printf("%f",c);}

3.以下程序的輸出結(jié)果是【】。

fun(intx,inty,intz)

{z=x*x+y*y;}

main()

{inta=31;

fun(6,3,a)

printf("%d,a)

)

4.注釋一般分為序言性注釋和注釋。

5.對有14個結(jié)點(diǎn)的完全二叉樹的結(jié)點(diǎn)以從上到下、從左到右的順序進(jìn)

行編號后,序號最小的葉結(jié)點(diǎn)的序號【】。

6.由計算機(jī)、操作系統(tǒng)、DBMS、數(shù)據(jù)庫、應(yīng)用程序及用戶組成的一個

整體叫做【】。

7.下列程序的運(yùn)行結(jié)果是【】。

#include<string.h>

char*ss(char*s)

{returns+strlen(s)/2;}

main()

{char*p,*str="abcdefgh";

p=ss(str);printf("%\n",p);

}

8.以下程序的輸出是【】。

main()

charstrl[]="Howdoyoudo",*pl=strl;

strcpy(strl+strlen(strl)/2,"esshe");

printf("%s\n",pl);

9.下列程序的運(yùn)行結(jié)果是

main()

{inti,a[10];

a[0]=a[l]=l;

for(i=2;i<5;i++)

a[i]=a[i-2]+a[i-l];

for(i=0;i<5;i++)

{if(i%2==0)printf("\n");

printf("%d",a[i]);

}

)

10.下列程序的輸出結(jié)果是【】。

main()

{inti;

for(i=l;i+l;i++)

{if(i>4)

{printf("%d\n",i);

break;}

printf("%d\n",i++);}}

二、單選題(10題)

11.設(shè)有序表中的元素為(13,18,24,35,47,50,62),則在其中利用

二分法查找值為24的元素需要經(jīng)過()次比較容易

A.lB.2C.3D.4

12.下面不屬于需求分析階段任務(wù)的是()。

A.確定軟件系統(tǒng)的功能需求B.確定軟件系統(tǒng)的性能需求C.制定軟件

集成測試計劃D.需求規(guī)格說明書評審

13.有以下程序

#include<stdio.h>

main()

{charb,c;inti;

b='a';c='A';

for(i=0;i<6;i++)

{if(i%2)putchar(i+b);

elseputehar(i+c);

}printf("\n”);

)

程序運(yùn)行后的輸出結(jié)果是

A.ABCDEFB.AbCdEfC.aBeDeFD.abcdef

14.軟件生命周期中,能準(zhǔn)確地確定軟件系統(tǒng)必須做什么和必須具備哪

些功能的階段是()o

A.概要設(shè)計B.軟件設(shè)計C.可行性研究和計劃制定D.需求分析

15.二叉樹的后序排列DBEFCA,中序排列DBAECF,那么對其做先序

線索化二叉樹,節(jié)點(diǎn)E的線索化指向節(jié)點(diǎn)0

A.BCB.ACC.DFD.CF

16.若有說明語句:double*p,a;則通過scanf語句正確給輸入項讀人

數(shù)據(jù)的程序段是()。

A.*p=&a;scanf("%lf,,p);

B.*p=&a;scanf("%f",p);

C.p=&a;scanf("%",*p);

D.p=&a;scanf("%lf,p);

17.

(1)算法的空間復(fù)雜度是指()。

A)算法程序的長度B)算法程序中的指令條數(shù)

C)算法程序所占的存儲空間D)律法執(zhí)行過程中所需要的存儲空間

18.有以下程序:

#include<stdio.h>

main()

{chars[]="012xy\O8s34f4w2t;

inti;n=0;,

for(i=0;s[i]!=O;i++)

if(s[i]>=0s[i]<=9)n++;

printf("%d\n",n);

)

程序運(yùn)行后的輸出結(jié)果是()oA.oB.3C.7D.8

19.下列程序的輸出結(jié)果是()。

駕mciifdcVvtdo.

shtnn^.b>

voidfuci(mtb[j)

(statictnii-Oi

do

?whale<??Y

matf)()

{mtIt?B(3]-1l?3?5?4?9|i

lwn(a)i

for(k-GBk<5」++)printK*llid*??tkj)i

A.13579B48579C.48549D.48999

20.程序運(yùn)行后的輸出結(jié)果是()。

#inchide<stdio.h>

main。

{

inti,j,m=1;

fbr(i=1;i<3;i++)

{fbr(j=3;j>0;j----)

{if(i*j>3)break;

=}

}

printf(,'m=?odnn,m);

)

A.m=4

B.m=2

C.m=6

D.m=5

三、程序設(shè)計題(10題)

21.編程將文件read.txt中的字符讀出顯示到屏幕上。

22....請編寫函數(shù)。fun能是:判斷形參n中的正整數(shù)是幾位數(shù)(輸入數(shù)

據(jù)的位數(shù)不超過4位),并將結(jié)果通過函數(shù)值返回。例如:若輸入的數(shù)

據(jù)為123,則輸出結(jié)果為:輸入的數(shù)字是3位。注意:部分源程序存在

PR0G1.C中,請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函

數(shù)fun的花括號中填入所縮寫的若干語句。試題程

linclude<stdio.h>

voidNONOO;

intfun(intn)

main()

{intn,place;

do(

printf(”請輸入一個4位以內(nèi)的正整數(shù):■);

scanf&n);

)while(n<0IIn>9999);

place-fun(n);

printf("輸入的數(shù)字是3位place);

NONO();

)

voidNONO()

</?本函數(shù)用于打開文件,輸入數(shù)據(jù).調(diào)用雨敷,輸出數(shù)據(jù),關(guān)閉文件。?/

FILE?fp,?wf;

inti,n,place;

fp-fopen(wc:\test\in.dat","r");

wf-fopen("c:\test>cut.datw,Hw-);

for(i-0;i<10;i-H-)

(

fscanf(fp,"Id。,4n);

place=fun(n);

fprintf(wfr"%d\n"rplace);

>

fclose(fp);

fclose(wf);

序:,

23.請編一個函數(shù)fun(char*str),該函數(shù)的功能是把字符串中的內(nèi)容逆

置。例如,字符串中原有的字符串為asdfg,則調(diào)用該函數(shù)后,串中的

內(nèi)容為gfdsa。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在

函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

gMtdwdc<string.h>

iflcludrVcom0k

SincludeVsidio.

FdefineN100

voidfunCehar?Mr>

vo?dtnatn<)

chara[N]i

FILE?<Mit>

pntid<*Enter■?tnn<ie>i

print"*Theor<tMlwtnnc?)1

pvt?(a>s

pnM((aTheMrtnga/itrmo4iftedi*>i

?irepy(??*Welrome!*)t

fun<l>S

<Xilwfopea(.gtlile.)|

fprinrftgt.?蘇??..).

fck?e<otft)t

24.規(guī)定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,其功能是:

除了字符串前導(dǎo)的*號之外,將串中其他*號全部刪除。在編寫函數(shù)時,

不得使用c語言提供的字符串函數(shù)。

例如,字符串中的內(nèi)容為:****A*BC*DEF*G*******,刪除后,字符

串中的內(nèi)容應(yīng)當(dāng)是:

****ABCDEFG。

注意:部分源程序在文件PR0G1.C中。

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括

號中填入你編寫的若干語句。

#include<stdin,h>

voidfun(rhar?■)

main()

chars[81];voidNONO();

printf(*Enterastring:\nN);geu(B);

fun(、):

|irintf("Thestringafterdeleted:\n");puts(?);

NONO():

voidNONO()

!/?本南數(shù)用于打開文件.輸入數(shù)據(jù),調(diào)用函數(shù),臨出數(shù)據(jù),關(guān)閉文件.?/

FILE?in,?oul;

mtt;chars[81J;

in=fopen("in.dat",**r**);

outwfopcn("out.dat**.ww*);

fw(i=

f?canf(in.**%?*,?);

fun(?)(

fprinlf(out.H%?\n**..);

(cloec(in);

IcloseCout);

25.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方

案的項目中包含一個源程序文件progl.c。在此程序中,定義了NxN的

二維數(shù)組,并在主函數(shù)中賦值。請編寫函數(shù)fun(),其功能是求出數(shù)組

周邊元素的平均值并將其作為函數(shù)值返回給主函數(shù)中的s。例如,若a

數(shù)組中的值為

01279

19745

23831

45682

59141

則返回主程序后s的值應(yīng)為3.375o

注意:部分源程序在文件progl.c中。

請勿改動主函數(shù)main。和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花

括號中填入你編寫的若干語句。

試題程序:

1#include<stdio.h>

2#include<conio.h>

3#include<stdlib.h>

4#defineN5

5doublefun(intw[][n])

6{

7

8)

9voidmain()

10{

11FILE*wf;

12inta[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,

13inti,j;

14doubles;

15system("CLS");

16printf("***Thearray***\n");

17for(i=0;i<N;i++)

18{for(j=0;j<N;j++)

19{printf("%4d",a[i][j]);}

20printf("\n");

21}

22s=fun(a);

23printf("***TheResult***\n");

24printf("Thesumis:%lf\n",s);

25/******************/

26wf=fopen("out.dat","w");

27fprintf(wf,"%if',s);

28fclose(wf);

29/******************/

30}

26.下列程序定義了MxM的二維數(shù)組,并在主函數(shù)中自動賦值。請編

寫函數(shù)fun(intarr口[M]),該函數(shù)的功能是使數(shù)組左下半三角元素中的

值全部置成0。例如,arr數(shù)組中的值為:

I23

■rrw4S6

7?。

中的值應(yīng)力.

023

art-00?

OOo

注意:部分源程序給出如下。

請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括

號中填入所編寫的若干語句。

試題程序:

ttVen*(K

MidtMftrVzdio.

9include<*ldbK

8includeVtime.Ii>

adefineM5

voidpror<mtarr£:二M2)

voidmainC)

mtart,M2[M^?i?ji

*ywtrm(*Cl.S*>?

p<rtnt((*????Thearray????\n*”

(uttMgiird)time<NULD)i

foc(i-O.i<M11++1

m一個i?機(jī)的

-famil>M10s

print(<*K4dM??rtLiJUJ)i

pnntf(N\n*)s

pfoc^arr)?

prtmfCTHERESVLT\tTh

forG-0t><^Msi?*)

,or?j?0"V+

pnixfC-%4d'.?Mi,

27.m個人的成績存放在score數(shù)組中,請編寫函數(shù)proc(),它的功

能是:將高于平均分的人數(shù)作為函數(shù)值返回,將高于平均分的分?jǐn)?shù)放

在up所指的數(shù)組中。例如,當(dāng)score數(shù)組中的數(shù)據(jù)為100,80,76,

60,59,48,43,35,59時,函數(shù)返回的人數(shù)應(yīng)該是4,up中的數(shù)據(jù)

應(yīng)為100,80,76,95o注意:部分源程序給出如下。請勿改動

main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號

中填入所編寫的若干語句。試題程序:

itV.idlib.Ii>

?tincludeVcomo.b>

SinHifde<Btdio.

includeV-mng,h>

iMprocCkiM?core{]?intm?intup£j)

〃?內(nèi)高于f均分MA.Ct

votd01*19()

iaii?n?up(9;i

ini,IOO.8O.76.6O.59.

4S?43?3S?9SI?

?y?trNi(d3a)?

nwproc(scorv?9?up)i

pru>tl(\ntipioihr*corv*1*":'uv\n?n);

loc(i?ON<ti.i++)

*9*id"?upLij4

28.請編寫函數(shù)fun,其功能是:找出一維整型數(shù)組元素中最大的值所

在的下標(biāo),并通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。

主函數(shù)中x是數(shù)組名,n是x中的數(shù)據(jù)個數(shù),max存放最大值。index

存放最大值所在元素的下標(biāo)。

注意:部分源程序給出如下。

請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花

括號中填入你編寫的若干語句。

試題程序:

"include<timv.h>

stincludeVstdlib.h>

9includeVstdio.h>

void(un(in(a[1?int?max?in(?d)

vntHmnin()

inii,x[20j,max*index*n'10(

sranf((unsigned)time(NULL))t

for(i=(hiV=iui++)

(

x[ij=rand()%50t

printf(M%4dH?x£i]>j"輸出一個fill機(jī)數(shù)"I

prinif<*\n")?

fun(x?n?&max?&index)?

printf("Max-%5d.Index=%1d\n".max.in-

dex)?

29.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方案

的項目中包含一個源程序文件progl.co在此程序中,請編寫函數(shù)fun(),

該函數(shù)的功能是判斷字符串是否為回文,若是,則函數(shù)返回1,在主函

數(shù)中輸出“YES”,否則返回0,在主函數(shù)中輸出“NO”。回文字符串是指順

讀和倒讀都一樣的字符串。例如,字符串LEVEL是回文,而字符串

123312就不是回文。注意:部分源程序在文件progl.c中。第3部分無紙

化考武題庠請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)

fun()的花括號中填入你編寫的若干語句。試題程序:

1#include2#defineN803intfun(char*str)4{56}7main()8{9chars[n];1OFILE*o

ut;llchar*test[]={"1234321","123421","123321","abcdCBA");12inti;13pri

ntf("Enterastring:");14gets(s);15printf("\n\n");16puts(s);17if(fun(s))18printf(

"YES\n");l9else20printf("NO\n");2]/******************/22out=fopen("

out.dat","w");23for(i=0;i<4/i++)24if(fun(test[i]))25fprintf(out,"YES\n");26e

lse27fprintf(out,"NO'n");28fclose(out);29/******************/30}

30.編寫函數(shù)fun,其功能是:求ss所指字符串中指定字符的個數(shù),并返

回此值。

例如,若輸入字符串123412132,輸入字符為1,則輸出3。

注意:部分源程序在文件PR0G1.C中。

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括

號中填入你編寫的若干語句。

Winclude<stdio.h>

itincludc<string,ii>

M8!

intfun(rhnr?charc)

main()

|chura;MJ,ch;

voidNONO():

printf("\nPlmseenterastring:");grb?(a);

printf(**XnPleaseenterachar:"I;ch=grtchar();

printf(w\nThcnumberofthecharis:%d\n**.fun(?.ch));

NONO():

voidNONO()

|/?本函數(shù)用于打開文件,輸入測試數(shù)據(jù),調(diào)用fun函數(shù).檢出數(shù)據(jù),關(guān)閉文件。*/

inii:

FILE*rf,?M1

rhara(Mj,b(M],ch;

rf-fbf)cn("imqht"Jr");

wf=r(>prn("ouLdal'*w");

fbr(is0;i<10?i?-f)|

(Bcnnf(rf,M%?**.a);

ftwanf(if,M%sM.b);

ch=?b;

fprinlf(wf.".ch.fun(a?ch));

(clone(if);

fcl<we(wf);

四、2.程序修改題(10題)

31.下列給定程序中,函數(shù)fun()的功能是:給一維數(shù)組a輸入任意4個

整數(shù),并按如下的規(guī)律輸出。例如輸入1,2,3,4,程序運(yùn)行后輸出以

下方陣:

4123

3412

2341

1234

請改正程序中的錯誤,使它能得出正確的結(jié)果。

注意;不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序;

#include<stdio.h>

#defineM4

voidfun(inta)

{inti,j,k,m;

printf("Enter4number:");

for(i=0;i<M;i++)scanf("%d",&a[i]);

printf("\n\nTheresult:\n\n");

for(i=M;i>0;i—)

{k=a[M-l];

for(j=M-l;j>0;j—)

a[j]=a[j+l];

a[0]=k;

for(m=0;m<M;m++)printf("%d",a[m]);

printf("\n");

)

)

main()

{inta[M];

fun(a);printf("\n\n");

32.給定程序MODE.C中函數(shù)fun的功能是:從整數(shù)1到55之間,選

出能被3整除、且有一位上的數(shù)是5的那些數(shù),并把這些數(shù)放在b所指

的數(shù)組中,這些數(shù)的個數(shù)作為函數(shù)值返回。規(guī)定,函數(shù)中al放個位數(shù),

a2放十位數(shù)。

請改正程序中的錯誤,使它能得出正確結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

1finclude<stdio*h>

2intfun(int*b)

3{intalra2ri-0;

4for(k-10;k<?55;k++){

5*****?**/

6a2-k/10;

7al-k-a2*10;

8if((k%3??0&&a2-?5)||(k%3-0

&&al?=5))

9(b(i)?k;

10}

11/************found***?????*???/

12returnk;

13}

14main()

15{inta[100],krm;

16m?fun(a);

17printf("Theresultis:\nw);

wn

18for(k=0;k<m;k++)printf(%4dr

a[k]);printf(H\nw);

19

33.給定程序MOD11.C中函數(shù)。fun的功能是:從3個紅球,5個白

球,6個黑球中任意取出8個作為一組,進(jìn)行輸出。在每組中,可以沒

有黑球,但必須要有紅球和白球。

組合數(shù)作為函數(shù)值返回。正確的組合數(shù)應(yīng)該是15。程序中i的值代表紅

球數(shù),j的值代表白球數(shù),k的值代表黑球數(shù)。

請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

1?include<stdio.h>

2intfun()

3(intifjrsum*0;

4printf(w\nTheresult:\n\n");

5/*吉****★★★★***found**?*****??**?/

6for(i*0;i<=3;i++)

7(for(j?l;j<=5;j++)

8{k?8-i-j;

9/…★………found

10if(K>?0&&K<-6)

11{sum*sum4-l;

12printf("red:%4dwhite:

vv

%4dblack:14d\n,irjrk);

13

14

15

16returnsum;

17)

18main()

19{intsum;

20sum=fun();

M

21printf("sum?%4d\n\nrsum);

22)

34.給定程序M0D11.C中函數(shù)fun的功能是:從n(形參)個學(xué)生的成績

中統(tǒng)計出低于平均分的學(xué)生人數(shù),此人數(shù)由函數(shù)值返回,平均分存放在

形參aver所指的存儲單元中。

例如,若輸入8名學(xué)生的成績:80.5607290.59851.58864則低于

平均分的學(xué)生人數(shù)為:4(平均分為:75.5625)。

請改正程序中的錯誤,使它能統(tǒng)計出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

1;#include<stdio.h>

2!#defineN20

3intfun(float*srintn,float

*aver)

4(floatave#t?0.0;

5intcount?0rk,i;

6for(k-0;k<n;k++)

7/??foundmff*/

8t=s[k];

9ave?t/n;

10for(i?0;i<n;i++)

11if(s[i]<ave)counts-1-;

12/………★…found……?……/

13*aver?Ave;

14returncount;

15I

16main()

17{floats[30],aver;

18intm,i;

19printf("\nPleaseenterm:

ww

scanf(%dr&m);

20printf(R\nPleaseenter%dmark:

\n”,m);

21for(i-0;i<m;i++)scanf

M

(%frs+i);

22printf(w\nThenumberofstudents:

%d\n”,fun(s,m,&aver));

wM

23printf(Ave?%f\nraver);

24)

35.下列給定程序是建立一個帶頭結(jié)點(diǎn)的單向鏈表,并用隨機(jī)函數(shù)為各

結(jié)點(diǎn)數(shù)據(jù)域賦值。函數(shù)fun()的作用是求出單向鏈表結(jié)點(diǎn)(不包括頭結(jié)點(diǎn))

數(shù)據(jù)域中的最大值,并且作為函數(shù)值返回。

請改正程序中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

typedefstructaa

{intdata;

structaa*next;

}NODE;

/*************foun(

fun(NODE*h)

{intmax=-1;

NODE*p;

p=h->next;

while(p)

{if(p->data>max)

max=p->data;

/*************found**************/

p=h->next;

returnmax;

}

outresult(ints,FILE*pf)

{fprintf(pf,"\nThemaxinlink:%d\n

NODE*creatlink(intn,intm)

{NODE*h,*p,*s,*q;

inti,x;

h=p=(NODE*)malloc(sizeof(NODE));

h->data=9999;

for(i=l;i<=n;i++)

{s=(NODE*)malloc(sizeof(NODE));

s->data=rand()%m;s->next=p->next;

p->next=s;p=p->next;

p->next=NULL;

returnh;

)

outlink(NODE*h,FILE*pf)

{NODE*p;

p=h->next;

fprintf(pf,"\nTheLIST:\n\nHEAD");

while(p)

{fprintf(pf,>%d",p->data);

p=p->next;}

fprintf(pf,"\n");

)

main()

{NODE*head;intm;

clrscr();

head=creatlink(12,100);

outlink(head,stdout);

m=fun(head);

printf("\nTheRESULT:\n");outresult

(m,stdout);

)

36.下列給定程序中,函數(shù)fun。的功能是:判斷一個整數(shù)m是否是素

數(shù),若是返回L否則返回0。在main()函數(shù)中,若fun()返回1則輸出

YES,若fun()返回0則輸出NO!

請改正程序中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).

試題程序:

#include<conio.h>

#include<stdio.h>

intfun(intm)

{intk=2;

while(k<=m&&(m%k))

k++

if(m=k)

return1;

elsereturnO;

)

main()

{ihtn;

clrscr();

printf("\nPleaseentern:");

scanf("%d",&n);

if(fun(n))printf("YES\n");

elseprintf("NO!\n");

37.給定程序MOD11.C中函數(shù)fun的功能是:為一個偶數(shù)尋找兩個素

數(shù),這兩個素數(shù)之和等于該偶數(shù),并將這兩個素數(shù)通過形參指針傳回主

函數(shù)。

請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

?include<stdio.h>

2?include<math.h>

3voidfun(inta,int*b,int*c)

4(int

5for(i-3;i<-a/2;i-i42)(

6/?…………found…?………/

7Y-1;

8for(j-2;j<-sqrt((double)i);

j++)

9if(i%j??0)y?0;

10if(y-1)(

11j/??***********foundw*******?**??/

12!d?-a-i;

13for(j-2;j<-sqrt((double)d);

14if(d%j??0)y?0;

15if(y—1)

16{*b?i;*c*d;}

17

18

19

20main()

21(inta,bfc;

22do

23{printf(w\nlnputa:");scanf

LW,,a);)

24while(at2);

25fun(a,6c);

ww

26printf(\n\n%d?%d.%d\nra#brc);

27

38.數(shù)列中,第一項為3,后一項都比前一項的值增5。下列給定程序中,

函數(shù)fun()的功能是:計算前n(4SnS50)項的累計和。在累加過程中把那

些被4除后余2的當(dāng)前累加值放入數(shù)組中,符合此條件的累加值的個數(shù)

作為函數(shù)值返回主函數(shù)里。如,當(dāng)n的值為20時,該數(shù)列為3,8,13,

18,23,28,93,98o符合此條件的累加值應(yīng)為42,126,366,

570,1010o

請改正程序中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<stdio.h>

#defineN20

intfun(ihtn,int*a)

/*************found*************/

{inti,j,k,sum;

sum=0;

for(k=3,i=0;i<n;i++,k+=5)

{sum=sum+k;

/************found***************/

if(sum%4=2)

a[j++]=sum;

/*************found**************/

returnj;

main()

{inta[N],d,n,i;

printf("\nEntern(4<=n<=50):");

scanf("%d",&n);

d=fun(n,a);

printf("\n\nTheresult:\n");

for(i=0;i<d;i++)printf("%6d",a[i]);

printf("\n\n");

39.假如整數(shù)數(shù)列中的數(shù)不重復(fù),并存放在數(shù)組中。下列給定的程序中,

函數(shù)fun()的功能是:刪除數(shù)列中值為X的元素。N中存放的是數(shù)列中

元素的個數(shù)。

請改正程序中的錯誤,使它能夠得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<stdio.h>

#defineN20

fun(int*a,intn,intx)

{intp=0,i;

a[n]=x;

while(x!=a[p])

P=P+1;

if(p==n)return-1;

else

{for(i=p;i<n;i++)

/*************found**************/

a[i+l]=a[i];

returnn-1;

main()

{intw[N]={-3,0,1,5,7,99,10,15,30,90),

x,n,i;

n=10;

printf("Theoriginaldata:\n");

for(i=0;i<n;i++)printf("%5d",w[i]);

printf("\nlnputx(todelete):");

scanf("%d",&x);

printf("Delete:%d\n",x);

n=fun(w,n,x);

if(n==-l)printf("***Nobefound!

***\n\n");

else

{printf("Thedataafterdeleted:\n");

for(i=0;i<n;i++)printf("%5d",

w[i]);printf("\n\n");

40.給定程序M0D11.C中函數(shù)fun的功能是:根據(jù)以下公式求加值,

并作為函數(shù)值返回。

例如,給指定精度的變量eps輸入0.0005時,應(yīng)當(dāng)輸出Pi=3.141480。

23353573579

請改正程序中的錯誤,使它能得出正確結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

1tinclude<math.h>

2[finclude<stdio.h>

3jdoublefun(doubleeps)

4?{doubles,t;intn?l;

5s-0.0;

6?/***********wfound*****?*?*?*?

7t-0;

8while(t>eps)

9(s+?tj

10;t-t?n/(2*n>l);

11!

12;)

13\???***??**?*found*#****??**??

14\

return(s);

15?

16fimain()

17?{doublex;

18!printf("\nPleas?entera

precision:H);scanf(w%lf&x)

19printf("\neps?%lfr

w

Pi-%lf\n\n,xrfun(x));

20}

五、程序改錯題(2題)

41.

下列給定程序中,函數(shù)fun()的功能是:將tt所指字符串中的小寫字

母全部改為對應(yīng)的大寫字母,其他字符不變。例如,若輸入“Ab,cD”,

則輸出“AB,CD”。請改正程序中的錯誤,使它能得出正確的結(jié)果。注

意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

試題程序:

耳tftclvdeVctMwo.

includeVstdio,b>

9includeVzring.h>

char?lun《char<t[J>

infii

//????found????

Il“i(iJ<?',',)

//????????

tt[i]?

rrtwraCft)i

voidm>in(>

char

pnntfC*\nf*Se*MenteraMnog:">?

get?(tt)t

pnntfCv\nTh?EokMnng*B>KAna?fwn(tt))?

42.

下列給定程序中,函數(shù)proc()的功能是:計算并輸出下列級數(shù)的前N

項之和SN,直到SN+1大于q為止。q的值通過形參傳人。SN=2/1+3

/2+4/3+(N+l)/N例如,若q的值為57,則函數(shù)值為59.593612。

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

()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

「includeVpt(UiKk>

UincludeVcottioib>

9include<stdicxh>

//????fownd????

doubleproHdoubleq>

minsdovkle

wh?Je<.<1)

ft????|OUM|????

?urn-sum4-<nI>/nt

■++<

//????fou?4????

rvtiaraMicni

voidmainC>

By?i<tn(*CLS*)i

pnntf(*%(\n-?proc<^0)H

六、操作題(2題)

43.下列給定程序中,函數(shù)fun()的功能是:按順序給s所指數(shù)組中的元

素賦予從2開始的偶數(shù),然后再按順序?qū)γ?個元素求一個平均值,并

將這些值依次存放在w所指的數(shù)組中。若s所指數(shù)組中元素的個數(shù)不是

5的倍數(shù),多余部分忽略不計。例如,s所指數(shù)組有14個元素,則只對

前10個元素進(jìn)行處理,不對最后的4個元素求平均值。

請改正函數(shù)fun()中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

#include<stdio.h>

#defineSIZE20

fun(double*s,double*w)

{intk,i;doublesum;

for(k=2,i=0;i<SIZE;i++)

{s[i]=k;k+=2;}

sum=0.0;

for(k=0,i=0;i<SIZE;i++)

{sum+=s[i];

/*************found**************/

if(i+l%5==0)

{w[k]=sum/5;Sum=0;k++;)

)

returnk;

)

main()

{doublea[SIZE],b[SIZE/5];

inti,k;

k=fun(a/b);

printf("Theoriginaldata:\n");

for(i=0;i<SIZE;i++)

(

if(i%5==0)printf("\n");

printf("%4.0f"/a[i]);

}

printf{"\n\nTheresult:\n");

for(i=0;i<k;i++)printf("%6.2f,b[i]);

printf("\n\n");

44.以下程序的功能是:輸出a、b、c三個變量中的最小值。

#include<stdio.h>

main()

{inta,b,c,tl,t2;

scanf("%d%d%d",&a,&b,&c);

tl=a<b?[];

t2=c<tl?[];

printf("%d\n",t2);

參考答案

1.22解析:本題變量m既是外部變量(值是13),又是fun函數(shù)的局部

變量(值為3)o函數(shù)fun(x*y-m)的值為7*5-3=32,在main函數(shù)中,

fun(a,b)/m中的m應(yīng)取外部變量的值13,因此輸出2。

2.本程序的功能是求a的b次方本程序的功能是求a的b次方

3.3131解析:在函數(shù)調(diào)用時,形參值和改變,不會改變實參的值。

4.功能性功能性解析:注釋一般分為序言性注釋和功能性注釋。序言性

注釋通常位于每個程序的開頭部分,給出程序的整體說明;功能性注釋

一般嵌在源程序體之中,主要描述其后的語句或程序做什么,

5.8

6.數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng)

7.efghefgh解析:函數(shù)ss的作用是讓形參指針s指向該字符串的右半部

分。主函數(shù)中首先定義了一個字符型指針變量p和字符型指針str,并

初始化為“abcdefgh”,然后調(diào)用函數(shù)ss,將實參str傳給形參s,因此可

知該函數(shù)返回的指針,指向str所指的字符串“abcdefgh”的右半部分,即

指向字符串“efgh”,所以最后輸出指針p(指針p的值為調(diào)用函數(shù)ss(str)

的返回值)所指向的字符串為“efgh”。

8.HowdoessheHowdoesshe解析:strcpy(strl,si);字符串拷貝函數(shù),

作用是將字符串si拷貝到字符數(shù)組strl中去。strlen(str):測試字符串str

的長度,函數(shù)的值為字符串中實際長度,不包括在內(nèi)。本題中

strlen(strl)的值為13,貝IJstrcpy(strl+strlen(strl)/2,'esshe');相當(dāng)于

strcpy(strl+6,'esshe');,因此可得答案為Howdoesshe

9.11<CR>23<CR>5(<CR代表換行)11<CR>23<CR>5(<CR,

代表換行)解析:本題通過語句“for(i=2;i<5;i++)a[i]=a[i-2]+a[i-];”將數(shù)

組中前面兩項的和賦值給數(shù)組當(dāng)前元素,得到a的值應(yīng)為(1,1,2,3,5)。語

句if(i%2==0)pfintf(,\\n,)是要將數(shù)組中的元素以每行2個的形式輸出。

10.1351\r\n3\r\n5解析:本題考查了for循環(huán)語句的使用,break語句用

在本題中是結(jié)束for循環(huán)直接跳出循環(huán)體外。當(dāng)i=l時,因為if語句條件

不滿足,所以直接執(zhí)行printf(1%d\\n',i++);輸出1,同時i自加1;執(zhí)行第

二次for循環(huán)時,i=3;同樣的if語句條件不滿足,所以直接執(zhí)行

printf(%d\\n;i++);輸出3,同時i自力口1;執(zhí)行第三次for循環(huán)時,i=5,if

語句條件滿足,所以執(zhí)行printf(%d\\n,,i),輸出5,然后break語句跳出了

for循環(huán)。

11.C

12.C

【答案】:C

【知識點(diǎn)】:需求分析階段的任務(wù)

【解析】:需求分析階段的任務(wù)是深入描述軟件的功能和性能,確定

軟件設(shè)計的約束和軟件同其他系統(tǒng)元素的接口細(xì)節(jié),定義軟件的其他

有效性需求,借助于當(dāng)前系統(tǒng)的邏輯模型導(dǎo)出目標(biāo)系統(tǒng)邏輯模型,解

決目標(biāo)系統(tǒng)“做什么”的問題。可分為需求提出、需求描述及需求評審

三個階段。從此可以看出需求分析的任務(wù)不包括制定軟件集成測試計

劃,故選C。

13.B

解析:變量b和c中分別存放字符a和A的ASCII碼,當(dāng)i的值對2

求余非零時輸出ASCII碼為i+b)的字符;當(dāng)i的值對2求余為零時輸

出ASCII碼為i+c的字符。分析程序可知本題選B。

14.DW通常,將軟件產(chǎn)品從提出、實現(xiàn)、使用維護(hù)到停止使用、退役的

過程稱為軟件生命周期。也就是說,軟件產(chǎn)品從考慮其概念開始,到該

軟件產(chǎn)品不能使用為止的整個時期都屬于軟件生命周期。軟件生命周期

的主要活動階段為:可行性研究和計劃制定。確定待開發(fā)軟件系統(tǒng)的開

發(fā)目標(biāo)和總的要求,給出它的功能、性能、可靠性以及接口等方面的可

能方案,制定完成開發(fā)任務(wù)的實施計劃。

W需求分析。對待開發(fā)軟件提出的需求進(jìn)行分析并給出詳細(xì)定義,即準(zhǔn)

確地確定軟件系統(tǒng)的功能。編寫軟件規(guī)格說明書及初步的用戶手冊,提

交評審。

\n軟件設(shè)計。系統(tǒng)設(shè)計人員和程序設(shè)計人員應(yīng)該在反復(fù)理解軟件需求的

基礎(chǔ)上,給出軟件的結(jié)構(gòu)、模塊的劃分、功能的分配以及處理流程。

\n軟件實現(xiàn)。把軟件設(shè)計轉(zhuǎn)換成計算機(jī)可以接受的程序代碼。即完成源

程序的編碼,編寫用戶手冊、操作手冊等面向用戶的文檔,編寫單元測

試計劃。

\n軟件測試。在設(shè)計測試用例的基礎(chǔ)上,檢驗軟件的各個組成部分。編

寫測試分析報告。

\n運(yùn)行和維護(hù)。將已交付的軟件投入運(yùn)行,并在運(yùn)行使用中不斷地維護(hù),

根據(jù)新提出的需求進(jìn)行必要而且可能的擴(kuò)充和刪改。

\n本題答案是D)o

\n

15.D

16.D

double*p,a定義了一個指向雙精度型的指針變量P和雙精度型變量

a,p=&a表示將變量a的地址賦給指針變量p;scanf("%If,p)表示用

鍵盤輸入的數(shù)賦給指針變量P所指向的地址單元中,scanf函數(shù)要求在

輸入double型數(shù)據(jù),格式控制符必須用%If。否則,數(shù)據(jù)不能正確輸

入。所以選項D正確。

17.D

18.B

考查簡單的C程序數(shù)組和循環(huán)。for循環(huán)是指i=0,如果s/[3]!=0,則

i自動加1。if循環(huán)指的是s國中的元素大于等于。且小于等于9,則n

加1,所以答案為B

溫馨提示

  • 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

提交評論