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

付費(fèi)下載

下載本文檔

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

文檔簡介

2021年甘肅省金昌市全國計(jì)算機(jī)等級考試

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

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

一、2.填空題(10題)

1.以下函數(shù)的功能是【】。

floatav(a,n)

floata[];

intn;

{inti;floats;

for(i=0,s=0;i<n;i++)s=s+a[i];

returns/n;}

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

mainQ

{intp=30;

printf("%dkn",(p/3>0?p/10:p%3));

)

3.成本估算模型中,Putnam估算模型是一種【】模型。

4.如下程序片段:

ina,b,c;

printf("inputa,b,c:");

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

欲使輸出結(jié)果為1、2、3(分別對應(yīng)于a、b、c),輸入數(shù)據(jù)的正確形式為

[lo

5.在C語言中,可以利用【】,將一個(gè)表達(dá)式的值轉(zhuǎn)換成指定的類型。

6.隊(duì)列是限定在表的一端進(jìn)行插入和在另一端進(jìn)行刪除操作的線性表。

允許插入的一端稱作0

10

7.以下程序通過函數(shù)SunFun求這里f(x)=x2+l,由F函數(shù)實(shí)現(xiàn)。

請?zhí)羁铡?/p>

main()

{printf("Thesum=%d\n",SunFun(10));}

SunFun(intn)

{intx,s=0;

for(x=0;x<=n;x++)s+=F([]);

returns;

)

F(intx)

{return([]);)

8.數(shù)據(jù)流圖的類型有【】和事務(wù)型。

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

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

)

main()

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\N,*p,*q))

)

10.下面程序把從終端讀入的10個(gè)整數(shù)以二進(jìn)制的方式寫到一個(gè)名為

bi.dat的新文件中。請?zhí)羁铡?/p>

#include<stdio.h>

FILE*fp;

main()

{inti,j;

if((fp=fopen([],"wb"));=NULL)exit(O);

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

{scanf("%d",&j);

fwrite(&j,sizeof(int),1,[]);

)

fclose(fp);

)

二、單選題(10題)

11.對于循環(huán)隊(duì)列,下列敘述中正確的是()o

A.隊(duì)頭指針是固定不變的

B.隊(duì)頭指針一定大于隊(duì)尾指針

C.隊(duì)頭指針一定小于隊(duì)尾指針

D.隊(duì)頭指針可以大于隊(duì)尾指針,也可以小于隊(duì)尾指針

12.下列方法中,屬于白盒法設(shè)計(jì)測試用例的方法的是()o

A.錯(cuò)誤推測B.因果圖C.基本路徑測試D.邊界值分析

13.作為信息處理熱點(diǎn)技術(shù)之一的“多媒體技術(shù)”中的媒體,強(qiáng)調(diào)的是()。

A.存儲媒體B.表現(xiàn)媒體C.傳輸媒體D.感覺媒體

14.若有下列定義,則對a數(shù)組元素地址的正確引用是()。inta[5],*p=a;

A.p+5B.*a+1C.&a+lD.&a[O]

15.在inta=3,int*p=&a;中,*p的值是()

A.變量a的地址值B.無意義C.變量p的地址值D.3

16.以下敘述正確的是

A.continue語句的作用是結(jié)束整個(gè)循環(huán)的執(zhí)行

B.只能在循環(huán)體內(nèi)和swish語句體內(nèi)使用break語句

C.在循環(huán)體內(nèi)使用break語句或continue語句的作用相同

D.從多層循環(huán)嵌套中退出時(shí),只能使用got。語句

17.以下敘述中正確的是()。

A.用C語言編寫的程序只能放在一個(gè)程序文件中

B.C語言程序書寫格式嚴(yán)格,要求一行內(nèi)只能寫一個(gè)語句

C.C語言程序中的注釋只能出現(xiàn)在程序的開始位置和語句的后面

D.C語言程序書寫格式自由,一個(gè)語句可以寫在多行上

18.以下是正確的C語言實(shí)型常量的是()。

A?.8e+8.B.e+8C.+8e.8D.+8.8e+8

19.以下程序的輸出結(jié)果是____。#defineM(x,y,z)x*y+zmain(){int

a=l,b=2,c=3;printf("%d\n",M(a+b,b+c,c+a));}

A.19B.17C.15D.12

20.有如下程序段

#include"stdio.h"

#include"string.h"

#defineN10

#defineM10

char*find(char(*a)[M],intn)

{char*q;inti;

q=a[0];

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

if(strcmp(a[i],q)<0)q=a[i];

returnq;}

