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

下載本文檔

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

文檔簡介

2021年甘肅省張掖市全國計算機等級考試

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

學校:班級:姓名:考號:

一、2.填空題(10題)

1.在關(guān)系模型中,把數(shù)據(jù)看成一個二維表,每一個二維表稱為一個

2.C語言用于結(jié)構(gòu)化程序設(shè)計的3種基本結(jié)構(gòu)是_____選擇結(jié)構(gòu)和循

環(huán)結(jié)構(gòu)。

3.以下程序的運行結(jié)果是()。main(){inta=l,b=2,c;if(a>B)c=l;

elseif(a==B)c=0;elsec=-1;printf("%d\n",C);)

4.下列程序的輸出結(jié)果是____o

main()

{inti=0,a=0;

while(i<20)

{M;;)

{if((i%10)==0)break;

elsei—;}

i+=ll;

a+=i;

printf("%d\n",A)

5.以下程序運行后的輸出結(jié)果是【】。

#include<stdio.h>

main()

{inta=l,b=3,c=5;

if(c=a+b)printf("yes\n");

elseprintf("no\n");

6.設(shè)Y是int型變量,請寫出判斷Y為奇數(shù)的關(guān)系表達式【】。

7.函數(shù)YangHui的功能是把楊輝三角形的數(shù)據(jù)賦給二維數(shù)組的下半三

角,形式如下:

1

11

121

1331

14641

其構(gòu)成規(guī)律是:

①第0列元素和主對角線元素均為1;

②其余元素為其左上方和正上方元素之和;

③數(shù)據(jù)的個數(shù)每行遞增lo

請將程序補充完整。

#defineN6

voidYangHui(intx[N][N])

{inti,j;x[0][0]=l;

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

{x[i][O]=x[i][i]=l;

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

x[i][j]=[];

8.設(shè)有如下程序段:

inti=0,sum=1;

do

{sum+=i++;}

while(i<6);

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

上述程序段的輸出結(jié)果是【】。

9.設(shè)有下列程序:

#include<stdio.h>

#include<string.h>

main()

{inti;

chars[10],t[10];

gets(t);

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

{gets(s);

if(strcmp(t,s)<0)strcpy(t,s);

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

}

程序運行后,從鍵盤上輸入(<CR>代表回車符):CDEF<CR>BADEF

<CR>QTHRG<CR>,則程序的輸出結(jié)果是。

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

longfun5(intn)

(longs;

if((n==l)II(n==2))

s=2;

else

s=n+fun5(n-l);

retum(s);

}

main()

{longx;

x=fun5(4);

printf(%ld\n",x);

二、單選題(10題)

11.計算機硬件組成中,CPU包含_____o

A.控制器和存儲器B.控制器和運算器C.控制器、運算器和存儲器D.

內(nèi)存儲器和外存儲器

12.下列程序段的時間復雜度為()。

i=l;k=0;

while(i<=n-l){

k+=10*i;

if

A.O(n)B.O(n-l)C.O(n2)D.O(log2n)

13.

(20)設(shè)x和y都是皿類型,且x=1,y=2,則printf("%d%d",x,y,(x,y))的輸出結(jié)果是().

A)12B)122C)1,2D)輸出值不確定

14.設(shè)有一個10階的對稱矩陣A,采用壓縮存儲方式,以行序為主存儲,

all為第一元素,其存儲地址為1,每個元素占一個地址空間,則a85的

地址為0。

A.13B.33C.18D.40

15.已知有如下結(jié)構(gòu)體:

structsk

{inta;floatb;}data,*p;

若有P=&data,則對data的成員a引用正確的是()。

A.(*p).data.aB.(*p).a;C.p->data.aD.p.data.a

16.有以下程序(說明:字母A的ASCII碼值是65):

#include<stdio.h>

voidfun(char*s)

{while(*s)

{if(*s%2)printf("%C",*s);

s++;

main()

{chara[]="BYTE";

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

)

程序運行后的輸出結(jié)果是()oA.BYB.BTC.YTD.YE

17.數(shù)據(jù)處理的最小單位是()。

A.數(shù)據(jù)B.數(shù)據(jù)元素C.數(shù)據(jù)項D.數(shù)據(jù)結(jié)構(gòu)

18.設(shè)x=OnO5O,貝ljx=x&01252的值是()。

A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

19.兩個或兩個以上模塊之間關(guān)聯(lián)的緊密程度稱為()o

A.耦合度

B.內(nèi)聚度

C.復雜度

D.數(shù)據(jù)傳輸特性

20.在一個單鏈表HL中,若要在指針q所指結(jié)點的后面插入一個由指針

P所指向的結(jié)點,則執(zhí)行—O

A.q—>next=p—>next;p—>next=q;

B.q—>next=p—>next;p—>next=q;

C.p—>next=q—>next;q=p;

D.p—>next=q—>next;q—>next=p;

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

21.實現(xiàn)字符串拷貝的函數(shù)strcpy為()。

22.

請編寫一個函數(shù)intproc(int*s,intt,int*k),用來求出數(shù)組的最小元素

在數(shù)組中的下標并存放在k所指的存儲單元中。例如,輸入如下整數(shù):

27393445362489342111831527246則輸出結(jié)果為4,89O注意:部

分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,

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

0mdwitV

9indudrVCOIMCK

9includrh>

voidproe(i*t?i?int?k)

void)

int夕3,934U53.04?N?M2.111

?31.W?24<Kki

*yutetnC"CLS*)i

IO?&-k)s

pnntf<eSd?K<f\o*?k?arr{kj>i

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

目中包含一個源程序文件progi.c。在此程序中,請編寫函數(shù)fun(),其

功能是在一組得分中,去掉一個最高分和一個最低分,然后求平均

值,并通過函數(shù)返回該值。函數(shù)形參a指向存放得分的數(shù)組,形參n

中存放得分個數(shù)(n>2)。例如,若輸入8.4共

10個得分,則輸出結(jié)果為8.687500。注意:部分源程序存放在文件

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

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

1finclude<stdio.h>

2voidNONOO;

3doublefun(doublea[],intn)

■{

6}

7main()

8{doubleb[10],r;inti;

9printf("輸入10個分數(shù)放入b數(shù)組

鬻中:;

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

11scanf;

12printf("輸入的10個分數(shù)是:”);

13for(i-0;i<10;i++)

14printf("%4.Ilf",b[i]);

15printf("\n");

16r=fun(b,10);

17|printf("去掉最高分和最低分后的

平均分:%f\n",r);

18NONO();

■}

20voidNONO()

21{/?本函數(shù)用于打開文件、輸入數(shù)據(jù)、調(diào)

用函數(shù)、榆出數(shù)據(jù)及關(guān)閉文件?/

FILE*fp,?wf;

23intirj;

24|doubleb[10]rr;

25fp=fopen\wrn);

26wf=fopen(wout.dat'1/nwH);

27for(i=0;i<10;i++){

28for(j-0;j<10;j++){

29fscanf(fp,M%lf&b[j]);

30)

31r=fun(b,10);

ww

32fprintf(wfr%f\nrr);

33)

34fclose(fp);

35fclose(wf);

36

24.編寫函數(shù)fun,其功能是:根據(jù)以下公式求兀的值(要求精度0.0005,

即某項小于0.0005時停止迭代)。

IT.I1x21x2x3Ix2x3x4Ix2xxn

zr=I?丁?z-r?--z--+--z-z—?.......?;■-z----------TZ------TT

233x53x5x73x5x7x93x5x???x(2n+!)

程序運行后,若輸入精度

0.0005,則程序應(yīng)輸出為3.14...

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

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

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

Mittcludt*<sldi<?.h>

Mincludr<math,h>

doublefun(doublecps)

mitin()

<)<iuhlex;voidNONO();

jirinlf(MInput,件:");

^canf("%IP,&x);printf(**\nepi?=%lf.Pl二%1八n”,x,fun(x));

NONO();

voidNONO()

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

FILEefp,?wfi

inii;

diMiblex;

fjp=lbpcn(*in.<ial",**r**);

wf=fopcn('*out.dal*',0w**)?

16r(i=0;i<10;i^>)|

fncanfffp,R%IF,&x)i

fprintf(wf.,fun(x));

frmse(fp);

fc|otM*(wtk;

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

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

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

存放最大值所在元素的下標。

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

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

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

試題程序:

#includeVtimc.h>

”includeV*tdlib.h>

=includeVstdio.h>

void(un(in(a[].int?max?int?d)

(

J

vcidmnin()一

/i

inii,x[2。].max.index*n10i

?tranf((unsigned)time(NULL))?

for(i=a0ii<=n;i4'4-)

x[ij=rand()S50t

primf("%4d\x[i]),"輸出一個Ml機數(shù)組

printf<"\nw>;

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

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

dex)?

I

26.

請編寫一個函數(shù),用來刪除字符串中的所有空格。

例如,輸入asdafaaz67,則輸出為asdafaaz67o

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

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

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

試題程序:

#i^lude<stdK.h>

#i)iclude<ctype.h>

#iiiclude<conio.h>

vodfun(char*stz)

(

)

main()

{char$tr[81];

charMsgf]=uInputastring:7';

intn;

printf(Msg);gets(str);puts(str);{un(str);

printfC****str:%8\nM,str);

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

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

fun(),該函數(shù)的功能是統(tǒng)計各年齡段的人數(shù)。N個年齡通過調(diào)用隨機

函數(shù)獲得,并放入主函數(shù)的age數(shù)組中。要求函數(shù)把。?9歲的人數(shù)存

放在d[0]中,把10?19歲的人數(shù)存放在d[l]中,把20?29歲的人數(shù)存

放在d[2]中,依此類推,把100歲(含100歲)以上年齡的人數(shù)都存放在

d[10]中。結(jié)果在主函數(shù)中輸出。

注意:部分源程序在文件progl.c中。請勿改動main()函數(shù)和其他函數(shù)

中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。

試題程序:

1#include<stdio.h>

21defineN50

3tdefineM11

4voidfun(int?a,int?b)

51(

6

7)

8doublernd()

9(

10statict?29,c=217,m=1024,r=0;

11r=(r*t+c)%m;

12return((double)r/m);

13J

14voidmain()

i.

16FILE?wf;

17intage[N]rird[MJ;

18intb(N]-[32,45,15,12,86,49,

97,3,44,52,17,95,63);

19for(i-0;i<N;i)

20age[i]-(int)(115*rnd());

/?產(chǎn)生一個隨機的年齡教組*/

21printf(**rheoriginaldata

22for(i-0;i<N;i**)

23printf((i+1)*10=0?

4dw,age[i]);/*每行*出10冷敏?/

24printf(??\n\nw);

25fun(age,d);

26for(i=0;i<10;i++)

H

27printf(-%4d--%4d:%4d\nr

i?10,i^l0^9.d[i]);

M

28printf("Over100:^4d\nrd[10]);

29/***???******?????/

30wf-fopen(Mout.datMww);

31fun(brd);

32for(i=0;i<10;1??+)

w

33fprintf(wf.^d—Md:%4d\nri

-10,

34fprintf(wfr'KXrer100:%4dn,d[10]);

35fclose(wf);

28.請編一個函數(shù)intfun(inta),它的功能是:判斷a是否是素數(shù),若a是

素數(shù),返回1;若不是素數(shù),返回0。A的值由主函數(shù)從鍵盤讀入。

29.請編寫函數(shù)fun(),其功能是計算并輸出下列多項式的值:F=l+1

/1!+1/21+1/31+1/41+...+l/m!例如,若主函數(shù)從鍵盤給m輸入

5,則輸出為F=2.716667O注意:m的值要求大于1但不大于100o

部分源程序給出如下。請勿改動main()函數(shù)與其他函數(shù)中的任何內(nèi)

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

=mcltMlrVMdio.

tioublefun(mtm)

widiwainC)

Imtmi

douftUr||

FILE>cNft?

?can((s%J.?B

fun(tn>i

out?fop*fi<*<Midde,

foHtn—K>ieV10,in―?)

fck>9e(oul)

30.請編一個函數(shù)voidproc(intintpp[N]),tt指向一個M行N

列的二維數(shù)組,求出二維數(shù)組每行中最大元素,并依次放入pp所指的

一維數(shù)組中。二維數(shù)組中的數(shù)已在主函數(shù)中給出。

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

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

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

試題程序:

Umcludkb>

UincludrVenio.h>

Sinclude〈Hdlibi

94rGneM3

ddefineN4

voidproc(inttt[MJLN^?inippTNj)

VCidt!M4t?(>

mi*ir[M][N]*<34.54.M.78?

in.14.N?12?

(28?31.39.93)s

mtp[N).i?j?ki

ny?ttfln<*(*1?$*)?

primf("Theriginaldita

loH?)

for(L0"V、[j++)

priotfC*KW"?MrfiJQJ)i

print"*\R")I

proHMr?p)i

priniK*\nTher?Mih

pnnifi*;4d*.pk'Di

pnnll(-\n*>4

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

31.下列給定程序中,函數(shù)fun()的功能是:用冒泡法對6個字符串按由

大到小的順序進行排序。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#defineMAXLINE20

voidfun(char*pstr[6])

(

inti,j;

char*p;

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

for(j=i+l;j<6;j++)

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

if(strcmp((pstr+i),(pstr+j))<0)

p=*(pstr+i);

*(pstr+i)=*(pstr+j);

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

*(pstr+j)=*p;

main()

inti;

char*pstr[6],str[6][MAXLINE];

clrscr();

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

pstr[i]=str[i];

printf("/nEnter6string(lstringateachline):\n");

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

scanf("%s",pstr[i]);

fun(pstr);

printf("Thestringsaftersorting:\n");

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

printf("%s\n",pstr[i]);

)

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

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

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

組合數(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???fOuncj********?***?/

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:

N

%4dblack:l4d\n,irjrk);

13

14

15

16returnsum;

17)

18main()

19{intsum;

20sum=fun();

M

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

22

33.下列給定的程序中,fun()函數(shù)的功能是:將p所指字符串中每個單

詞的最后一個字母改成大寫(這里的“單詞”是指有空格隔開的字符串)。

例如,若輸入:

Iamastudenttotaketheexamination

則應(yīng)輸出:IaMAstudenTtOtakethEexaminatioN

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

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

試題程序:

#include<conio.h>

#include<ctype.h>

#include<stdio.h>

voidfun(char*p)

(

intk=0;

for(;*p;p++)

if(k)

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

if(P==")

k=0;

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

*p=toupper(*(p-1));

else

k=l;

main()

{charchrstr[64];

intd;

clrscr();

printf("\nPleaseenteranEnglishsentencewithin63letters:");

gets(chrstr);

d=strlen(chrstr);

chrstr[d=='';

chrstr[d+l]=O;

printf("\nBoforechanging:\n%s",chrstr);

fun(chrstr);

printf("\nAfterchanging:\n%s",chrstr);

34.給定程序M0D11.C中函數(shù)fun的功能是:將十進制正整數(shù)m轉(zhuǎn)換

成k(2SkS9)進制數(shù),并按高位到低位順序輸出。

例如,若輸入8和2,則應(yīng)輸出1000(即十進制數(shù)8轉(zhuǎn)換成二進制表示

是1000)o

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

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

1linclude<conio.h>

2?include<stdio.h>

3voidfun(intm,intk)

4

5intaa[20]9i;

6for(i-0;m;i++)

7

8w*********found**********

9aa[i]-m/k;

10

11

12for(;i;i--)

13**********found***?*****?

ww

14printf(%draa[i]);

15

16main()

17

18intb;n;

19printf(w\nPleaseenteranumber

andabase:\nw);

20scanf(R%d&b);

21fun(nfb);

22printf(w\nro);

23

35.下列給定程序中,函數(shù)fun()的功能是:將字符串p中所有字符復制

到字符串b中,要求每復制3個字符之后插入一個空格。例如,在調(diào)用

fun()函數(shù)之前給字符串a(chǎn)輸入ABCDEFGHIJK,調(diào)用函數(shù)之后,字符串

b中的內(nèi)容則為ABCDEFGHIJKO

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

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

試題程序:

#include<stdio.h>

voidfun(char*p,char*b)

{inti,k=0;

while(*p)

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

{i=l;

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

while(i<3||*P)

b[k]=*p;

k++;p++;i++;

if(*P)

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

{b[k]=";J

)

b[k]='\0';

)

main()

{chara[80],b[80];

printf("Enterastring:");gets(a);

printf("Theoriginalstring:");

puts(a);

fun(a,b);

printf("\nThestringafterinsert

space:");puts(b);printf("\n\n");

36.下列給定程序中,函數(shù)fun()的功能是;求S的值。設(shè)

S=(22/l*30))*(42/(3*5))*(62/(5*7))*…*(2k)2/((2k-l)*(2k+l))

例如,當k為10時,函數(shù)的值應(yīng)為1.533852。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<math.h>

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

fun(intk)

{ihtn;floats,w,p,q;

n=l;

s=1.0;

while(n<=k)

{w=2.0*n;

p=w-1.0;

q=w+1.0;

s=s*w*w/p/q;

n++;

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

returns

main()

{clrscr();

printf("%nn",fun(10));

37.給定程序MOD11.C中函數(shù)fun的功能是:用下面的公式求兀的近

似值,直到最后一項的絕對值小于指定的數(shù)(參數(shù)num)為止:

一x?AH,I—?—)+11+???

4357

例如,程序運行后,輸入0.0001,則程序輸出3.1414。

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

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

finclude<math.h>

2*include<stdio.h>

3floatfun(floatnum)

4{ints;

5floatn,t,pi;

6t-1;pi0;n*1;s

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

8while(t>=num)

9

10pi=pi?t;

11n?n+2;

12S

13*************found****?*?**?*??

14t*s%n;

15

16pi?pi?4;

17returnpi;

18

19main0

20{floatnlfn2;

21printf(wEnterafloatnumber:H);

22scanf&nl);

23n2-fun(nl);

ww

24printf(%6.4f\nrn2);

25

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

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

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

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

平均分的學生人數(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)

39.下列給定程序中,函數(shù)fun()的功能是找出100?n(n不大于1000)之

間百位數(shù)字加十位數(shù)字等于個位數(shù)字的所有整數(shù),把這些整數(shù)放在s所

指的數(shù)組中,個數(shù)作為函數(shù)值返回。

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

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

試題程序:

#include<stdio.h>

#defineN100

intfun(int*s,intn)

inti,j,k,a,b,c;

j=0;

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

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

k=n;

a=k%10;

k/=10;

b=k%10;

c=k/10;

if(a==b+c)

/************found*********,

s[j]=i;

)

returnj;

)

main()

(

inta[N],n,num=0,i;

do

(

printf("\nEntern(<=1000):”);

scanf("%d",&n);

while(n>1000);

num=fun(a,n);

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

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

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

printf("\n\n");

}

40.給定程序MOD11.C中函數(shù)fun的功能是:首先將大寫字母轉(zhuǎn)換為

對應(yīng)小寫字母;若小寫字母為a?u,則將其轉(zhuǎn)換為其后的第5個字母;

若小寫字母為v?z,使其值減21o轉(zhuǎn)換后的小寫字母作為函數(shù)值返回。

例如,若形參是字母A,則轉(zhuǎn)換為小寫字母f若形參是字母W,則轉(zhuǎn)換

為小寫字母b。

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

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

1*include<stdio.h>

2*include<ctype.h>

3charfun(charc)

4(if(o-^1&&c<-Z)

5/found………….

6JC+32;

7if(c>-fa'&&c<?*uf)

8*************found*************

9c-c-5;

10elseif(c>-'v,z?)

11c?c-21;

12returnc;

13

14main()

15{charcl,c2;

16printf(H\nEnteraletter(A-Z):

;cl-getchar();

17if(isupper(cl))

18(c2?fun(cl);

19printf(w\n\nTheletter\,%c\1

changetocl,c2);

20;

21Jelseprintf(R\nEnter(A-Z)!\nw);

22!

五、程序改錯題(2題)

41.下列給定程序中,函數(shù)fun()的功能是:根據(jù)輸人的三條邊長(整

形),判斷能否構(gòu)成三角形;構(gòu)成的是等邊三角形還是等腰三角形。若能

構(gòu)成等邊三角形函數(shù),返回3;若能構(gòu)成等腰三角形函數(shù),返回2;若

構(gòu)成=三角形函數(shù),返回1;若不能構(gòu)成三角形函數(shù)返回0。請修改函數(shù)

fun()中的錯誤,得出正確的結(jié)果。注意:不要改動main()函數(shù),

不能增行或減行,也不能更改程序的結(jié)構(gòu)。試題程序:

#include<stdio.h>

intfun(mty,intz)

i[《x+y>z&&y+z>x&&x+z>y>

(

//*???found?*?*

if(x-=y&&y==z)

return11

elseif(xylly;zIx-z)

return2,

elite

//?(???found????

return3s

else

returnOi

voidmain()

(

intx?y?z?shapc)

print?"\nlnputx.y*zs->i

scan",%d%d%d*?&x,&y?&z),

printf(**\nx=%d?y=%d?z=%d\n"?x?y?z〉i

shapc=fun(x?y?z)i

prind("\n\nThc5hapc:%d\nH.shape)?

42.下列給定程序中,函數(shù)fun()的功能是:將str所指字符串中的字母

轉(zhuǎn)換為按字母序列的后續(xù)字母(Z轉(zhuǎn)換A,z轉(zhuǎn)換a),其他字符不變。

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

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

構(gòu)。

試題程序:

WtftdudeVM(ho.K>

修includeVctype.

9includeVconao.K>

void?Mr)

//????(oiand????

whiftt(?■“!,%‘)

i“?-A'&&?,Z11?.trv

?&&?tir^?■<)

if<?w??N)

?lxii《?MT*

?ttr-'n

?"十—11

//????lound????

(?m>+?(

voidmam<)

charMr[S0ji

pnt?t(<*\nEnur?MhfigwithUn<th<IIO.

true?tr)ipnnt((e\?Theznngi\n\n*>i

pU<>(Mt)|

Mr)i

printiC*\n\nTheConWtXnXn*)?

puis(s<r>t

六、操作題(2題)

43.使用VC++打開考生文件夾下modil中的解決方案。此解決方案的項

目中包含一個源程序文件modil.c。在此程序中,函數(shù)fun()的功能是求

出s所指字符串中最后一次出現(xiàn)的t所指字符串的地址,并將此地址通

過函數(shù)值返回,在主函數(shù)中輸出從此地址開始的字符串;若未找到,則

函數(shù)值為NULLO

例如,當字符串中的內(nèi)容為“abcdabfabcdx”,t中內(nèi)容為“ab”時,輸出

結(jié)果應(yīng)是“abcdx”。

當字符串中的內(nèi)容為“abcdabfabcdx”,t中內(nèi)容為“abd”時,則程序輸出

未找到信息“Notfound!”。請改正程序中的錯誤,使它能得出正確的

結(jié)果。

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

構(gòu)!

試題程序:

#include<stdlib.h>

#include<stdio.h>

#include<conio.h>

#include<string.h>

char*fun(char*s,char*t)

(

char*p,*r,*a;

/*********j^Qund*********/

a=Null;

while(*s)

(

p=s;r=t;

while(*r)

/*********^Qund*********/

if(r==p)

{r++;p++;}

elsebreak;

if(*r=='\0')a=s;

s++;}

returna;

)

voidmain()

chars[100],t[100],*p;

system,,CLS,,);

printf("\nPleaseenterstrings:");

scanf("%s”,s);

printf("\nPleaseentersubstringt:");

scanf("%s”,t);

p=fun(s,t);

if(P)

printf("WTheresultis:%s\n”,p);

else

printf(4C\nNotfoundin'');

44.下列給定程序中,函數(shù)fun()的功能是:應(yīng)用遞歸算法求某數(shù)a的平

方根。求平方根的迭代公式如下:

=(xe+—)/2

例如,2的平方根為1.414214。

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

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

試題程序:

#include<math,h>

#include<stdio.h>

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

fun(doublea,doublexO)

{doublexl,y;

xl=(x0+a/x0)/2.0;

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

if(fabs(xl-xO)>0.00001)

y=fun(a,xl);

elsey=xl;

returny;

main()

{doublex;

printf("Enterx:");scanf("%lf",&x);

printf("Thesquarerootof%lfis%lf\n",

x,fun(x,l.O));

參考答案

1.關(guān)系關(guān)系解析:關(guān)系模型用;維表表示,則每個,?維表代表一種關(guān)系。

2.順序結(jié)構(gòu)順序結(jié)構(gòu)解析:結(jié)構(gòu)化程序有3種摹本結(jié)構(gòu),即順序結(jié)構(gòu)、

選擇結(jié)構(gòu)(包括if語句和switch語句)和循環(huán)結(jié)構(gòu)(包括for語句、while

語句、do...while語句)。

3.-1-1解析3f?else語句的形式:if(表達式)語句1elseif語句2else

語句3它的功能是若表達式的值為真,執(zhí)行語句1,并跳過其他語句,

執(zhí)行ifelse語句的下一條語句,若表達式的值為假,跳過語句1,執(zhí)行

語句2,依次往下判斷;a=l,b=2,條件a>b不成立,繼續(xù)判斷a==b,

仍不成立,則執(zhí)行c=-l,輸出-1。

4.3232解析:while(表達式)的功能是:首先計算表達式的值,若為真,

則執(zhí)行循環(huán)體語句,執(zhí)行完畢,再計算表達式的值,若仍為真,則重復

執(zhí)行循環(huán)體語句,直到表達式的值為假時,結(jié)束while語句的執(zhí)行,繼

續(xù)執(zhí)行while語句后面的語句1=0時滿足循環(huán)條件,也滿足if的條件,

執(zhí)行語句得i=U,a=H,第2次循環(huán)不滿足if的條件,執(zhí)行i--,i=10,

執(zhí)行i+=U;a+=i后,得i=21,a=32,不滿足i<20,循環(huán)結(jié)束。

5.yesyes解析:程序if語句中是賦值表達式,而不是相等“==”運算。因

為c=a+b中a+b的值為4,賦給c,c=4,表達式為真,輸出yes。

6.Y%2=1或Y%2!=OY%2=1或Y%2!=0解析:判斷變量是否為奇數(shù)

可以用變量與2取模,判斷結(jié)果是為1或下為0。本題具體做法如下:

Y%2=1或Y%2!=0。

7.x[i-l]|j-l]+x[i-l][j]x[i-l][j-l]+x[i-l]|j]解析:在程序外層i循環(huán)中先將

數(shù)組的第0列元素和主對角線元素置1,內(nèi)層j循環(huán)的功能是給其余元

素賦值,根據(jù)題意,空格內(nèi)應(yīng)填入

8.16

9.QTHRGQTHRG解析:strcmp(t,s)函數(shù)用來比較t和s所指字符串的大

小,若t〉s,則函數(shù)值大于0;若1=5,則函數(shù)值等于0:若t<s,則函

數(shù)值小于0。Strcpy(t,s)函數(shù)的功能是把字符數(shù)組s所指字符串的內(nèi)容復

制到字符數(shù)組t所指的存儲空間中。本題中,t[10]=CDEF。第一次循環(huán),

s[10]='BADEF',if語句的控制條件strcmp(t,s)<0不成立,接著執(zhí)行第

二次循環(huán).s='QTHRG',if語句的控制條件strcmp(t,s)<0成立,執(zhí)行

下列的語句,將字符數(shù)組s所指字符串的內(nèi)容復制到字符數(shù)組t所指的

存儲空間中,然后輸出字符數(shù)組t。

10.99解析考查ifelse語句,n==4不滿足條件,所以fun5(4)=4+fun5(3),

n==3也不滿足條件,fun5(3)=3+fun5(2),n==2滿足條件fun5(2)=2,故

x=4+3+2=9o

11.B

12.B

13.A

14.B

15.B

本題主要考查結(jié)構(gòu)指針:P=&data,訪問結(jié)構(gòu)體的成員。它可以通過

結(jié)構(gòu)變量訪問,即data,可以用等價的指針形式:(*p).a和P->a來訪

問結(jié)構(gòu)體變量中的成員。

16.D

fun函數(shù)的意思是當*s%2==0的時候就輸出并且s自加1次,然后判

斷。所以可知只有第2和第4個位置上的才符合要求,所以答案為

Do

17.C解析:數(shù)據(jù)處理的最小單位是數(shù)據(jù)項;由若干數(shù)據(jù)項組成數(shù)據(jù)元素;

而數(shù)據(jù)是指能夠被計算機識別、存儲和加工處理的信息載體;數(shù)據(jù)結(jié)構(gòu)

是指數(shù)據(jù)之間的相互關(guān)系和數(shù)據(jù)運算。故正確答案為選項C)。

18.A

本題考查按位與運算,按位與就是相同為1,不同為0,把x=011050

化成二進制為0001001000101000,把01252化成二進制為

0000001010101010,兩者相與得0000001000101000o

19.A

解析:本題考核模塊獨立性的評價。評價模塊獨立性的主要標準有兩

個;一是模塊之間的耦合,它表明兩個模塊之間互相獨立的程度,也

可以說是兩個或兩個以上模塊之間關(guān)聯(lián)的緊密程度(所以,本題的正確

答案為選項A);二是模塊內(nèi)部之間的關(guān)系是否緊密,稱為內(nèi)聚。一

般來說,要求模塊之間的耦合盡可能地弱,即模塊盡可能獨立,而要

求模塊的內(nèi)聚程度盡量地高。

20.D

21.

voidstrcpy(char*s,char*t)/*copyttos*/

{while((*s++=*t++)!=,\0,))|

)

22.

【解析】要求出數(shù)組中最小的數(shù),需要比較數(shù)組中的每一個元素。將最

小的元素的下標存放在變量k中,通過形參返回到主函數(shù)中。

23.ldoublefun(doublea[],intn)

Doublesum=0,max,min;inti;

max=min=a[0];for(i=0;i

<n;i++)

{</n;i++)

<n;i++)

sum=sum+a[i];</n;i++)

if(max<a[i])max=a[i];

<n;i++)

if(min>a[i])min=a[i];

</n;i++)

<n;i++)

sum=sum-max-min;

</n;i++)

<n;i++)

return(sum/(n-2));

</n;i++)

<n;i++)

</n;i++)

<n;i++)

設(shè)定3個變量,sum存放和值,max存放最大值,min存放最小值。

max和min都賦為數(shù)組中第1個元素的值。利用循環(huán)將數(shù)組中元素累

加到sum中,并找出最大值和最小值。sum值減去最大值和最小值。

函數(shù)返回sum除以(元素個數(shù)減2)得平均值。

</n;i++)

24.

【考點分析】

本題考查:迭代法求給定多項式的值。迭代算法:讓計算機對一組指

令(或一定步驟)進行重復執(zhí)行,在每次執(zhí)行這組指令(或這些步驟)時,

都從變量的原值推出它的一個新值。需要注意變量的數(shù)據(jù)類型以及賦

初值操作。

【解題思路】

首先應(yīng)該定義double類型變量,并且賦初值,用來存放多項式的某一

項和最后的總和。從第2項開始以后的每一項都是其前面一項乘以n/

(2*n+l),程序中用si來表示每一項,s表示求和后的結(jié)果。需注意si

和S的初值都為1.0,因為循環(huán)變量從第二項開始累加。

25.

【解析】本題考查的是for循環(huán)和指針變量。通過for循環(huán)實現(xiàn)對數(shù)組

的遍歷,形參iilax和d都是指針型變量,所以引用它們指向的變量時

要進行指針運算。先有*max=a[0],在遍歷中如果遇到比max大的元

素,則將a[i]賦值給max

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論