2023年遼寧省本溪市全國計算機(jī)等級考試C語言程序設(shè)計測試卷(含答案)_第1頁
2023年遼寧省本溪市全國計算機(jī)等級考試C語言程序設(shè)計測試卷(含答案)_第2頁
2023年遼寧省本溪市全國計算機(jī)等級考試C語言程序設(shè)計測試卷(含答案)_第3頁
2023年遼寧省本溪市全國計算機(jī)等級考試C語言程序設(shè)計測試卷(含答案)_第4頁
2023年遼寧省本溪市全國計算機(jī)等級考試C語言程序設(shè)計測試卷(含答案)_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2023年遼寧省本溪市全國計算機(jī)等級考試

C語言程序設(shè)計測試卷(含答案)

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

一、2.填空題(10題)

I.函數(shù)pi的功能是根據(jù)以下公式近似求得的:

pi*pi/6=i+l/(2*2)+l/(3.3)+...4-l/(n*n)

請在下面的函數(shù)中天空,完成求pi的功能。

#include<math.h>

doublepi(longn)

{doubles=0.0,longi;

for(i=l;i<<=n;i++)s=s+[];

return(sqrt(6*s));

1

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

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

3.在數(shù)據(jù)庫中用數(shù)據(jù)模型這個工具來抽象、表示和處理現(xiàn)實世界中的數(shù)

據(jù)和信息。常見的數(shù)據(jù)模型有3種,它們分別是層次模型、網(wǎng)狀模型和

()o

4.以下scanf函數(shù)調(diào)用語句中對結(jié)構(gòu)體變量成員的引用不正確的是

{charname[20];}pup[5],*p;

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

main()

/intij,a[][3]={1,2,3,4,5,6,7,8,9};

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

for(j=i+l;j<3;j++)a[j][i]=0;

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

{forU=O;j<3;j++)printfC'%d”,a[i皿);

printf(n\nn);

}

)

6.數(shù)據(jù)的物理結(jié)構(gòu)在計算機(jī)存儲空間中的存放形式稱為數(shù)據(jù)的【

7.以下sstrcpy。函數(shù)實現(xiàn)字符串復(fù)制,即將t所指字符串復(fù)制到s所指

向內(nèi)存空間中,形成一個新的字符串s。請?zhí)羁铡?/p>

voidsstrcpy(char*s,char*t)

{while(*s++=);}

main()

{charstr1[100],str2[]="abcdefgh";

sstrcpy(strl,str2);

printf(n%s\nM,strl);

8.以下程序的功能是輸入任意整數(shù)給n后,輸出n行由大寫字母A開始

構(gòu)成的三角形字符阻列圖形。例如,輸入整數(shù)5時(注意:n不得大于

10),程序運(yùn)行結(jié)果如下:

ABCDE

FGHI

JKL

MN

O

請?zhí)羁胀瓿稍摮绦颉?/p>

main()

{inti,j,n;charch=,A';

scanf(u%d",&n);

if(n<11)

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

{for(j=l;j<n-i+l;j++)

',,,

{printf(%2c1ch);

[10];

)

[H];

1

9.下程序的輸出是【

main()

(

charstrl[J=nHowdoyoudo",*pl=strl;

strcpy(str1+strlen(str1)/2,nesshe1');

printf(n%s\nM,pl);

)

10.下面的語句要使指針p指向一個double類型的動態(tài)存儲單元,請?zhí)?/p>

空。

p=[]malloc(sizeof(double));

二、單選題(10題)

11.數(shù)據(jù)的存儲結(jié)構(gòu)是指()。

A.數(shù)據(jù)所占的存儲空間

B.數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機(jī)中的存放形式

C.數(shù)據(jù)在計算機(jī)中的順序存儲方式

D.存儲在計算機(jī)外存中的數(shù)據(jù)

12.有以下程序

voidss(char*s,chart)

{while(*s)

{if(*s==t)*s=t,a'+'A';

s++;})

main()

{charstr1[100]-,abcddfefdbdH,c=rd";

ss(strl,c);printf(n%s\nH,str1);}

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

A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd

13.在C語言中,函數(shù)返回值的類型最終取決于()。

A.函數(shù)定義時在函數(shù)首部所說明的函數(shù)類型

B.return語句中表達(dá)式值的類型

C.調(diào)用函數(shù)時主調(diào)函數(shù)所傳遞的實參類型

D.函數(shù)定義時形參的類型

14.以下選項中非法的表達(dá)式是()o

A.a+l=a+l

B.a=b==0

C.(Char.(100+100.

D.7<=X<60

15.若有定義“inta=O,b=l,c=l”關(guān)于邏輯表達(dá)式“a++||b++&&c++”中各

個部分的執(zhí)行順序,以下說法正確的是()。

A.先執(zhí)行“b++”,再執(zhí)行“C++”,最后執(zhí)行“a++”

B.先執(zhí)行“a++”,再執(zhí)行“b++”,最后執(zhí)行“C++”

C先執(zhí)行“C++”,再執(zhí)行“b++”,最后執(zhí)行“a++”

D.先執(zhí)行“b++7再執(zhí)行“a++”,最后執(zhí)行“C++”

16.下面程序的輸出結(jié)果是omain(){int

a[10]={0,1,2,3,4,5,6,7,8,9},*p=a+4;printf(n%d\nM,p[3]);}

A.6B.7C.3D.5

(38)設(shè)有一聯(lián)合體變量定義如下:

uniondata

{longa;

floatb;

intc;

chard;

);

uniondatax;

執(zhí)行卜.列語句后,正確的聯(lián)合體變量x的值是().

x.a=llllll;

x.b=2222;

x.c=2.1546;

x.d='R';

17.A)llilllB)2222C)2.1546D)R

(IDC語言規(guī)定,在一個C程序中,main()函數(shù)的位置(

A)必須在系統(tǒng)調(diào)用的庫函數(shù)之后B)必須在程序的開始

C)必須在程序的最后D)可以在任意位置