main()

{chars[N][M]={"tomeetme","you","and","he","china");

char*p;

intn=5;

p=find(s,n);

puts(p);}

則執(zhí)行后輸出的結(jié)果為

A.A.heB.andC.youD.tomeetme

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

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

案的項(xiàng)目中包含一個(gè)源程序文件progl.Co程序中將m個(gè)人的成績存放

在score數(shù)組中,請編寫函數(shù)fun(),它的功能是將低于平均分的人數(shù)

作為函數(shù)值返回,將低于平均分的分?jǐn)?shù)放在below所指的數(shù)組中。

例如,當(dāng)score數(shù)組中的數(shù)據(jù)為10、20、30、40、50、60、70、80、

90時(shí),函數(shù)返回的人數(shù)應(yīng)該是4,below中的數(shù)據(jù)應(yīng)為10、20、30、

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

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

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

試題程序:

1#include<conio.h>

2tinclude<stdio.h>

3#include<string.h>

4iinclude<stdlib.h>

5intfun(intscore[],intm,int

%below[])

6{

7

8)

9voidmain()

W(

11FILE?wf;

12inti,n,below[9];

13intscore[9]={10,20,30,40,

50,60,70,80,90};

14system("CLS");

15n?fun(score,9,below);

16printf(M\nBelowtheaverage

scoreare:w);

17for(i=0;i<n;i-?-+)

18printf(M%dbelow[i]);

19/*****************/

20wf=fopen("out?dat","w");

21for(i=0;i<n;i+??-)

nn

22fprintf(wf,%d/below[i]);

23fclose(wf);

24/*****************/

25)

22.請編寫函數(shù)fun,其功能是:找出2XM整型二維數(shù)組中最大元素的

值,并將此值返回調(diào)用函數(shù)。

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

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

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

^include<<udio.h>

WdrlinrM4

intfun(int]M])

!nain()

intarr;2][M]=15.8.3.45.76.T.12,82:void\0N0();

printf(*max=%d\n*'.fun(arr));

N()NO();

voidN()NO()

”?本函數(shù)用于打開文件,輸入數(shù)據(jù),謝用闕數(shù),輸出數(shù)據(jù),關(guān)團(tuán)文件。?/

FILE?wf;

iniarr[][M]s15.8,3.90.76.-4,12,82]:

wf—fopen("out.dat","w*);

fprintf(wf.Mmax=%d\nw,fun(arr));

fraloM?(wf);

23.

N名學(xué)生的成績已在主函數(shù)中放入一個(gè)帶有頭結(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指

向鏈表的頭結(jié)點(diǎn)。請編寫函數(shù)fun(),其功能是:找出學(xué)生的最高分,

并由函數(shù)值返回。注意:部分源程序給出如下。請勿改動main()函

數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入所編寫

的若干語句。試題程序:

“Q》F,、2

?(?>】?9」>iq

,M?MUS

item*/

?%)-[N]?*|qnop

()E2押a

U.u\u\”iBMd

?《'nnN-K3V-dPI?W

?4%第?,/

<

■H"V-d.d

t("〈一”?KTZ%<-e>J?i>u<l

l°P

??.mj3d

Y?13M1S

I

CM-13Mls八"。P?*

(

BWMWVBH*//叫。za

1TlTIN-nV-d

(

ib?4

??-nc?<<h.+I?u>.?v-d

1JJ3>LLSH<^P<m2(?J3KLS~b

I

小?UY力?/號’9%,〃

(NAHU

,0.?<-.<1

?“MAS>F?*?,》?"■<?.13>11517

fMl

他…?7?J3M1S

I

<??"f"2?MUS

<Q?J3IU”叫邛F呻

gMlSB=UM?PP*1X|

?(

l|*4V?l?vpiBJVUBV

…Nf

>

l?i|?

?NiFP,

<MTIP??>Kw9

<H?pH>gMq

24.

編寫函數(shù)proc(),它的功能是:根據(jù)公式求p的值,結(jié)果由函數(shù)值帶

回。m與n為兩個(gè)正數(shù)且要求m>;n。p=m!/(n!(m-n)!),例如,

m=20,n=10時(shí),運(yùn)行結(jié)果為184756.000000。注意:部分源程序給出

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

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

sVcoeiouh>

£include4bo.h>

9mcideOtdbb.

fk>eiprocCmim.ima

voidmaiti<)

*ClwS")i

pnntf<*p*Kf\n*?proc<2l0?10))i

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

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

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

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

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

tinclude<就dio.h>

命include<string,h>

IMefincM81

intfun(char?ss,charc)

main()

Ichara[M]fch;

voidNONO();

printf("\nPleaseenteraairing:");ge<s(a);

printf(*\nPle?3eenterachar:”);chwgelchar();

printf(*\nThenumberofthecharin:%d\nw,fun(a,ch));

NONO()5

voidNONO()

)/?本函數(shù)用于打開文件,幢人酒試數(shù)據(jù),利用fun函數(shù),輸出數(shù)據(jù).關(guān)閉文件。?/

imi;

RLE?rf,?wf;

chara[M],b[M],ch;

rf=fbpen(Hin.dat\Hr*);

wfwfopen("out.dat",*w");

fbr(ic05i<lO;i++)

I

fiM^uif(rf,"%.a);

fscafif(rf,"%8W,b);

chs?b;

fprintf(wf.w%c■%d\n*.ch.fun(a,ch));

I

rf);

fcloee(wf):

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

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

平均分,并放人記錄的ave成員中。

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

則他的平均分應(yīng)為78.875。注意:部分源程序在文件PR0G1.C中。

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

填入你編寫的若干語句。

tfincludr<stdio.h>

?defineN8

typedrfMmrt

Icharnum;10];

double?[N]s

doubleavr;

ISTREX;

voidfun(STREC?a)

niain()

STRECs=|-GA005”.85.5,76,69.5,85.91.72.64.5.87.51;

inti;

voidNONO():

fun(&s);

l)rinif(**TheMuckmidhte:\n*,■?num);

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

printf(H%4.

printf("\nasu=%7.3An*.w.avtt);

NONO()t

voidNONO()

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

FILE?outj

inti.j;STREC?[10]?|

IwGA005",85.5.76.69.5.85.91.72.64.5.87,51.

I-CA001-,82.5.66.76.5,76.89.76.46.5.78.51.

I*GA002-.72.5.56.66.5.66.79,68,46.5.58.5:,

|-GA003",92.5.76.86.5.86.99,86.56,5.88.5I,

I"GA004-.82.66.5.46.5.56.76.75.76.5.63.5i.

nM

|GA006,75.5.74.71.5.85.81.79,64.5t7l.51.

|?GA007-,92.5.61.72.5.84.79,75,66,5.72.51.

I?GA008*.72.5,86.73.5.80,69,63,76,5.51.5!.

!"GA009”,6657l.74.5.70.6l.82.86,5.58,5二

,GAOIO",76.66.5.75.5,60.76.71.96.5.93.51.

I;

oul-fopcn(*out.<urww);

(br(is0;i<10;i+4-)1

run(4?|i]):

fprintf(out."%7,3f\n*.?[i].ave);

fdow((Mil)?

27.

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

同時(shí)ASCH值為偶數(shù)的字符外,其余的全部刪除,串中剩余字符所形成

的一個(gè)新串放在t所指的數(shù)組中。例如,若str所指字符串中的內(nèi)容為

edB2A4Dsdg,其中字符A的ASCII碼值為奇數(shù),因此應(yīng)當(dāng)刪除;其中

字符B的ASCH碼值為偶數(shù),但在數(shù)組中的下標(biāo)為偶數(shù),因此也應(yīng)當(dāng)

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

不應(yīng)當(dāng)刪除。依此類推,最后t所指的數(shù)組中的內(nèi)容應(yīng)是d24。注意:

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

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

Utnclvde

二includeVcomo.h>

■include<ttdicub>

9mdude<Hnng.

voidpror<char?Mr.rh?r

voidMm(>

(

charstr[100]?t[100jg

pnntflentervirtng

proeC0r?Oi

pt*\nThctsi

28.

編寫函數(shù)fun,其功能是:從字符串中刪除指定的字符,同字母的大、小寫按不同字符處理,

例如,若程序執(zhí)行時(shí)輸入字符串為:

Uiurborandbniiand"+’

從鍵盤上輸入字符n,則輸出為:

uturbocadIx/rladC++”

如果幡入的字符在字符串中不存在,則字符串照原樣輸毋,

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

請勿改動主晶數(shù)mam和其也函數(shù)中的任何內(nèi)容,僅在函數(shù)0n的花括號中填入你編寫的若干精句

試題程序:

#indude<sldioJi>

voidfun(chars[]Jntc)

f

}.

main()

|staticcharstrf卜"turhocandborhrulo++”;

charrh:

charch:

print。"原始字符串:%s\nv.str);

prinrf(u輸入一個(gè)字符An”);

seanff"%c":&ch);

printf(hstr{]=%s\n"str):

fitrepy(str/turbocandBorland(:++”);

fun(str/a'):

29.編程計(jì)算下列表達(dá)式:s=n!(n從鍵盤上輸入)

30.

M名學(xué)生的成績已在主函數(shù)中放入一個(gè)帶頭結(jié)點(diǎn)的鏈表結(jié)構(gòu)中,h指向

鏈表的帶頭結(jié)點(diǎn)。請編寫函數(shù)proc(),它的功能是:找出學(xué)生的最高

分,由函數(shù)值返回。注意:部分源程序給出如下。請勿改動main()

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

寫的若干語句。試題程序:

UtfKludt<Mdio.h>

保tnclude<sidbl>.h>

9defineM8

mmctHIMI

Idoubleg|

nrwiUMI?nc&ii

h

lypedrf?trucldhtSTRDI,i

&,HCB?STREC>h)

STREH"?cmi(dottbk?B)

(

STREC?b??p??q?

inti-Oi

h=p*(STREl*?)maUoc<smof(STREC>)i

Oi

wkile(i<M)

〃產(chǎn)中8個(gè)靖女班的宣.善分依存入f#女中

I

Q—STREX、)mallociMMOKSTREC))i

p->?-<1]?]??tp->nrifqiP-RI

I

p->?rxi-NULI.i

rriumha

)

voidouth?t<STRDl*?h>

(

STKEV?p,

pRbi

>i

do

IpnitfK*—>HZ.0<*<p->t)ipwp-

/?出各分?jǐn)?shù)

whfle<p—>?cxt??NULDi

pcinifC*\n\n*)i

>

void)

(

doublezu[M-]S6?89?76?95,91?“.7S?

S5)?maxi

STREC?hi

h-rre?i<Mw)i

o?thnl(h)a

m*K^pror(h)i

pnntf(eiBA?MKi.I(\n..a'h

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

31.下列給定程序中,函數(shù)fun()的作用是,將字符串tt中的大寫字母都

改為對應(yīng)的小寫字母,其他字符不變。例如,若輸入"Ab,cD",則輸出

"ab,cd"o

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

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

試題程序:

#include<stdio.h>

#include<string.h>

#include<conio.h>

char*fun(chartt[])

(

inti;

for(i=0;tt[i];i++)

/***********不**found**不***不***不***/

{if(('A,<=tt[i]||(tt[i]<='z'))

tt[i]+=32;}

return(tt);

}

main()

{inti;

chartt[81];

clrscr();

printf("\nPleaseenterastring:");

gets(tt);

printf("\nTheresultstringis:\n%s",fun(tt));

)

32.下列給定程序中,函數(shù)fun()的功能是:實(shí)現(xiàn)兩個(gè)整數(shù)的交換。例如

給a和b分別輸入60和65,輸出為:a=65b=60

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

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

試題程序;

#include<stdio.h>

#include<conio.h>

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

voidfun(inta,b)

{intt;

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

t=b;b=a;a=t;

)

main()

{inta,b;

clrscr();

printf("Entera,b:");scanf("%d%d",

&a,&b);

fun(&a,&b);

printf("a=%db=%d\n",a,b);

)

33.給定程序MODH.C中函數(shù)fun的功能是:根據(jù)整型形參m的值,

計(jì)算如下公式的值。

例如,若m中的值為:5,則應(yīng)輸出:0.536389o

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

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

1?include<stdio.h>

2doublefun(intm)

3(doubley?1.0;

4inti;

5/■????????????found*,,,*,*,*,***/

6for(i-2;i<m;i++)

7/……??…??found……?……/

8y-?1/(i?i);

9return(y);

10)

11main()

12{intn?5;

wn

13printf(\nTheresultis%lf\nr

fun(n));

14

34.下列給定程序中函數(shù)fun()的功能是:求出字符串中最后一次出現(xiàn)的

子字符串的地址,通過函數(shù)值返回,在主函數(shù)中輸出從此地址開始的字

符串;若未找到,則函數(shù)值為NULL。例如,當(dāng)字符串中的內(nèi)容為

abcdabfabcdx,t中的內(nèi)容為ab時(shí),輸出結(jié)果應(yīng)是abcdx。當(dāng)字符串中的

內(nèi)容為abcdabfabcdx,t中的內(nèi)容為abd時(shí),則程序輸出未找到的信息:

Notfound!

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

#include<string.h>

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

char*p,*r,*a;

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

a=Null;

while(*s)

{p=s;r=t;

while(*r)

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

if(r==p){r++;p++;}

elsebreak;

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

s++;

)

returna;

)

main()

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

clrscr();

printf("\nPleaseenterstringS:");

scanf("%s",s);

printf("\nPleaseentersubstringt:");

scanf("%s",t);

p=fun(S,t);

if(p)printf("\nTheresultis:%s\n",p);

elseprintf("\nNotfound!\n");

)

35.給定程序M0D11.C中函數(shù)fun的功能是:讀入一個(gè)字符串(長度<

20),將該字符串中的所有字符按ASCII碼升序排序后輸出。

例如,若輸入:edcba,則應(yīng)輸出:abcde0

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

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

1?include<stdio.h>

2*include<string.h>

3voidfun(chart[])

4(

5charc;

6inti,j;

7******/

8for(i■strlen(t);i;i--)

9for(j?0;j<i;j++)

10/*********wfound***********/

11if(t[j]<t[j.1])

12(

13c-t[j];

14t(j)-t[j?11;

15t[j*11-c;

16)

17}

18main()

19

20chars[81];

21printf(w\nPleaseenteracharacter

string:R);

22gets(s);

23printf("\n\nBeforesorting:\n

\w%s\ww,s);

24fun(s);

25printf(w\nAftersortingdecendingly:

\n\W,s);

26

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

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

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

8565.56995.5875562.575

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

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

#defineN20

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

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

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++)

/*********不*不*found***不*不*不*不*不***/

if(s[i]<ave)

count++;

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

aver=ave;

returncount;

)

main()

(

floatS[30],aver;

intm,i;

clrscr();

printf("\nPleaseenterm:");

scanf("%d",&m);

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

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

scanf("%f",s+i);

printf("\nThenumberofstudents:%d\n",

fun(S,m,&aver));

print/'AVb=%f\n”,aver);

)

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

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

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

80.5607290.59851.58864

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

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

#defineN20

intfun(float*s,ihtn,float*aver)

{floatave,t=0.0;

intcount=0,k,i;

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

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

t=s[k];

ave=t/n;

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

if(s[i]<ave)count++;

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

*aver=&ave;

returncount;

)

main()

{floats[30],aver;

intm,i;

clrscr();

printf("\nPleaseenterm:");scanf

("%d",&m);

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

for(i=0;iprintf("\nThenumberofstudents:

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

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

)

38.給定程序中函數(shù)fun的功能是:將一個(gè)由八進(jìn)制數(shù)字字符組成的字

符串轉(zhuǎn)換為與其值相等的十進(jìn)制整數(shù)。規(guī)定輸入的字符串最多只能包含

5位八進(jìn)制數(shù)字字符。

例如,若輸入:77777,則輸出將是:32767。

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

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

[試題源程序]

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

intfun(char*p)

intn;

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

n=*p」o';

P++;

while(*p!=0){

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

n=n*8+*p-'o';

p++;

)

returnn;

)

main()

chars[6];inti;intn;

printf("Enterastring(Ocataldigits):");

gets(s);

if(strlen(s)>5)

printf("Error:Stringtoolonger!\n\n");

exit(O);

)

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

if(s[i]<'O'||s[i]>'7')

{

printf("Error:%cnotisocataldigits!\n\n",s[i]);

exit(O);

)

printf("Theoriginalstring:");

puts(s);

n=fun(s);

printf("\n%siSconveredtointegernumber:%d\n\n",s,n);

39.給定程序M0D11.C中函數(shù)fun的功能是:判斷一個(gè)整數(shù)是否是素

數(shù),若是返回1,否則返回0。

在mai()函數(shù)中,若fun返回1輸出YES,若fun返回。輸出NO!。

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

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

1*include<stdio.h>

2intfun(intm)

3{intk-2;

4while(k<?m&&(m%k))

5/…………"und…………/

6

7/…………found

8if(m-k)

9return1;

10elsereturn0;

11}

12main()

13{intn;

14printf(w\nPleaseentern:"

ww

scanf(%dr&n);

15if(fun(n))printf(MYES\nw);

16elseprintf(nNO!\nR);

17

40.給定程序MODU.C中函數(shù)fun的功能是:計(jì)算小于形參k的最大

的10個(gè)能被13或17整除的自然數(shù)之和。k的值由主函數(shù)傳入,若k的

值為500,則函數(shù)值為4622°

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

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

1tinclude<stdio.h>

2intfun(intk)

3{intm-Ormc-0;

4while((k>-2)&&(me<10))

6/…?一??…?found

7if((k%13-0)||(k%17-0))

8{m■k;mc+>;>

9k一;

10>

11returnm;

12/…………found…………/

13

14main()

15(

16printf("%d\nw,fun(500));

17

五、程序改錯(cuò)題(2題)

41.下列給定程序中,函數(shù)ptoc的功能是:利用插入排序法對字符串

中的字符按從小到大的順序進(jìn)行排序。插入法的基本方法是:先對字

符串中的頭兩個(gè)元素進(jìn)行排序,然后把第3個(gè)字符插入前兩個(gè)字符

中,插入后前3個(gè)字符依然有序;再把第4個(gè)字符插入前三個(gè)字符

中,待排序的字符串已

在主函數(shù)中賦予。

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

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

構(gòu)。

試題程序:

#include<strin9.h>

#include<stdiO.h>

#defineM80

voidproc(char*arr)

{inti,j,n;charch;

n=strlen(arr):

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

〃****^Qurid****

{c=arr[i];

j=i-l;

while((j〉=o)&&(ch<arr[jl))

(

arr[j+l]=arr[j];

j-;

)

arr[j+l]=ch;

)

)

voidmain

(

chara[M]="QWERTYUIOPASDFGHJKLMNBVCXZ";

printf("Theoriginalstring:%s\n",a);

proc(a);

printf("Thestringaftersortin9:

%s\n\n",a);

42.下列給定程序中,函數(shù)proc()的功能是:將m(lgmWlO)個(gè)字符串反

著連接起來,組成一個(gè)新串,放入pt所指字符串中,例如,把“ab、

cd、ef?"3個(gè)字符串反著串連起來,結(jié)果是efgcdab。

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

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

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

試題程序:

=induceVcondh>

9include<?tnnc

SificiudeVnfdto.h>

votdproc<charMr{tn?clwir?pii

ini

//????IOUMI????

lorC■皿->

q=strlesCstifk])i

j+-q5

,OT<l=0.yQii一?)

frt+—qi

pt[O]*O|

//????fcnand????

void>

mtm?bi

charNr[lO)[1Oj.pl120]i

)i

*\nHe*K<tiicrma")<

9canl(*K<t*

plinth*\nPle*jbcenterSdMnnc(\t>s?m)i

1or(h-0Blt<inab++)

cets<?lt{bj)i

proc<Mr?tn?p)i

ew

pirintfC\nThrremitu2%?\B.p)s

六、操作題(2題)

43.若有以下程序:

main()

{int,p,a=5;

if(P=a!=0)

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

else

printf("%d\n",p+2);

)

執(zhí)行后輸出結(jié)果是【】。

44.有以下程序:

intfa(intx){returnx*x;}

intfb(intx){returnx*x*x;}

intf(int(*fl)(),int(*f2)(),(intx)

{returnf2(x)-fl(x);}

main()

{inti;i=f(fa,fb,2);printf("%d\n",i);}

程序運(yùn)行后,輸出結(jié)果是【】。

參考答案

1.求出數(shù)組元素平均值求出數(shù)組元素平均值解析:函數(shù)有一個(gè)數(shù)組形參

a和一個(gè)整型形參n。函數(shù)首先用循環(huán)求數(shù)組a的前n個(gè)元素和,然后

將和除以n°即求數(shù)組元素的平均值。

2.3

3

本試題中,先判斷表達(dá)式p/3>0,該值為真,所以此表達(dá)式等于p/

10的值3,故最后輸出的值為3。

3.動態(tài)多變量動態(tài)多變量

4.a=lb=2c=3a=l,b=2,c=3解析:此題考查了scanf函數(shù)的輸入格式。

scanf函數(shù)的輸入格式規(guī)定如果兩個(gè)格式說明項(xiàng)間有一個(gè)或多個(gè)普通字

符,那么在輸入數(shù)據(jù)時(shí),在兩個(gè)數(shù)據(jù)之間也必須以這一個(gè)或多個(gè)字符作

為分隔符。

5.強(qiáng)制類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換

6.隊(duì)尾隊(duì)尾解析:在隊(duì)列中,允許插入的一端叫做“隊(duì)尾”,允許刪除的

一端叫做“隊(duì)頭”。

7.xx*x+l或l+x*xx\r\nx*x+l或l+x*x解析:題目中要求從x=0開始

將f(x)的值累加起來,直到x=10。在SunFun()函數(shù)中用了一個(gè)for循環(huán),

每循環(huán)一次將f(x)累加到s中,所以在本題的第一個(gè)空格處我們應(yīng)該填

X,然后x+1,共循環(huán)10次。F()函數(shù)的功能應(yīng)該是求數(shù)學(xué)表達(dá)式f(x)的

值,所以其返回值應(yīng)該為x*x+l。

8.變換型典型的數(shù)據(jù)流類型有兩種:變換型和事務(wù)型。變換型是指信息

沿輸入通路進(jìn)入系統(tǒng),同時(shí)由外部形式變換成內(nèi)部形式,進(jìn)入系統(tǒng)的信

息通過變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開軟

件系統(tǒng);在很多軟件應(yīng)用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一個(gè)或

多個(gè)處理,這些處理能夠完成該作業(yè)要求的功能,這種數(shù)據(jù)流就叫做事

務(wù)。

9.3535解析:函數(shù)swap(int*a,int*b)的功能是實(shí)現(xiàn)*a和*b中兩個(gè)數(shù)據(jù)

的交換,在主函數(shù)中調(diào)用swap(p,q)后,形參指針變量a和b分別指向i和

j,在swap(int*a,int*b)執(zhí)行完后,指針變量a和b分別指向j和i,而指針變

量P,q所指向變量的值沒有發(fā)生變化,所以輸出結(jié)果為35o

10."bi.dat"fp

H.D循環(huán)隊(duì)列的隊(duì)頭指針與隊(duì)尾指針都不是固定的,隨著入隊(duì)與出隊(duì)操

作要進(jìn)行變化。因?yàn)槭茄h(huán)利用的隊(duì)列結(jié)構(gòu),所以隊(duì)頭指針有時(shí)可能大

于隊(duì)尾指針,有時(shí)也可能小于隊(duì)尾指針。

12.C

C)【解析】白盒測試方法也稱為結(jié)構(gòu)測試或邏輯測試,主要方法有邏

輯覆蓋測試、基本路徑測試等。

13.D媒體分為感覺媒體、表示媒體、存儲媒體、傳輸媒體和表現(xiàn)媒體五

種,“多媒體技術(shù)”中的媒體強(qiáng)調(diào)的是感覺媒體。

14.D本題考查數(shù)組元素的地址的引用。A中,p+5引用的是a⑶的地址,

而數(shù)組a只有5個(gè)元素,即a[0]、a[l]xa[2]、a[3]、a[4],所以引用錯(cuò)

誤C主:數(shù)組元素下標(biāo)從0開始);B中,*a+l指的是將數(shù)組a的第一個(gè)

元素加1;選項(xiàng)C中,不存在這種引用方式;D中,&a[0]引用的是數(shù)

組的首地址。

15.D

16.B

17.D用C語言編寫的程序可以放置于多個(gè)程序文件中,所以A選項(xiàng)錯(cuò)

誤。C語言程序中的一行可以有多條語句,所以B選項(xiàng)錯(cuò)誤。C語言

中的注釋語句可以與原語句放在一行,也可以不放在一行,所以C選

項(xiàng)錯(cuò)誤。故本題答案為D選項(xiàng)。

18.DC語言中,實(shí)型常量有兩種表示形式:小數(shù)形式和指數(shù)形式。其

中指數(shù)形式的一般形式為:尾數(shù)E(或e)整型指數(shù)。C語言規(guī)定,字

母E或e之前必須要有數(shù)字,且E或e后面的指數(shù)必須是整數(shù),所以

選項(xiàng)A、B、C錯(cuò)誤,選項(xiàng)D正確。故本題答案為D選項(xiàng)。

19.D解析:C語言的宏定義包括不帶參數(shù)的宏定義與帶參數(shù)的宏定

義。本題為帶參數(shù)的宏定義,其形式為:

#define宏名(形參表)字符串

本題的M(a+b,b+c,c+a)被字符串a(chǎn)+b*b+c+c+a代替。

20.B

在本題中,首先定義了兩個(gè)宏N和M,大小都為10,然后定義了一個(gè)

返回指針的函數(shù)find,該函數(shù)帶有兩個(gè)形參,第一個(gè)為字符型的指針

數(shù)組,第二個(gè)為整型變量,在函數(shù)體中,首先定義了一個(gè)指針變量q,

并將形參中指針數(shù)組的第一個(gè)元素賦值給q,然后執(zhí)行for循環(huán),在循

環(huán)體中,首先執(zhí)行條件判斷語句,其條件為strcmp(a[i],q)<0

(strcmp函數(shù)的作用是比較兩字符串的大小,如果相等,則返回0

值,如果參數(shù)中的第一個(gè)字符串大,則返回正值,否則返回負(fù)值),

如果結(jié)果為真,說明指針數(shù)組當(dāng)前元素所指向的字符串比q所指向的

字符串小,此時(shí),程序執(zhí)行將當(dāng)前指針數(shù)組元素賦值給p,最后返回

P,通過上面的分析我們可以看出,find函數(shù)的作用是找出指針數(shù)組中

各元素所指向字符串的最小字符串。

在主函數(shù)中,定義了一個(gè)二維數(shù)組s,并賦了初值,然后定義一個(gè)指針

變量P,用來存放函數(shù)find的返回值。調(diào)用函數(shù)find的參數(shù)分別為s

和5,結(jié)合形參看find函數(shù),不難知道調(diào)用find函數(shù)就是找出二維數(shù)

組s中各字符串中最小的字符串,那么應(yīng)該為and。此時(shí),指針變量p

指向字符串“and”的首地址,然后執(zhí)行puts(p),完成該字符串的輸出。

因此,本題正確的答案是B。

21.1intfun(intscore[],intm,intbe-low[])

2{

3inti,j=O;

4floatav=0.0;

5for(i=0;i

<m;i++)

6av=av+score[i]/m;/*求平均值*/</m;i++)

<m;i++)

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

gif(score[i]</m;i++)

</m;i++)

<m;i++)

<m;i++)

<av)p*如果分?jǐn)?shù)<〉8低于平均分,則將此分?jǐn)?shù)放入below數(shù)::組中

