2015年計算機(jī)等級考試《二級C語言程序設(shè)計》機(jī)考操作題題庫(附答案)_第1頁
2015年計算機(jī)等級考試《二級C語言程序設(shè)計》機(jī)考操作題題庫(附答案)_第2頁
2015年計算機(jī)等級考試《二級C語言程序設(shè)計》機(jī)考操作題題庫(附答案)_第3頁
2015年計算機(jī)等級考試《二級C語言程序設(shè)計》機(jī)考操作題題庫(附答案)_第4頁
2015年計算機(jī)等級考試《二級C語言程序設(shè)計》機(jī)考操作題題庫(附答案)_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2015年計算機(jī)等級考試

《二級C語言程序設(shè)計》

機(jī)考操作題題庫(附答案)

本卷共分為3大題15小題,作答時間為240分鐘,總分200分,

120分及格。

一、程序填空題(共50分)

1、請補(bǔ)充函數(shù)proc(),該函數(shù)的功能是把數(shù)組num中的數(shù)按從小

到大的順序排列(數(shù)組元素個數(shù)及值從主函數(shù)中輸入)。

例如,輸入n=5,num[0]~num[4]依次為57280,結(jié)果為025

78O

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

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

橫線上填入所編寫的若干表達(dá)式或語句。

試題程序:

二includeVstdlib.h>

二include<5idio.h>

「defineM100

voidproc<intnum[]?intn)

(

int

fordOi[1】]++)