19.判斷有向圖是否存在回路,利用。方法最佳。

A.求關(guān)鍵路徑B.求最短路徑C.拓?fù)渑判駾.廣度優(yōu)先遍歷

20.面向?qū)ο蠓椒ㄖ?,繼承是指()。

A.一組對象所具有的相似性質(zhì)B.一個對象具有另一個對象的性質(zhì)C.

各對象之間的共同怛質(zhì)D.類之間共享屬性和操作的機(jī)制

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

21.某學(xué)生的記錄由學(xué)號、8門課程成績和平均分組成,學(xué)號和8門課程

的成績已在主函數(shù)中給出,請編寫函數(shù),其功能是:求出該學(xué)生的平均

分、并放入記錄的ave成員中。

例如,學(xué)生的成績是:85.5,76,69.5,85,91,72,64.5,87.5,

則他的平均分應(yīng)為78.875。

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

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

入你編寫的若干語句。

試題程序:

#include<stdio.h>

#defineN8

typedefstruct

charnumfl01;

doubles[N];

doubleave;

JSTREC;

voidfun(STREC*a)

voidmain

STRECs={”GA005”,85.5,76,69.5,85,91,72,64.5,87.5};

inti;

fun(&s);

printf(HThe%ssstudentdata:\nM,s.num);

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

nn