*/</av)p*如果分?jǐn)?shù)<〉</m;i++)

</m;i++)

<m;i++)

<m;i++)

<av)p*如果分?jǐn)?shù)<〉9below[j++]=score[i];</av)p*如果分?jǐn)?shù)<〉</m;i++)

</m;i++)

<m;i++)

<m;i++)

<av)p*如果分?jǐn)?shù)<〉10returnj;/*</av)p*如果分?jǐn)?shù)<〉</m;i++)

</m;i++)

<m;i++)

<m;i++)

<av)p*如果分?jǐn)?shù)<>返回低于平均分的人數(shù)*/U}要計(jì)算低于平均分的人

數(shù),首先應(yīng)該求出數(shù)組score中各元素的平均值。然后通過for循環(huán)語

句和if條件語句找出低于平均值的分?jǐn)?shù)。該題第1個(gè)循環(huán)的作用是求

出平均值av,第2個(gè)循環(huán)的作用是找出數(shù)組score中低于平均值的成

績記錄并存入below數(shù)組中。</av)p*如果分?jǐn)?shù)<></m;i++)

</m;i++)

22.

【考點(diǎn)分析】

本題考查:求數(shù)組的最大值,需要運(yùn)用循環(huán)語句,因?yàn)閿?shù)組是二維數(shù)