for(j==Oi[2】4+十)

if(num[j]>num[j4-1J)

(

1?=num[j]i

num[j]=num[j+1]$

num[j+1]-11

voidmain<)

int1??0,0=0|

int

systcniC*CLSM)?

pnntf(M\nlnputn:\n")i

scan".%d"?&n)i

printf(N\nlnputdata:\n**)i

while(i<n)

printf(**num[%d]=*.i)?

scanf("%d".&-num[i])i

i++i

proc(num.n)i

printf(*\n*,?theresult???\n")i

for(i-0:iVnii++)

prini"

2、str為一個字符序列,序列由字符。和1組成。請補(bǔ)充函數(shù)proc(),

該函數(shù)的功能是:查找該字符序列中0字符連續(xù)出現(xiàn)的最長長度(即

0字符的個數(shù)),如果有幾個0字符串長度相同,只記錄最后一個0

字符串的相關(guān)信息。通過m和k返回最長0字符串的長度和最后0

字符的下標(biāo)。

例如,如果輸入"0100001000",結(jié)果為:0字符串最長長度為4,

起始和結(jié)尾下標(biāo)依次為、

250

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

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

橫線上填入所編寫的若干表達(dá)式或語句。

試題程序:

4include<stdlib.h>

includeVstdio.h>

#include<conio.h>

"defineM80

voidproc(ClJ)

(

inti.j?0i

intbb[Mji

char?

?mw0i

?kw0?

for(i-0jiVMii++)

bb[i]m0i

i"?0i

while(?(p+l)》

(

if(?(p+i)??V)

121?

i++,

>

else

j++s

i++s

if([3J)

(

?m=bb[j]?

voidnuiinf)

char?tr[M]i

intm.ki

?yntem("CLS>>i

printfC"???inputtheoriginal,trin&???\n*)i

getuCutr)i

printf<*???TheOriginalstring???\ne)i

putM(9ir>i

proc《str?&m?&k)[

printf(*\nThclengthof*0*is:

%d\rT?m>i

printf("???Thesuffixofcharacter

???\n")i

printfC"%d.%d,k—m+1.k),

}

3、請補(bǔ)充函數(shù)proc(),該函數(shù)的功能是:把從主函數(shù)中輸入的字符

串str2倒置后接在字符串strl后面。

例如,stri='Howdoyou",str2="?od",結(jié)果輸出:"Howdo

youdo?”

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

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

橫線上填入所編寫的若干表達(dá)式或語句。

試題程序:

/includeVstdlib.h>

*include<Mdio.h>

#include<conio.h>

口defineM40

voidproc(char?Mrl?char?str2)

inti=0?i=0?k=0?n;

clurchi

char?pl^strli

char?p2=str2i

while(?<pl+i))

i++i

while(?(p24-)))

j++i

n=Hl?

for(:kV=j/2ik++.j------)

ch=?(p2+k)i

?《p2+k)?*(p2+j)i

?(p24-j)??chi

)

K2J?

for<?[3】,i++)

?(pl+?p2++,

?《pl+i-

]

voidmain()

(

charstrl[M]?str2[M]i

systctn("CLS*))

printf("???Inputthestringstrl&str2

???\n")i

printf(*\nMrl:"),

get5(strl)i

printK*\nscr2i")i

gclx(Mr2)i

printf(**??Thestringstrl&str2???\n*>?

puU(strl)i

puts(?tr2)i

proc(Mtrl?9tr2)i

printfC"???Thenewstring???\n")i

puts<strl)i

4、請補(bǔ)充函數(shù)proc(),函數(shù)proc()的功能是求7的階乘。

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

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

橫線上填入所編寫的若干表達(dá)式或語句。

試題程序:

匕includeVsidic.h>

longproc(imn)

(

□】>

returnCn?proct121)i

dxcif(13】)

return11

void)

{

intk=7:

print,"%d!=%ld'n”.k?proc(k)):

i

5、請補(bǔ)充main。函數(shù),該函數(shù)的功能是求出l!+21+31+41...+N!

的和。

例如,

1!+21+31+41+...+9!=409113o

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

僅在橫線上填寫所需要的若干表達(dá)式或語句,請勿改動函數(shù)中的其他

任何內(nèi)容。

試題程序:

力include<2stdio.h>

voidmain()

(

inti?ni

long5um-0.temp=11

printf(M\nlnputni\n*)i

Mcanf("【1】)i

for(i-1iiV?nii++)

(

temp—(2|i

?um.13]?

printf("1!+…+%d!=%ld\n".n.$um)i

二、程序改錯題(共100分)

6、下列給定程序中,函數(shù)proc()的功能是:傳人一個整數(shù)n,計算

如下公式的值。

t=l/2-l/3-...-l/n

例如,若輸入3,則應(yīng)輸出0.166667。

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

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

結(jié)構(gòu)。

試題程序:

匚include<Lstdlib.h>

*includeVconio.h>

3includeVsidio.h>

doubleproctintn)

I

double!=I.Oi

intit

for(i-2ii<-nii+4->

//????found????

t-LO-1/is

//????found????

)

voidmain()

{intmi

system<*CI-SW)i

printf("\nPleaseenter1ituegernumberHtXn**)i

scanf("%d"?&m)s

printf(w\n\nTheresultis%lf\n*,proc(m))i

7、下列給定程序、中,函數(shù)proc()的功能是:先將字符串s中的字

符按順序存放到t中,然后把s中的字符按正序連接到t的后面。例

如,當(dāng)s中的字符串為WXYZ時則t中的字符串應(yīng)為WXYZWXYZO

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

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

結(jié)構(gòu)。

試題程序:

#includeVstdlib.h>

5includeVconio.h>

sincludeVadio.h>

£include<string.h>

voidproc(chnr■、?char?t)

(

inti?xh

M!=Mrlcn(Ca

(or(i=Oii<jilii++)

//???■found??*?

forii++)

t[2?sl]=>\O,i

)

voidmain()

(

char5[100]?t[100]i

system(*CI-SM)i

M

prinif("\nPleaseenterstringss)i

scanf(i

proc(s?t)t

prinif(*Thcrc5ullis,%s\n*?1)?

$

8、下列給定的程序中,函數(shù)proc()的功能是:計算并輸出k以內(nèi)最

大的10個能被15或18整除的自然數(shù)之和,k的值由主函數(shù)傳人。

若k的值為800,則函數(shù)的值為7605。

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

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

結(jié)構(gòu)。

試題程序:

#include<stdio.h>

*includeVconio.h>

*include<Ktdlib.h>

intproc(intk)

(

intm0?me0?ji

while((k>-2)&&(mcV10))

(

//????found????

if((k%l5?0)||(k%18?0))

(

m一m+kime++」)

k——I

//????found????

returnmi

)

voidmain()

(

systcm("CI?S")?

printf("%d\n".proc(800)):

)

9、下列給定程序中,fun()函數(shù)的功能是:從整數(shù)1~50中,選出能

被3整除且有一位上的數(shù)是5的數(shù),并把這些數(shù)放b所指的數(shù)組中,

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

位數(shù)。

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

注意:不要改動main。函數(shù),不能增行或減行,也不能更改程序的

結(jié)構(gòu)。

試題程序:

AincludeVmtdio.h>

//????found????

intfun(tnt*b);

(

intj?a!,*2?is0i

//????found????

br(j-lO$jV-5(hj++)

<

?2mj/l0i

al?j—a2?10i

if((jK3"-0&&a2?15》11《j%3,■()&&■】

?—5))

(

KO-h

i++s

}

}

//????found????

returnj;

)

voidmain()

<

int*L50J?i?m

n*fun(a)i

prtntfC"therrnultinAn")i

forCi-Oii<mi++>

printfC??[?]):

printf(*\n**)t

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

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

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

;若構(gòu)成二三角形函數(shù),返回;若不能構(gòu)成三角形函數(shù)返回

2I0o

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

注意:不要改動main。函數(shù),不能增行或減行,也不能更改程序的

結(jié)構(gòu)。

試題程序:

"include<stdio.h>

ini(un(intx.imy.imz)

(

if《x+y>z&&y+z>x&&x+z>y>

(

//???wfound?????

if(xy&&y=hz)

return1i

elseif(xyIIyr-z1lx-z)

return2i

else

//**?*found????

return3s

)

elsee

returnOi

voidmain<)

(

intx.y.z.shaptu

printK^Xnlnputx.y?z:°):

McanfL%d%d%d,&x.&y.&zh

”intf("\nx二%d?y=%d.z=%d\n".x.y.z)i

5hapc=fun(x.y.2)i

printf("\n\nThc5hnjxr:%d\n".shape)?

三、程序設(shè)計題(共50分)

11.請編寫函數(shù)proc(),它的功能是:求出str所指字符串中指定字

符的個數(shù),并返回此值。

例如,若輸入字符串12341234123,輸入字符4,則輸出2O

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

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

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

試題程序:

#includeVjndlib.h>

*includeVconio.h>

與include<stdio.h>

#defineN8]

intproc(char?str.charc)

<

)

voidmain<)

(chura£N]?chi

jiyMemC*ClrSH)i

printf("\nPieaMenterastring?")i

getn(a)i

printfC"\nPlea5centerachartN)i

ch^getcharC);

printfC"\nThcnumberofthecharis:%d

\n*,proc(a?ch)>;

12、請編寫函數(shù)proc(),其功能是:將str所指字符串中除下標(biāo)為偶

數(shù)、同時ASCH碼值為奇數(shù)的字符外,其余的字符都刪除,串中剩

余字符所形成的一個新串放在t所指的數(shù)組中。例如,若str所指字

符串中的內(nèi)容為ABCDEFG12345其中字符8的ASCII碼值為偶數(shù),

所在元素的下標(biāo)為奇數(shù),因此必須刪除;而字符A的ASCII碼值為

奇數(shù),所在數(shù)組中的下標(biāo)為偶數(shù),因此不應(yīng)當(dāng)刪除。依次類推,最后

t所指的數(shù)組中的內(nèi)容應(yīng)是ACEGO

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

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

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

試題程序:

Winclude<stdlib.h>

Winclude<conio.h>

#includeVsldio.h>

#include<string.h>>

voidproc(char?、tr.chart[J)

voidmain()

(

char?tr£100]?t[100]i

j?yMtcm(*CLS")?

printf(**\nPlcaMcenterstringstr:**):

scanf(*%s".Mr)i

proc(stru)I

printfC"\nThcresultis:%s\nw.t);

),

13、學(xué)生的記錄由學(xué)號和成績組成,M名學(xué)生的數(shù)據(jù)已在主函數(shù)中

放入結(jié)構(gòu)體數(shù)組S中,請編寫函數(shù)proc(),它的功能是:把分?jǐn)?shù)最高

的學(xué)生數(shù)據(jù)放在h所指的數(shù)組中。注意:分?jǐn)?shù)最高的學(xué)生可能不止一

個,函數(shù)返回分?jǐn)?shù)最高學(xué)生的人數(shù)。

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

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

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

試題程序:

HincludeVxtdio.k>

UdefineM16

lypedefMirurt

(charnum[10]>

mtA?

STREC;

intproc(STREC?覆.STREC-b)

voidnrutin(>

(

STRECMU[M]■<<-GAOOS".85)?(-GA003M?76)?

(*GA002\69).(*GA004”?85),'GAOOl”.91),

<HGA007*.72]A"GA008*.64}?("GA006".87}.

rGAO15-.851.rGAO13".9n.rGAO12M.6n.

(HGAOI4*.91}.rGAOir.66M"GAO17*.64h

("GA0I8-.64IJ-GA016M?72)}i

STRECh[M]i

inii?ni

n-proc(stu?h)i

printfC"The%dhighestscore:\nw.n)s

for(i^Oii<mi++)

printf(*%s%4d\nnum.h[i].s>>

〃輸出最高分學(xué)生的學(xué)號和成績

printfC"\n")5

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

最大元素在數(shù)組中的下標(biāo)并存放在k所指的存儲單元中。

例如,輸入如下整數(shù):

876675896101999401980431451777

則輸出結(jié)果為4,999。

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

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

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

試題程序:

岑include<std!ib.h>

,includeVconio.h>

Winclude<.sidio.h>

intprocCini?s?intt?ini?k)

voidmain()

(

intarr£10]-1876.675?896?101?999.401.

980.431.451.777)?%

?ystcm(*CI*SW):

proc(arr?10.&k):

prind("%d.%d\n*?k.arr{k]);

\

15、請編寫函數(shù)fun(),其功能是計算并輸出下列多項式的值:

F=l+1/1!+1/21+1/31+1/4l+...+1/m!

例如,若主函數(shù)從鍵盤給m輸入5,則輸出為F=2.716667O

注意:m的值要求大于1但不大于100o部分源程序給出如下。

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

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

試題程序:

#include<stdio.h>

doublefun(intm)

voidmnin()

Iinttni

double(i

FILE?outi

primf("Inpulmi*)i

i

?fun(m)t

out?i-fopen("outfile.datMtHw")?

for(m=10imVl(hm++)

fprintfCout.*%(\n*wfun(m)>i

fclose<out)i

試題答案購買后可見

1、[I]i<n[2]j<n-l

【解析】由函數(shù)proc()可知,該程序選用的是冒泡法來進(jìn)行排序,變

量i為循環(huán)次數(shù),因此,【1】處填"i<n";變量J用來判斷第j個

元素和第j+1個元素順序是否正確,因此,【2】處填o

2、[1]char*str,int*m,int*k[2]bb[j]++[3]*m<=bb[j]

【解析】形參的個數(shù)和類型由調(diào)用該函數(shù)的實參的類型和個數(shù)決定,

由main。函數(shù)中的proc()函數(shù)可知’[1】處填"char*str,int*m,

int*k";由函數(shù)proc()可知,數(shù)組bb中存放每一個連續(xù)的0字符

串中0的個數(shù),因此【2】處填"bb[j]++";最后把個數(shù)最多的放

在變量*m中,下標(biāo)放在*k中,因此【3】處填"*m<=bb中,。

3、[1]j-[2]*(p2+n)='\Q'【3】*p2

【解析】由函數(shù)proc()可知,變量n存放的是字符串p2的長度,因

此,【口處填;根據(jù)題目中要求要將str2逆置,逆置完成后

要為該字符串重新添加結(jié)束符,因此,【2】處填"*(p2+n)=,\0,";

將逆置后的str2接到strl后面,直到str2的最后一個字符,因此,

【3】處填"*p2"。

4、[1]n>l[2]n-1[3]n=-l

【解析】本題求階乘是由函數(shù)遞歸調(diào)用來實現(xiàn)的。階乘公式為

N!=N*(N-1)!,因此【1】處填"n>l";由遞歸的性質(zhì)可知【2】處

填"n-r;直到N=1時結(jié)束遞歸調(diào)用,因此【3】處填"n==l"。

5、[1]&n[2]temp*i[3]sum+temp

【解析】該題中函數(shù)功能是求得題干中給出的數(shù)列值。解題過程,首

先計算數(shù)列中每一項的值,然后對數(shù)列中有限項累加求和。

第一空:根據(jù)提示語句^printfC*\nlnputm:\n");",知道第一

空是獲得由鍵盤輸入的n,所以根據(jù)C語言中的輸入語句,第一空填

"&n"。

第二空:根據(jù)"temp=l"語句中temp的初始化,知道temp用來

存放階乘,也就是數(shù)列的每一項,所以第二空填"temp*i"。

第三空:同理可知sum用來存放數(shù)列的和,所以第三空填

“sum+temp”。

6、(1)錯誤:

正確:t-=l.0/i;

(2)錯誤:;

正確:returnt;

【解析】從題目中的公式可知,整數(shù)H每增加1,其結(jié)果為上一次的

結(jié)果減1/i,因此,應(yīng)改為;

由函數(shù)的定義可知,函數(shù)proc()要把最后所得到的結(jié)果返回給主函

數(shù),因此要在函數(shù)proc()最后加上Mreturnt;"。

7、錯誤:t[i]=s[sl];

正確:t[i]=s[i];

【解析】函數(shù)proc()首先要實現(xiàn)將數(shù)組s中的元素順序放在數(shù)組t中,

即數(shù)組t中下標(biāo)為i的元素在數(shù)組S中下標(biāo)也為i,因此"t[i]=s[sl];

應(yīng)改為Ht[i]=s[i];".

8、⑴錯誤:if((k%15=0)jl(k%18=0))

正確:if((k%15==0)||(k%18==0))

⑵解吳:缺少大括號

正確:在k--;后加)

【解析】題目中要求能被15或18整除的自然數(shù),判斷整除條件是

將該數(shù)分別對15和18取余,若余數(shù)等于0,說明能整除,否則不

能整除,判斷兩數(shù)是否相等應(yīng)該用"=="而不是"=";在c語言

中,符號{和}一定是成對出現(xiàn)的,因此在語句k-;后要加上符號}。

9、(1)5笥吳:intfun(int*b);

正確:intfun(int*b)

(2)錯誤:for(intj=10;j<=50;j++)

正確:for(intj=l;j<=50;j++)

(3)錯誤:returnj;

正確:returni;

【解析】⑴根據(jù)題目中要求,第一個標(biāo)R下fun()函數(shù)的定義為"int

fun(int*b);"。在C語言中規(guī)定,函數(shù)的定義格式,不應(yīng)以分號結(jié)

束,所以應(yīng)把末尾分號去掉。

(2)題干中要求在1~50之間選出符合條件的整數(shù),循環(huán)條件表達(dá)式

的起始應(yīng)當(dāng)是j=l而不是j=10所以第二個標(biāo)識下應(yīng)改為"for(j=l;

j<=50;j++ro

(3)變量i是標(biāo)識數(shù)組b的下標(biāo),也就是數(shù)組的個數(shù)。題目"return/

返回的是循環(huán)條件表達(dá)式中的變量,所以這里應(yīng)改為"returni"。

10、⑴錯誤:return1;

正確:return3;

(2)錯誤:return3;

正確:return1;

【解析】本題利用if語句判斷三條邊的關(guān)系,根據(jù)判斷的結(jié)果,返回

題干中要求的值。

(1)第一個標(biāo)識下的語句"if(x==y&&y==z)"說明x,y,z三個值

相等,即等邊三角形,所以應(yīng)該返回3,將"1"改成"3"。

(2)第二個標(biāo)識下的else語句應(yīng)該是除了等邊及等腰三角形之外的三

角形,所以應(yīng)該返回1,應(yīng)將"3"改成"1"。

11、intproc(char*str,charc)

(

inti=0;//i是放與c相同的字符的個數(shù)的

溫馨提示

  • 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

提交評論