printf(%4.lfkn(s.s[i]);

printf(H\nknave=%7.3fkn",s.aVe);

printf(n\nn);

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

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

fun(),其功能是求斐波那契數(shù)列中大于t的最小的數(shù),結(jié)果由函數(shù)返

回。斐波那契數(shù)列F(n)的定義為

F(0)=0,F(l)=l

F(n)=F(n-l)+F(n-2)

例如,當(dāng)t=1000時,函數(shù)值為1597。

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

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

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

試題程序:

#include<conio.h>

#include<math.h>

#include<stdio.h>

intfun(intt)

(

}

main()

(

intn;

n=1000;

printf("n=%d,f=%d\n,,,n,fun(n));

)

23.

函數(shù)fun的功能是:將s所指字符串中下標(biāo)為偶數(shù)同時ASCII值為奇數(shù)

的字符刪除,S所指串中剩余的字符形成的新串放在t所指的數(shù)組中。

例如,若s所指字符串中的內(nèi)容為“ABCDEFG12345”,其中字符C的

ASCII碼值為奇數(shù),在數(shù)組中的下標(biāo)為偶數(shù),因此必須刪除;而字符I的

ASCII碼值為奇數(shù),在數(shù)組中的下標(biāo)為奇數(shù),因此不應(yīng)當(dāng)刪除,其他依

此類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是“BDF12345”。

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

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

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

試題程序:

#include<stdio-h>

#include<string.h>

voidfun(char*s,chart[D.

(

}

main()

{

char$(100],t(100];

printf(°\nPlea$eenterstringS:0);

s);

fun(s,t);

printf("\nTheresultis:%s\nN,t);

}

24.有N個學(xué)生,每個學(xué)生的信息包括學(xué)號、性別、姓名、四門課的成

績,從鍵盤上輸入N個學(xué)生的信息,要求輸出總平均成績最高的學(xué)生信

息,包括學(xué)號、性別、姓名和平均成績。

25.編寫函數(shù)voidproc(intx,intpp口,inl*n),它的功能是求出能整除x

且不是奇數(shù)的各整數(shù),并按從小到大的順序放在pp所指的數(shù)組中,這

些除數(shù)的個數(shù)通過形參返回。

例如,若x中的值為30,則有4個數(shù)符合要求,它們是261030。

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

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

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

試題程序:

Sinclude<conio.h>

ainclude<stdio.h>

=includeVstdlib.h>

voidproc(intx.intpp[].ini■n)

(

)

voidmain()

(

intx.arr[1000].n,it

sy*tem("CLS");

printF("\nPleaseenteranintegernumberAn")i

scan]&-x)t

proc(義.?rr.?>.n)i

for(i?0:iVn:i++)

prinif("%d"?arr[ij)>

printf(**\n"):

26.請編寫函數(shù)proc,其功能是:計算并輸出下列多項式值。

S=(l-1/2)+(1/3-1/4)+...+(1/(2n-l)-l/2n)

例如,若主函數(shù)從鍵盤給n輸入20后,則輸出為S=0.680803c

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

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

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

試題程序:

#includet:stdio.h>

doubleproc(intn)

voidmain

intn;

doubleslim;

printf("\nlnputn:");

scanfC%dn,&n);

sum=proc(n)o

printf(',\ns=%f\n,',sum);

)

27.請編寫函數(shù)proc(),該函數(shù)的功能是:將str所指字符串中ASCII

值為偶數(shù)的字符刪除,串中剩余字符形成一個新串放在t所指的數(shù)組中。

例如,若str所指字符串中的內(nèi)容為aBcdef9789,其中字符8的ASCII

碼值為偶數(shù)……字符8的ASCH碼值為偶數(shù)……都應(yīng)當(dāng)刪除,其他依此

類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是ace979c注意:部分源程序給出

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

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

55include<stdlib.h>

s:include<stdio.h>

*include<string.h>

*include<conio.h>

voidproc(char?str.chart[]>

voidmain()

(

charMr(100].t[l(X)]j

sy5tcmCCLS")i

prind("\nPlcascenterstringSt")i

5canf(-%5w.str)i

proc(Atr.t)?

printf("\nTheresultIM:%s\n*.t)J

>

28.編寫函數(shù)fun,其功能是:將所有大于1小于整數(shù)m的非素數(shù)存入xx

所指數(shù)組中,非素數(shù)的個數(shù)通過k返回。

例如,若輸入17,則應(yīng)輸出:46891012141516。

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

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

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

Qindudr<eldin.h>

voidfun(intni,int?k.ini])

mainf)

I

intm,n.n[100];

voidNON()();

printf("XnPlcajw?enteraninlegcrnunil>rr10and100:"):

*<anf(H%<r.&n);

fun(n,&m,zz);

printnH\n\nTlwrrHH,%(Inon-primrniimlxrvlcs?than%d:M,m.

for(n=0;n<rn;n?)

pnntf(Tn]);

N()NO();

\

MH<INOV)()

/?請在此函數(shù)內(nèi)打開文件.整人測試數(shù)據(jù),讖用fun函數(shù).

輸出數(shù)據(jù),關(guān)閉文件C?/

intm.n.u[100J;

FILE?rf.?wf;

rf=fi?prn("in.<hl"/r");

wf=fopen(Houl.chi*'w");

Mm"rf."%d".&n);

(tin(n.&m.zz);

(pnntf(wf."<hn".in.n);

fnr(n=0;n<m;n???+)

fprintf(wf,?t[n]);

frl?se(rf);

fcl<?c(wf);

29.請編寫函數(shù)proc(),其功能是:計算并輸出下列多項式的值。

S=l+1/(1+2)+1/(1+2+3)+…+1/(l+2+3+...+m)

例如,若主函數(shù)從鍵盤給m輸入20后,則輸出為s=l.904762o

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

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

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

試題程序:

Sinclude<?tdio.h>

doubleproc(intm)

(

}

voidmain()

(

ini

doublest

printf("\nlnpuim:

scanf(t

s"proc(m)?

print*

30.請編寫函數(shù)proc,該函數(shù)的功能是:將放在字符串?dāng)?shù)組中的M個字

符串(每串的長度

不超過N),按順序合并組成一個新的字符串。

例如,若字符串?dāng)?shù)組中的M個字符串為:

ABCD

BCDEFG

CDEFGHI

則合并后的字符串內(nèi)容應(yīng)該是ABCDBCDEFGCDEFGH1。

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

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

#defineM3

#defineN20

voidproc(chararr[M][N],char*b)

(

)

voidmain

(

charstr[M][N]={nABCD",nBCDEFG",UCDEFGHF,),i;

chararr[l00]={"##################"};

printffThestrin9:kn"):

for(i=0;i++)

puts(str[ij);

printf(,'\nM);

proc(str,arr);

printf(MTheAstring:\n");

printf(,,%Su,arr);

printf("\n\n”);

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

31.下列給定程序中,函數(shù)fun()的功能是:在字符串str中找出ASCII

碼值最小的字符,將其放在第一個位置上,并將該字符前的原字符向后

順序移動。例如,調(diào)用fun()函數(shù)之前給字符串輸入fagAgBDh,調(diào)用后

寧符串中的內(nèi)容為AfaggBDh。

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

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

試題程序:

#include<stdio.h>

/*1**1**1**1*/1/

/不不不不不不不不不不不不不T/AI]nr[不干干干干不干不可不不不/

voidfun(charp)

charmin,*q

inti=0;

min=pfi];

while(p[i]!=0)

if(min>p[i])

I*2*KI**1**1*7,7,/ivx7,7,7,*1*/

/不不不不不不不不不不不不不Toiinti***不不不不不不不不不不不不/

p=q+i;

min=pli];

i++;

while(q>p)

(*q=*(q-l);

q--;

p[O]=min;

)

main()

(

charstr[801;

printf(nEnterastring:");

gets(str);

printf("\nTheoriginalstring:");

puts(str);

fun(str);

printf(M\nThestringaftermoving:");

puts(str);

printf(H\n\nn);

)

32.給定程序中函數(shù)fun的功能是:從低位開始取出長整型變量S中偶

數(shù)位上的數(shù),依次構(gòu)成一個新數(shù)放在t中。高位仍在高位,低位仍在低

位。

例如,當(dāng)s中的數(shù)為7654321時,t中的數(shù)為642。

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

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

[試題源程序]

升include<stdio.h>

/*1**1*?£??£?*£?*£?f*1*1*4.4.*4**4**4**4**4*/

/小小小小小小小小不不不不tci[nd*t*小小不小不不不不不不(

voidfun(longs,longt)

longsi=10;

s/=10;

*t=s%10;

/*1?Ki*Ki**I?*!?KJ*KJ*/I*2**2*I

/不不不不不不不不不不不不T/A]]]],]不干不干干干不干不干干不/

while(s<0)

(

s=s/100;

*t=S%10*Sl+*t;

sl=sl*10;

)

)

msin()

(

longs,t;

printf(H\nPleaseenters:");

scanf(n%ldH,&s);

fun(s,&t);

printf(nTheresultis:%ld\n",t);

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

N項之和SN,直到SN+1大于q為止,q的值通過形參傳入。

SN=2/1+3/2+4/3+(N+1)/N

例如,若q的值為50.0,則函數(shù)值為49.394948。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

/*1**1*?£??£?*£?*£?%1?■?14.-[?*?**?*?£?*4**4**£**4**1**!**1*/

/個個個力個個個個個個個不個個re1]nri個個個個個個個個個個個不個個個/

doublefun(doubleq)

{intn;doubles,t;

n=2;

s=2.0;

while(s<=q)

t=s

/、!,.!,、],、[?、!?7,、!**!**!?*!*7,7,7,17,7,7,7,、1?7,7,*!*、]?*1*、J*/

/不不不不不不不不不不不不不tm]n1]小小小小小小小小不不不小小/

s=s+(n+l)/n;

n++;

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

/?!**!**!**1*?!*?!*、1,*1**1**1*?f**i*/*1*1**4**£*?!**!**!*?!*/

/小小小小小小小小小小小小tciind不不不不不不不不不不彳、不小小小/

returns;

)

main()

{clrscr();

printf(H%f\nH,fiin(50));

)

34.在主函數(shù)中從鍵盤輸入若干個數(shù)放入數(shù)組中,用0結(jié)束輸入并放在

最后一個元素中。下列給定程序中,函數(shù)fun。的功能是計算數(shù)組元素中

值為負(fù)數(shù)的平均值(不包括0)。

例如:數(shù)組中元素的值依次為43,47,-21,53,-8,12.0,則程序的

運(yùn)行結(jié)果為-25.333333。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

doublefun(intx[J)

doublesum=0.0;

intc=0,i=0;

/■如■如*1*4,?如?如,1*1**2**2**2**1*?i*/

/*T**T**T**T**T**T**T**T**T**T**T**T**T*T/~\l個個個個個個個個個個個個個/

while(xfi]==0)

if(x[i]<0)

sum二sum+x[i];

C++;

sum=sum\c;

returnsum;

)

main()

(

intxl1000];

inti=0;

clrscr();

printf(n\nPleaseentersomedata(endwith

0):”);

do

(

scanf("%d",&x[i]);

}while(x[i++]!=0);

printf("%f\n",fun(x));

35.下列給定的程序中,函數(shù)fun()的功能是;將s所指字符串中出現(xiàn)的

n所指字符串全部替換成t2所指字符串,所形成的新的字符串放在w所

指的數(shù)組中。在此處,要求tl和t2所指字符串的長度相同。例如:當(dāng)

s所指字符串中所指的內(nèi)容為abcdabfab,tl所指字符串中的內(nèi)容為ab,

t2所指字符串中的內(nèi)容為99時,結(jié)果在w所指的數(shù)組中的內(nèi)容應(yīng)為

99cd99f990

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

t

/不不不不不不不不不不不不*不]][]「1]不干不不干干干*2*不干*2*干不干干不//

intfun(char*s,char*tl,char*t2,char*w)

inti;char*p,*r,*a;

strcpy(w,s);

while(*w)

{p=w;r=tl;

/KI**1*Kl*KI*KI**1*KI*KI**1*KI*Ki*KI**1*11*2*7,*1**1**1*KI**1*f

/不不不不不不不不不不不不不nr]不不干不干干不不可不不干不不/

while(r)

if(*r==*p){r4-+;p++;}

elsebreak;

if(*r=='\0')

{a=w;r=t2;

/^4^4^4^4aJ/

/個個個個個個個個個個個個個j-z-x?]n0個個個???個個個個個個個個個個/

while(*r){*a=*r;a++;r++)

w+=strlen(t2);

elsew++;

main()

{chars[100],tl[l00],t2[l00J,w[l00J;

clrscr();

printf(H\nPleaseenterstringS:");

scanf(n%s';s);

printf(M\nPleaseentersubstringtl:");

scanf("%s",tl);

printf("\nPleaseentersubstringt2:");

scanf(n%sn,t2);

if(strlen(tl)==strlen(t2))

fun(s,tl,t2,w);

printf("\nTheresultis:%s\nM,w);

elseprintf("Error:strlen(t2)\n");

36.給定程序MOD11.C中函數(shù)fun的功能是:從低位開始取出長整型

變量s中奇數(shù)位上的數(shù),依次構(gòu)成一個新數(shù)放在t中。高位仍在高位,

低位仍在低位。例如:當(dāng)s中的數(shù)為2736598時,t中的數(shù)為:2358。

#include<conio.h>

#include<stdio.h>

/不不不不不不不不不不不不tonnd不不不不不不不不不不不不/

voidfun(longs,longt)

{longsl=10;

*t=S%10;

while(s>0)

{s=s/100;

*t=S%10*sl+*t;

sl=sP100;

main()

{longs,t;

clrscr();

printf("\nPleaseenters:");

scanf(u%ldH,&s);

fun(s,&t);

printf("Theresultis:%ld\n'*,t);

)

37.下列給定程序中函數(shù)fun。的功能是計算正整數(shù)num的各位上的數(shù)

字之平方和。

例如:輸入352,則輸出應(yīng)該是38;若輸入328,則輸出應(yīng)該是77。

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

longfun(longnum)

(

/*+**+*+*+*found************/

Iongk=l;

do

k+=(num%10)*(num%10);

num/=10;

/*********+found'*+**+*+******/

}while(num)

return(k);

)

main()

(

longn;

clrscr();

printf(n\Pleaseenteranumber:H);

scanf(n%ldH,&n);

printf(M\n%ld\nH,fun(n));

)

38.下列給定程序中,函數(shù)fun()的功能是:從n個學(xué)生的成績中統(tǒng)計出

高于平均分的學(xué)生人數(shù),人數(shù)由函數(shù)值返回,平均分存放在形參aver所

指的存儲單元中。例如輸入8名學(xué)生的成績:

8565.56995.5875562.575

則高于平均分的學(xué)生人數(shù)為4(平均分為74.312500)。

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

#defineN20

intfun(float*S,intn,float*aver)

/■kr?kr?kf??£,\X-*£**X**1*/

/不不不不不不不不不不不不不T/~V1][]]]個個個個個個個個個個個個個/

intave,t=0;

intcount=0,k,i;

for(k=0;k<n;k++)

t+=s[k];

ave=t/n;

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

/、!,、!■.!■.!■、!■、!■17.?!,/

/不不不不不不不不不不不不不t()i]n1[不不不不不不不不不不不不不不不/

if(s[i]<ave)

count++;

/?!*“?*!*?!**1**1**!**!**!**!*?],£1?]"?[,*?*******?**、[,、]?<!*/

/不不不不不不不不不不不不不tm]n〔[不不不不不不不不不不不不不/

aver=ave;

returncount;

)

main()

(

floatS[30],aver;

intm,i;

clrscr();

printf(H\nPleaseenterm:");

scanf(“%d",&m);

printf("\nPleaseenter%dmark:\nM,m);

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

scanf(n%f',s+i);

printf(M\nThenumberofstudents:%d\n,',

fun(S,m,&aver));

printf("AVe=%f\n”,aver);

39.下列給定程序中,函數(shù)fun的功能是按以下遞歸公式求函數(shù)值。

用制〃)={力(”—2

例如:當(dāng)給n輸入5時,函數(shù)值為240;當(dāng)給n輸入3時,函數(shù)值為60。

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

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

試題程序:

#include<stdio.h>

*!**!**!*?!*?!*?!*?!*?!*?!*?!*1*£**£**1**1**1*/

/不不不亦不小不,自不不不不不tci]n[[不不不不+不不不不干干不/

fun(intn);

intc;

/t

/不小不不不不不不不不不不不miinn不不不不不不不不不不不不不/

if(n=l)

c=15;

else

c=fiin(n-l)*2;

retum(c);

)

main()

(

intn;

printf("Entern:");

scanf(n%dH,&n);

printf(HTheresult:%d\n\nn,fun(n));

)

40.下列給定程序中,函數(shù)fun()的功能是:輸出M行N列整數(shù)方陣,

然后求兩條對角線上的各元素之和,返回此和數(shù)。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#defineM5

f*1??!??!?*1**1*/

f?[??1?-[?rTwrYw?Tw?[??Tw?丫??丫?*T*rjwrTw?[??[??[??[??Tw?[??[?/

ihtfun(intn,intxx[If1)

{inti,j,sum=0;

printf("\nThe%dx%dmatrix:\n",M,M);

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

{for(j=0;j<M;j++)

/**********************************/

printf(M%4f',xx[i][jJ);

printf(n\nn);

)

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

sum+=xx[i][i]+xx[i][n-i-l];

return(sum);

)

main()

{intaalMJLMJ={{1,2,3,4,5},{4,3,2』,0},

{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};

clrscr();

printf(M\nThesumofallelementson2

diagnalsis%dn,fun(M,aa));

五、程序改錯題(2題)

41.

下列給定程序中,函數(shù)fun的功能是:從整數(shù)10.55,查找能被3整除且

有一位上的數(shù)值是5的數(shù),把這些:故放在b所指的數(shù)組中,這些數(shù)的

個數(shù)作為函數(shù)值返回。規(guī)定函數(shù)中al放位數(shù),a2放十位數(shù)。

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

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

試題程序:

include<stdio.h>

i;i(fun(int*b)

{intk,al,a2,i^O;

for(k=IO;k<=55;k++)

八:?**?■*??*?■***余*^Dnd?*本?/奉■率***?*****/

Q=k/1O;

al=k-a2*10;

if((k%3i==O&&a2^=5)tl(k%3==0&&

al==5))

b[ij^k;i++;?

1.

1.

returnk;

returnk;

main()

{intN1001k.m;

printf(Fieresultis:\nH);

for(k力;k<m;k++)

,r,,

printf(%4dfa[k]);

pHntfCXn%

1

42.

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

數(shù)proc()的功能是:刪除數(shù)列中值為x的元素。n中存放的是數(shù)列中

元素的個數(shù)。請修改程序中的錯誤,使它能夠得出正確的結(jié)果。注意:

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

題程序:

?i?cl*kh>

?SM20

mlp*oc<mi?arr.dttn.mtM>

tntp*0?H

?rrCuj^Mi

whal*<Kt*arv(p])

p-p+h

i?p**11>r??uni-li

?I”

for(i*p|l<A|i't*)

//????(<HMNI????

ll?arffiji

rvttamnaI*

vo?dmatn()

miarr(M]?I-1.0.1?SJO.I5.S0.90).

i?*?h

pnntf(*Th?onginsldat?:\na)i

for(iw0??<mH4)pnntf<*M5d".?rrLij)i

printfC*\nlnputx(tod?4?i*)t*)?

priRtfC^OIdr?Kd\n*?x>i

n*proc<art?n?x)i

W?―I)

printf(a???Nobefound!???\n\na)?

Hw

pnnih-Tbcdataahefde*etedi\a*)i

for(i-0iKi?ii4-?)

print"-M5d*.arr{ij)i

pnmf(a\f)\n")?

六、操作題(2題)

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

案的項目中包含一個源程序文件progl.c。在此程序中,己知學(xué)生的記

錄由學(xué)號和學(xué)習(xí)成績構(gòu)成,N名學(xué)生的記錄己存入a結(jié)構(gòu)體數(shù)組中。

請編寫函數(shù)funO,該函數(shù)的功能是找出成績最高的學(xué)生記錄,通過形

參將其返回主函數(shù)〔規(guī)定只有一個最高分)。已給出函數(shù)的首部,請

完成該函數(shù)。

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

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

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

試題程序:

#include<stdlib.h>

#include<stdio.h>

#include<string.h>

#include<conio.h>

#dcfineN10

typedefstructss/*定義結(jié)構(gòu)體*/

{charnum[101;

ints;

}STU;

fun(STUa[],STU*s)

(

)

voidmain()

(

STUa[N]={{“A01”,81},{“A02”,89},{“A03”,66},

{“A04”,87},“A05”,77},{“A06”,90},{“A07”,79},

{“A08”,61)A09”,80},{“A10”,71}},m;

inti;

system("CLS");

printf("****Theoriginaldata*****);

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

printf(4<No=%sMark=%d\n,\a[i].num,a[i].s);

fun(a,&m);

printfC****THERESULT****\n*);

printf(uThetop:%s,%d\n”,m.num,m.s);

44.以下程序中select函數(shù)的功能是:在N行M列的二維數(shù)組中,選出

一個最大值作為函數(shù)值返回,并通過形參傳回此最大值所在的行下標(biāo)。

請?zhí)羁铡?/p>

#defineN3

#defineM3

select{inta[N][M],int*n;

{inti,j,row=l,eolum=l;

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

forj=O;j<M;j++)

if(afil[j]>afrow][colum]){row=i;colum=j:}

*n=;

return;

)

main()

{inta[N][M]={9,11,23.6,1,15,9,17,20},max,nj

max=select(a,&n);

printf(Mmax=%d,line=%d\n,',max.n;

參考答案

1.1.0/i/i或1.0/(i*i)1.0/i/i或1.0/(i*i)解析:由題面中提供的計算pi的

公式可知:在第i項其值為l/(i*i),考慮到運(yùn)算結(jié)果為浮點(diǎn)數(shù),故必須

要將1轉(zhuǎn)化為浮點(diǎn)數(shù)或采用L0/(i*i)的形式。故本題應(yīng)填1.0/(i*i)或其等

效形式。

2.8

3.關(guān)系模型關(guān)系模型解析:在數(shù)據(jù)庫中用數(shù)據(jù)模型這個工具來抽象、表

示和處理現(xiàn)實世界中的數(shù)據(jù)和信息。通俗地講,數(shù)據(jù)模型就是現(xiàn)實世界

的反映,它分為兩個階段:把現(xiàn)實世界中的客觀對象抽象為概念模型;

把概念模型轉(zhuǎn)換為某一DBMS支持的數(shù)據(jù)模型。常見的數(shù)據(jù)模型有3

種,它們分別是層次模型、網(wǎng)狀模型和關(guān)系模型。

4.D

5.123\nO56\n009123\\n056\\n009解析:數(shù)組是用于按順序存儲同

類型數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),如果有一個一維數(shù)組,它的每一個元素是類型相

同的一維數(shù)組,就形成了一個二維數(shù)組。在內(nèi)存中數(shù)組的元素是連續(xù)順

序存放的,對;維數(shù)組來說,先存放第一行,再存放第;行,…,因為

每一行都是其廣義一維數(shù)組的元素,并且在給出全部數(shù)組元素的初值后,

二維數(shù)組的定義中可以將第一維的下標(biāo)省略。本題中,定義了一個元素

類型為整型的二維數(shù)組敢叫[3]={1,2,3,4,5,6,7,8,9),它相

當(dāng)于一個3*3的矩陣,for(i=0;i<3:i++)for(j=i+l;j<3;j++)a|j][i]=0;

將行下標(biāo)i大于列下標(biāo)j的元素a[2][0],a⑵⑴賦值為0,最后

for(j=0;j<3;j++)prinffC%n;a[i][j]);printf('\\n');進(jìn)行換行輸出,所以

輸出結(jié)果為

123

056

009

6.內(nèi)模式或物理模式或存儲模式內(nèi)模式或物理模式或存儲模式

解析:一個數(shù)據(jù)庫只有一個內(nèi)模式,它是數(shù)據(jù)物理結(jié)構(gòu)和存儲方式的描

述,是數(shù)據(jù)庫內(nèi)部的表示方法。例如,記錄的存儲方式是順序存儲、索

弓I按照什么方式組織;數(shù)據(jù)是否壓縮存儲,是否加密等。

7.*t++或*(t++)*t++或*(t++)解析:主函數(shù)中定義了兩個字符型數(shù)組stll

和str2,并且給str2賦初值“abcdefgh”,接著調(diào)用函數(shù)sstrcpy(strl,str2),

將字符串str2的值賦給strl.在函數(shù)sstrcpy(*s,*t)中,用了一個while循

環(huán),每循環(huán)一次將形參指針t所指的字符賦給形參指針s所指向的存儲

空間,然后指針s和指針t都下移到下一個元素。所以空格處應(yīng)該填"++

或*(t++)°

8.

C語言允許字符數(shù)據(jù)與整數(shù)進(jìn)行直接的算術(shù)運(yùn)算,故輸出大寫字母A

開始的連續(xù)字符,可通過白加運(yùn)算ch++完成。三角形字符陣列第i行

的字符個數(shù)為n?i+L在每行結(jié)尾以回車字符Nn,換行。

\r\n

\r\n

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

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

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

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

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

10.(double*)(double*)解析:本題考查強(qiáng)制類型轉(zhuǎn)換。函數(shù)malloc的默

認(rèn)返回是void*,若要使指針指向double類型,必須進(jìn)行類型轉(zhuǎn)換,類

型轉(zhuǎn)換格式為:(數(shù)據(jù)類型*)。

1LB解析:數(shù)據(jù)的存儲結(jié)構(gòu),又稱為數(shù)據(jù)的物理結(jié)構(gòu),是數(shù)據(jù)的邏輯

結(jié)構(gòu)在計算機(jī)中的存放形式,數(shù)據(jù)的存儲結(jié)構(gòu)有順序結(jié)構(gòu)、鏈?zhǔn)浇Y(jié)構(gòu)、

散列結(jié)構(gòu)和索引結(jié)構(gòu)等。

12.B解析:在內(nèi)存口,字符數(shù)據(jù)以ASCII碼存儲,它的存儲形式與整數(shù)的

存儲形式類似。C語言中,字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用,也可以

對字符型數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算,此時相當(dāng)于對它們的ASCII碼進(jìn)行算術(shù)運(yùn)

算,在本題中,s++相當(dāng)于s=s+l,即讓s指向數(shù)組中的下一個元素。

13.A解析:在C語言中,應(yīng)當(dāng)在定義函數(shù)時指定函數(shù)值的類型。凡不

加類型說明的函數(shù),默認(rèn)按整型處理。在定義函數(shù)時對函數(shù)值說明的類

型一般應(yīng)該和return語句中的表達(dá)式類型一致。如果函數(shù)值的類型和

return語句中的表達(dá)式類型不一致,則以函數(shù)值的類型為準(zhǔn),由系統(tǒng)自

動進(jìn)行轉(zhuǎn)換,即函數(shù)類型決定返回值的類型。

14.A

賦值運(yùn)算符的左邊只能是變量,而不能是常量或表達(dá)式。

15.BC語言中運(yùn)算符有優(yōu)先級和結(jié)合性。自增、自減運(yùn)算符的優(yōu)先級高

于邏輯運(yùn)算符,邏輯運(yùn)算符中邏輯與“&&”的優(yōu)先級比邏輯或“『‘高,邏

輯運(yùn)算符的結(jié)合性自左向右。所以題干中表達(dá)式等價于

“(a++)||((b++)&&(c++))?。運(yùn)算順序為:首先執(zhí)行、++”,再執(zhí)行“b++”,

最后執(zhí)行“C++”。故本題答案為B選項。

16.B解析:指針變量p指向數(shù)組a的第5個元素,p[3]在原指向基礎(chǔ)上

移3個單位,指針變量p將指向第8個元素(下標(biāo)為7的元素),值為7。

17.D

18.D

19.C

20.D繼承是面向?qū)ο蟮姆椒ǖ囊粋€主要特征,是使用已有的類的定義作

為基礎(chǔ)建立新類的定義技術(shù)。廣義的說,繼承是指能夠直接獲得已有的

性質(zhì)和特征,而不必重復(fù)定義它們,所以說繼承是指類之間共享屬性和

操作的機(jī)制。

21,voidfun(STREC*a)

\n{

\ninti;

\na->ave=O.0;

\nfor(i=0;i<N;i++)

\na->ave=a->ave+a->slij;

\n/*求各門課程成績的總和*/

\na->ave=a->ave/N;/*求平均分*/

\n}

\n【解析】本題考查的是指向結(jié)構(gòu)體類型的指針變量做參數(shù)和結(jié)構(gòu)體類

型成員的運(yùn)算。fun函數(shù)中求出平均成績,要帶回主函數(shù)則必須定義一

個指針類型的形參STREC*a,同時引用成員使用指向運(yùn)算符,a->ave和

a->s[i]o

\n

22.intfun(intt)

(

intfO=O,fl=l,f;

do{

/*根據(jù)斐波那契數(shù)列的定義求數(shù)值*/

f=fO+fl;

fO=fl;fl=f;

}while(f<t);/*如果求的數(shù)值小于t則繼續(xù)*/<7t);

returnf;

根據(jù)斐波那契數(shù)列定義不難發(fā)現(xiàn),該數(shù)列最終的結(jié)果由兩個數(shù)列之和

組成,所以可以在循環(huán)內(nèi)部始終把f看成前兩項之和,而fO始終代表

第n-2項,fl代表第n-1項。退出循環(huán)時得到的數(shù)f,就是大于指定數(shù)

的最小的數(shù)。

23.

【答案】

voidfun(char*s,chart(])

{.

inti,j-0;

forfi=0;i<strlen(s?);i++)

I

【解析】

使用循環(huán)遍歷字符串,將下標(biāo)和ASCII碼值滿足要求的元素賦給新的字符串c

24.\n#include,stdio.h'

\n#defineN3

\nstructstudent

\n{longstu_num;charsex;

\ncharname[15];intscore[4];

\nfloataverage;};

\nmain

\n{intij,index;floatsum,max;

\nstructstudentstuarr[N];

\nfor(I=0;I{printf('pleaseinput%dstudentinfoirnation:\\n',I+l);

\nscanf('%ld,%c,%s\&stuarr[I].stu_num,&stuarr[I].sex,stuarr[I].name);

\nfor(j=0;j<4;j++)

\nscanf('%d',&stuarr[I].score[j]);}

\nfor(I=0;I(sum=0.0;

\nfor(j=0;j<4;j++)

\nsum+=stuarr[I].score[j];

\nstuaiT[I].average=sum/4.0;}

\nmax=stuarr[0].average;

\nindex=0;

\nfor(I=1;Iif(stuarr[I].average>max)

\n{max=stuarr[I].average;

\nindex=I;}

\nprintfC總平均成績最高的學(xué)生信息是學(xué)號二%ld,性別二%c,姓名二%s,平

均成績

=%4.1fWn\sluarrtindex].slu_num,stuarr[index].sex,stuarr[index].nam

e,stuarrlindexj.average);

\n}\n

25.

【解析】按照題目中要求,求出能整除x且不是奇數(shù)的各整數(shù)。首先

判斷小于等于整數(shù)x的所有偶數(shù)是否能被x整除,將能被x整除的奇

數(shù)放入數(shù)組pp中。最后將數(shù)組pp中元素的個數(shù)返回到主函數(shù)當(dāng)中。

26.\n\tdoubleproc(intn)

\n{

\ninti;

\ndoubles=0.0;//s為其和的變量

\nfor(i=1;i<=n;i+十)

\nS=s+(l.0/(2*i-l)-l.O/(2*i));//計算s

\n=(l-l/z)+(l/3-1/4)+…+(1/(2n-l)-l/

\n2n)

\nreturns;//最后把所得到的和返回到主函數(shù)中

\n}

\n【解析】由題目中所給表達(dá)式可知,多項式的值為n項表達(dá)式的

和??梢岳胣次循環(huán)求出n項表達(dá)式的值,求和放在變量s中。最

后將多項式的值返回到主函數(shù)當(dāng)中。\n

27.

【解析】要把字符串str中ASCH碼值為偶數(shù)的字符刪除,需要判斷字

符串str

溫馨提示

  • 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

提交評論