組,所以應(yīng)使用二層for循環(huán)嵌套。使用for循環(huán)語句時(shí)需要注意循環(huán)

變量的取值范圍。

【解題思路】

此類求最大值或最小值的問題,我們可以采用逐個(gè)比較的方式,要求

對數(shù)組中所有元素遍歷一遍,并且從中找出數(shù)組最大值或最小值。首

先定義變量max存放數(shù)組中的第一個(gè)元素的值,然后利用for循環(huán)逐

個(gè)找出數(shù)組中的元素,并與max比較,如果元素值大于max,則將該

值賦予max,循環(huán)結(jié)束后max的值即為數(shù)組最大值,最后將該值返

回。

【解題寶典】

該類題目考查較多,要掌握逐行比較的方法。對于m*n二維數(shù)組,如

采用逐行查找方法,代碼實(shí)現(xiàn)為:

23.

【解析】本題考查的是結(jié)構(gòu)體類型、指針型變量、鏈表和if語句等知識

點(diǎn)。需要用for循環(huán)遍歷鏈表中的每一個(gè)結(jié)點(diǎn),用判斷語句比較結(jié)點(diǎn)數(shù)

據(jù)域的大小??梢酝ㄟ^while循環(huán)實(shí)現(xiàn)對最大成績的查找,具體步驟為

遍歷鏈表遇到比max大的值(max<h-對則賦值給max,max=h->so需要

注意的是,h是指向結(jié)構(gòu)體類型的指針變量,引用它指向的結(jié)構(gòu)體的成

員時(shí),要用指向運(yùn)算符“一

24.

【解析】由題目中所給公式,首先求出整數(shù)m的階乘,然后求出m的

溫馨提示

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

評論

0/150

提交評論