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

下載本文檔

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

文檔簡(jiǎn)介

2022年甘肅省酒泉市全國(guó)計(jì)算機(jī)等級(jí)考試

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

學(xué)校:班級(jí):姓名:考號(hào):

一、2.填空題(10題)

1.下面程序的運(yùn)行結(jié)果是()。#defineP(A)printf("%d",A)main(){intj,

a[]={l,2,3,4,5,6,7),i=5;for(j=3;j>1;j--){switch(j){case1:

case2:P(a[i++]);break;case3:P(a[—i]);}}}

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

#include<string.h>

voidfun(char*s,intp,intk)

{inti;

for(i=p;i<k-l;i++)s[i]=s[i+2];

)

main()

{chars[]="abcdefg";

fun(s,3,strlen(s));puts(s);

)

3.寫(xiě)出下列程序的輸出結(jié)果o

main()

{intn=0;

while(n++<=1);

printf("%d,",n);

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

4.若有以下程序:

main()

{int,p,a=5;

if(P=a!=O)

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

else

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

)

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

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

允許刪除的一端稱(chēng)作()。

6.下程序的輸出結(jié)果是【

#include<stdio.h>

#defineMAX_C0UNT4

voidfun()

main()

{intcount;

for(count=1;count<=MAX_COUNT;coun++)fun();

}

voidfun()

{staicinti;

i+=2;

printf("%d,i);

)

7.若變量a,b已定義為int類(lèi)型并賦值21和55,要求用printf函數(shù)以

a=21,b=55的形式輸出,請(qǐng)寫(xiě)出完整的的輸出語(yǔ)句()。

8.當(dāng)循環(huán)隊(duì)列非空且隊(duì)尾指針等于隊(duì)頭指針時(shí),說(shuō)明循環(huán)隊(duì)列已滿,不

能進(jìn)行入隊(duì)運(yùn)算。這種情況稱(chēng)為【】。

9.若a=l,b=2,c=3,d=4;則條件表達(dá)式a>b?a:c<d?c:d的結(jié)果為()。

10.實(shí)體一聯(lián)系模型是一種常用的高級(jí)概念數(shù)據(jù)模型,而【】是實(shí)體一

模型中的核心。

二、單選題(10題)

11.程序執(zhí)行后的輸出結(jié)果是()。

而chide<stdio.h>

voidswap(char*x,char*y)

(

chart;

t=*x;*x=*y;*y=t;

)

mainO

(

char?sl=nabcM,?s2=n123n;

SW25>(sl,s2);

printf("%s,%s'nM,si,s2);

}

A.321.cbaB.123.abcC.abc,123D.lbc,a23

12.數(shù)據(jù)結(jié)構(gòu)中,與所使用的計(jì)算機(jī)無(wú)關(guān)的是數(shù)據(jù)的()結(jié)構(gòu)。

A.存儲(chǔ)B.物理C.邏輯D.物理和存儲(chǔ)

13.在嵌套使用if語(yǔ)句時(shí),C語(yǔ)言規(guī)定else總是

A.和之前與其具有相同縮進(jìn)位置的if配對(duì)

B.和之前與其最近的if配對(duì)

C.和之前與其最近的且不帶else的if配對(duì)

D.和之前的第一個(gè)if配對(duì)

14.下面程序運(yùn)行后的輸出結(jié)果是____ostructabc{inta,b,c;}main()

{structabcs[2]={{1,2,3},{4,5,6}};intt=s[O].a+s[l].b;printf("%d\n",t);}

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

15.下列關(guān)于字符串的說(shuō)法中錯(cuò)誤的是

A.在C語(yǔ)言中,字符串是借助于字符型一維數(shù)組來(lái)存放的,并規(guī)定以字

符’8作為字符串結(jié)束標(biāo)志

B「\(y作為標(biāo)志占用存儲(chǔ)空間,計(jì)入串的實(shí)際長(zhǎng)度

C.在表示字符串常量的時(shí)候不需要人為在其末尾加入\0’

D.在C語(yǔ)言中,字符串常量隱含處理成以'\0'結(jié)尾

16.待排序的關(guān)鍵碼序列為(33,18,9,25,67,82,53,95,12,70),

要按關(guān)鍵碼值遞增的順序排序,采取以第一個(gè)關(guān)鍵碼為基準(zhǔn)元素的快速

排序法,第一趟排序后關(guān)鍵碼33被放到第()個(gè)位置。

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

17.軟件調(diào)試的目的是____°

A.發(fā)現(xiàn)錯(cuò)誤B.改正錯(cuò)誤C.改善軟件的性能D.挖掘軟件的潛能

18.下列有關(guān)圖的遍歷說(shuō)法中,不正確的是()

A.圖的遍歷必須用遞歸實(shí)現(xiàn)

B.基本遍歷算法兩種:深度遍歷和廣度遍歷

C.有向圖和無(wú)向圖都可以進(jìn)行遍歷操作

D.圖的遍歷算法可以執(zhí)行在有回路的圖上

19.按照標(biāo)識(shí)符的要求,()符號(hào)不能組成標(biāo)識(shí)符。

A.連接符B.下劃線C.大小寫(xiě)字母D.數(shù)字字符

20.設(shè)有如下定義:int(*ptr);則以下敘述中正確的是()。

A.ptr是指向一維組數(shù)的指針變量

B.ptr是指向int型數(shù)據(jù)的指針變量

C.ptr是指向函數(shù)的指針,該函數(shù)返回一個(gè)int型數(shù)據(jù)

D.ptr是一個(gè)函數(shù)名,該函數(shù)的返回值是指int型數(shù)據(jù)的指針

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

21.規(guī)定輸入的字符串中只包含字母和+號(hào)。編寫(xiě)函數(shù)fun,其功能是:除了字符串前導(dǎo)和

尾部的母號(hào)外,將其他的*號(hào)全部刪除。形參h己指向字符串中第一個(gè)字母,形參P指向字

符串中最后一個(gè)字母。在編寫(xiě)函數(shù)時(shí),不得使用c語(yǔ)言提供的字符串函數(shù)。

例如,若字符串中的內(nèi)容為“""?A"BC?DEF*G"""L,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是

“…,ABCDEFG…?…。

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

請(qǐng)勿改動(dòng)主函皴main和其他的數(shù)中的任何內(nèi)容,僅在函數(shù)firn的花括號(hào)中埴入你編寫(xiě)的若干語(yǔ)句。

試痍程序:

#inrlude<&tdio.h>

voidfun(char*&char*h.char*p)

main。

Ichar481

printfC*EnleraMringrVi'T:

的㈣s);

t=fr;

while(*t)

t++:

I

while(『e,

while(*t=='4)

l-;

whi陽(yáng)*―:1*')

f++;fun(sX0i

prjntf('*Thestringafterdeleted?");

puts(*

22.假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫(xiě)函數(shù)proc,它的功

能是:將字符串中的前導(dǎo)*號(hào)全部刪除,中間和后面的*號(hào)不刪除。

例如,若字符串中的內(nèi)容為****a*bc*def*g****,刪除后,字符串

中的內(nèi)容則應(yīng)當(dāng)是a*bc*def*g****。

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

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

括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。

試題程序:

#include<stdio.h=:{>

#include<conio.h>

woidproc(char*str)

(

)

voidmain

charstr[81];

printf("Enterastring:\n");

gets(str);

proc(str):

printf("Thestringafterdeleted:\n");

puts(str);}

23.

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

刪除字符串中所有的*號(hào)。編寫(xiě)函數(shù)時(shí),不得使用C語(yǔ)言提供的字符串

函數(shù)。例如,字符串中的內(nèi)容為“****A*BC*DEF*G****“,刪除后,字

符串中的內(nèi)容應(yīng)當(dāng)是“ABCDEFG”。注意:部分源程序給出如下。請(qǐng)

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

括號(hào)中填入編寫(xiě)的若干語(yǔ)句。試題程序:

=includeVcomo.hc>

includeVaddh>

voidfun<char?a>

n>?dmam<)

charJi

pnnlk*Enterastnnti\?*)I

printf<*Thcntnngihetdrlrirdt\B*)?

put-<?)|

24.從鍵盤(pán)上輸出10個(gè)整數(shù)存入一維數(shù)組中,按由大到小的順序輸出。

25.請(qǐng)編寫(xiě)函數(shù)proc(),函數(shù)的功能是求出二維數(shù)組周邊元素之和,作

為函數(shù)值返回。二維數(shù)組中的值在主函數(shù)中賦予。

同■.篇:中的■為,

01234

59745

4383e

3S1■7

則函數(shù)值為59。

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

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

號(hào)中填入所編寫(xiě)的若干語(yǔ)句。

試題程序:

?tiviudwV

?inciu4v〈omioi

SimriudsV?uho.b>

9<k(i*rM4

?drfmrNS

tn<pfoc<mia[M,、:,

midHMMAC>

?fttaa(MJ[X]?*(i0.1J.3?4)?{S?f?T?4?5>J

euj*,i

pninl(*Th?rmg—I4ata>>?

ior<i*0iYI4“*?>

(lor(?)

prmi?eN<4

pnatl(*\a>>e

,,pr3C(M><

pruufi*\IITWMBHMA*

pnad<*\?*>i

26.使用VC++2010打開(kāi)考生文件夾下progl中的解決方案。此解決方案

的項(xiàng)目中包含一個(gè)源程序文件progl.c。在此程序中,編寫(xiě)函數(shù)fun(),

其功能是根據(jù)以下公式計(jì)算S,并將計(jì)算結(jié)果作為函數(shù)值返回,通過(guò)形

參傳入。

5=1+—^―+--!+…+------1______

1+21+2+31+2+3+…+n

例如,若n的值為11時(shí),函數(shù)的值為1.833333。

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

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

括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。

試題程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#include<string.h>

floatfun(intn)

(

)

voidmain()

(

intn;

floats;

system("CLS”);

printf("\nPleaseenterN:?,);

scanf("%d”,&n);

s=fun(n);

printff'Theresultis:%f\n”,s);

)

27.請(qǐng)編寫(xiě)一個(gè)函數(shù)proc(),它的功能是:將str所指字符串中所有下標(biāo)

為奇數(shù)位置的字母轉(zhuǎn)換為大寫(xiě)(若該位置上不是字母,則不轉(zhuǎn)換)。例

如,若輸入abcdel23,則應(yīng)輸出aBcDel23。注意:部分源程序給出如

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

()的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:

■mclwi9

?mrludrVCOIMX

■mcludtVMAokk>

?inclu4v<MriRg.Ii>

*OM1|wor<char?M9>

rm4m<>

HMM

*CLS>>?

pneth*\nPV?——anMmgvitlwi

90rlumKicT*A*a)i

grtMtOi

priMi<*\n\iiAft?rciumgNB(.thestr?g

\aK**?n>?

pnaciitli

prmif<*\nbEOOK>\?X?\?*?n)a

28.

請(qǐng)編寫(xiě)一個(gè)函數(shù)intproc(int*s,intt,int*k),用來(lái)求出數(shù)組的最小元素

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

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

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

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

Umdvdr<.sidlib.

includeVCORMKh2>

9includr<Mdto.h>

pr(x<int?w.iniuint?k)

VDMImam()

inian{l0]?<273.934U53?624?N?342.111

M.827?24?Ji

"CLS*)i

proc?E?10*&-k)t

pnn(?**id<"?k?afT(k]>i

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

案的項(xiàng)目中包含一個(gè)源程序文件progl.c。在此程序中,函數(shù)fmi()的功

能是將a、b中的兩個(gè)正整數(shù)合并成一個(gè)新的整數(shù)存放在c中。合并的

方式是將a中的十位和個(gè)位數(shù)依次放在變量c的十位和千位上,b中的

十位和個(gè)位數(shù)依次放在變量c的個(gè)位和百位上。例如,a=45,b=12,

調(diào)用該函數(shù)后,c=5241。

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

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

試題程序:

1#include<stdio.h>

2voidfun(inta,intb,long*c)

■{

4

5}

6main()

7{inta,b;longc;voidNONO();

|8printf(nInputa,b:M);

MM

9scanf(%d%dr&a,&b);

)0fun(a,b,&c);

H

11printf(°Theresultis:%ld\n/c);

12NONOO;

13)

14voidNONO()

15{/*本函數(shù)用于打開(kāi)文件、輸入數(shù)據(jù)、調(diào)

3用函數(shù)、輸出數(shù)據(jù)及關(guān)閉文件。*/

16FILE?rf,?wf;

17inti,a,b;longc;

18rf=fopen(Hin.datw,Mrn);

19wf=fopen(Mout.datM,Wwn);

爨for(i=0;i<10;i*?-+){

wM

21fscanf(rfr%df%dr&b);

22fun(a,b,&c);

M

23fprintf(wfza?=%d/b=%d,c=%ld

\n",a,b,c);

K}

25fclose(rf);

26fclose(wf);

犒}

30.

請(qǐng)編寫(xiě)一個(gè)函數(shù)voidproc(intm,intk,intxx口),該函數(shù)的功能是將大

于整數(shù)m且緊靠m的k個(gè)非素?cái)?shù)存入所指的數(shù)組中。例如,若輸入:

105(即M=10,k=5),則應(yīng)輸出:1214151618o注意:部分源程序

給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函

數(shù)proc()的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。試題程序:

Uindudc<stdlib.h>

Cincludr<coc?ah>

■include<atd?o.h>

vodprocimtm.mth?int

voednuitH)

mi

?ywiem(*CLS*)?

prmtR*\nPle?Menicttwomietrr??*)i

*cm""%d%<T?&m?&n〉?

proc<m?n?ti)i

pnntf(*Kd

pnntfC*\n*)t

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

31.給定程序MOD11.C中函數(shù)fun的功能是:計(jì)算n!。

例如,給n輸入5,則輸出120.000000o

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

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

1*include<stdio.h>

2doublefun(intn)

3{doubleresult-1.0;

4/found*…

5ifn-?0

6return1.0;

7while(n>1n<170)

8/???foundf**********/

9result*■n--

10returnresult;

11)

12main()

13{intn;

14printf(HInputN:w);

15scanf(w%dw,&n);

ww

16printf(\n\n%d!-%lf\n\nrn,fun(n));

17

32.下列給定程序中,函數(shù)fun。的功能是求出數(shù)組中最小數(shù)和次最小數(shù),

并把最小數(shù)和a[0]中的數(shù)對(duì)調(diào),次最小數(shù)和a[l]中的數(shù)對(duì)調(diào)。

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

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

[試題源程序]

#include<stdio.h>

#include<conio.h>

#defineN20

voidfun(int*a,intn)

(

inti,m,t,k;

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

m=i;

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

if(a[k]<a[m])

k=m;

t=a[i];

a[i]=a[m];

a[m]=t;

33.下列給定程序中,fun()函數(shù)的功能是:根據(jù)形參m,計(jì)算下列公式

的值。

t=l-l/2+l/3-l/4+...+(-l)(m+l)/m

例如,若輸入5,則應(yīng)輸出0.783333。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

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

intfun(intm)

(

doublet=1.0,j=1.0;

inti;

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

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

{j=-l*j;t+=j/i;}

returnt;

)

main()

intm;

clrscr();

printf("\nPleaseenter1integernumber:");

scanf("%d",&m);

printf("/nTheresultis%If\n",fun(m));

34.給定程序中函數(shù)fun的功能是:根據(jù)整型形參m,計(jì)算如下公式的

值。

例如,若m中的值為的則應(yīng)輸出:1.463611。

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

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

[試題源程序]

#include<stdiO.h>

doublefun(intm)

doubley=1.0;

inti;

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

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

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

y+=l/(i*i);

return(y);

main()

intn=5;

printf("\nTheresultis%1An”,fun(n));

35.給定程序M0D11.C中函數(shù)fun的功能是:比較兩個(gè)字符串,將長(zhǎng)

的那個(gè)字符串的首地址作為函數(shù)值返回。

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

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

?include<stdio.h>

2/***???****found**********/

3charfun(charchar*t)

4{intsl?0rtl?0;char*ssr*tt;

5ss?s;tt?t;

6while(*ss)

7{sl++;

8/**??*?*?*?found***????*??/

9(*ss)

10}

11while(*tt)

12(tl++;

13/??******-foundf????*?/

14

15)

16ifreturnt;

17elsereturns;

18

19main()

20{chara[80]fb[80);

21printf(R\nEnterastring:H);

gets(a);

22printf(R\nEnterastringagain:

”);gets(b);

23printf(w\nThelongeris:\n\n\

fun(a,b));

24

36.下列給定程序中,函數(shù)fun()的功能是:根據(jù)輸入的3個(gè)邊長(zhǎng)(整型

值),判斷能否構(gòu)成三角形:若能構(gòu)成等邊三角形,則返回3,若是等腰

三角形,則返回2,若能構(gòu)成三角形則返回1,若不能,則返回0。

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

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

試題程序:

#include<math,h>

intfun(inta,intb,intc)

{if(a+b>c&&b+c>a&&a+c>b)

{if(a==b&&b==c)

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

return1;

elseif(a==b||b==c||a==c)

return2;

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

elsereturn3;

)

elsereturn0;

}

main()

{inta,b,c,shape;

printf("\nlnputa,b,c:");

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

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

shape=fun(a,b,c);

printf("\n\nTheshape:%d\n",shape);

)

37.下列給定的程序中,函數(shù)fun()的功能是:計(jì)算并輸出k以內(nèi)最大的

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

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

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

intfun(intk)

{intm=0,mc=0,j;

while((k>=2)&&(mc<10))

{

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

if((k%l3=0)||(k%17=0))

{m=m+k;mc++;}

k--;

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

returnm;

}

main()

{clrscr();

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

)

38.給定程序M0D11.C中函數(shù)fun的功能是:統(tǒng)計(jì)字符串中各元音字

母(即:A、E、I、0、U)的個(gè)數(shù)。注意:字母不分大、小寫(xiě)。

例如:若輸入:THIsisaboot,則輸出應(yīng)該是:1、0、2、2、0o

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

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

*include<stdio.h>

2voidfun(charintnum(5])

3(intk,i-5;

4for(k-0;k<i;k++)

5/…?……found………?/

6num(i)?0;

7for(;*s;s++)

8{i?-1;

9/?*??*?*?**found**??****?*/

10switch(s)

11(case?a*:casefA*s{i?0;break;)

12case,e1:case?£?:(i-l;break;}

13case:case?I?:(i-2;break;}

14case'o':case,01:{i-3;break;}

15casefu1:case,U1:(i?4;break;}

16)

17if(i>-0)

18

19

20}

21main()

22(charsi(81];intnuml[5]ri;

23printf(w\nPleaseenterastring:

w);gets(si);

24fun(si,numl);

25for(i-0;i<5;i++)printf(w%d

numl(i]);printf(R\nw);

26

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

對(duì)應(yīng)小寫(xiě)字母;若小寫(xiě)字母為a~u,則將其轉(zhuǎn)換為其后的第5個(gè)字母;

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

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

為小寫(xiě)字母b。

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

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

*include<stdio.h>

2tinclude<ctype.h>

3charfun(charc)

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

5/?…………found……?……/

6JC+32;

7if(O-^,&&c<w,uf)

8/?★????????★??found*******★**★★*/

9c-c-5;

10elseif(0>-'v*&&€<??z?)

11c?c-21;

12returnc;

13}

14main()

15{charclrc2;

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

);cl-getchar();

17if(isupper(cl))

18(c2-fun(cl);

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

changeto\'*c\'\n",cl,c2);

20

21elseprintf(w\nEnter(A-Z)!\nw);

22

40.下列給定程序中,函數(shù)fun()的功能是根據(jù)整型形參m,計(jì)算如下公

式的值。

y=1-l/(2x2)+1/(3x3)-l/(4x4)+...+(-l)(m+l)/(mxm)

例如:m中的值為5,則應(yīng)輸出0.83861lo

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

doublefun(intm)

{doubley=1.0;

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

intj=l;

血i;

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

(

j=-l*j;

/****************fkz)und*******+******/

y+=l/(i*i);

)

return(y);

)

main()

(

intn=5;

clrscr();

printf("\nTheresultisfun(n));

)

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

41.

已知一個(gè)數(shù)列從。項(xiàng)開(kāi)始的前3項(xiàng)為0,0,1,以后的各項(xiàng)都是其相鄰

的前3項(xiàng)之和。下列給定的程序中,函數(shù)proc()的功能是:計(jì)算并輸

出該數(shù)列前n項(xiàng)的和sum。n的值通過(guò)形參傳人。例如,當(dāng)n-20時(shí),程

序的輸出結(jié)果應(yīng)為42762.000000。請(qǐng)修改程序中的錯(cuò)誤,使它能得到

正確結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得

更改程序的結(jié)構(gòu)。試題程序:

8ladudeVtldlrb.K>

#ifirludeVcociio.b>

ItmriudeValdiah>

liouMrprocCintn)

ai?m.<1.?2.,?

mtk;

Mifn-I.01

if(nr<?2>

jkum*O.Oi

?O?*0.Oi

RT.Oi

//????lotlffed????

lor《UhV?Qlt++》

■urn+???

?I?B2,

//????found????

?2*wi

reiuraMimi

votdMM水>

mtna

?y*icfn<"CLS*)t

printfC*b)(>ut、=?九

■%<T?&?>〉;

prmtfC*Mf\n".proc<n>)s

42.下列給定的程序中,函數(shù)proc()的功能是:用選擇法對(duì)數(shù)組中的m

個(gè)元素按從小到大的順序進(jìn)行排序。

例如,排序前的數(shù)據(jù)為:1132-5214

則排序后的數(shù)據(jù)為:-52111432

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

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

構(gòu)。

試題程序:

£drhneM20

EMIproc<IIMa)

ml

/(????found????

for<)"Oij<n1,j++)i

P*j?

(oHj.YII“++)

if(A[i]<?Cp]>

p-k

4?[??CiL

//????found????

voidmatn<)

mt”r(Mj=<11」2?-5.2.141

pninH”存序前的做*J>i

onnt“"弘d".ftrYTil)t

pcintfC*\?*)?

proc(Afr.onh

加1(?/序ft的■+.?八

for(,-OiYiwii+?)

printf<sKd??anGD。

六、操作題(2題)

43.給定程序中,函數(shù)fun的功能是:在形參ss所指字符串?dāng)?shù)組中,查

找含有形參substr所指子串的所有字符串并輸出,若沒(méi)找到則輸出相應(yīng)

信息。SS所指字符串?dāng)?shù)組中共有N個(gè)字符串,且串長(zhǎng)小于M。程序中

庫(kù)函數(shù)strstr(sl,s2)的功能是在si串中查找s2子串,若沒(méi)有,函數(shù)值

為0,若有,為非0。

請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確

的結(jié)果。

注意:源程序存放在考生文件夾下的BLANK1.C中。

不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

finclude<stdio.h>

2finclude<string.h>

3fdefineN5

4fdefineM15

5voidfun(char(*ss)[M],char*substr)

6(intirfind-0;

7/………round………?/

8for(i-0;i<_1_;

9/**********found*******?**/

10if(strstr(ss(i]f_2_)!-NULL)

11{find?l;puts(ss[i]);printf

(R\nw);)

12/?????*****found****?*?*??/

13if(find—_3_)printf(?,XnDon11

found!\nw);

14

main()

RM

16{charx(N)[M]-{"BASIC*rClangwage.

MHwR

JavarQBASICr-Access"str(M];

17inti;

18printf(w\nTheoriginalstring\n\nR);

19for(i-0;i<N;puts(x[i]);

printf(n\nw);

20printf(w\nEnterastringfor

search:w);gets(str);

21fun(x,str);

2211

44.請(qǐng)編寫(xiě)一個(gè)函數(shù)intfun(int*s,intt,int*k),用來(lái)求出數(shù)組的最小

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

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

234345753134436458100321135760

則輸出結(jié)果為6,100o

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

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

號(hào)中填入所編寫(xiě)的若干語(yǔ)句。

試題程序:

#include<conio.h>

#include<stdio.h>

intfun(int*s,intt,int*k)

(

)

main()

{

inta[10]={234,345,753,134,436,458,

100,321,

135,760),k;

clrscr();

fun(a,10,&k);

printf("%dr%d\n",k,afk]);

參考答案

1.5555解析分析程序執(zhí)行過(guò)程,第一次循環(huán)時(shí),j=3,i=5,因?yàn)閟witch。),

所以執(zhí)行case3,調(diào)用P(a[-i])=P(a[4])=P(5),輸出5;第二次循環(huán)時(shí),

j=2,i=4,因?yàn)閟witch(2),所以執(zhí)行case2,調(diào)用P(a[i++])=P(a[4])=P(5),

輸出5,之后i自加1等于5。

2.abcfgabcfg解析:本題考查的是字符數(shù)組用作函數(shù)參數(shù)。C語(yǔ)言中數(shù)

組名可以看作該數(shù)組首地址的常量指針、因此可以直接傳遞給指針類(lèi)型

的參數(shù)。本題的主函數(shù)調(diào)用fun(s,3,strlen(s));后,函數(shù)中for循環(huán)就是

for(i=3;i<strlen(s)-l;i++),即i從3遞增到字符數(shù)組s的長(zhǎng)度-2位置,

循環(huán)中讓s[i]=s[i+2],所以函數(shù)fun()實(shí)現(xiàn)的功能簡(jiǎn)單來(lái)說(shuō)就是將字符串

s下標(biāo)為p+2~k范圍的字符整體復(fù)制到字符串s下標(biāo)為p~k-2的位置

上。在本題中strlen(s)返回s的長(zhǎng)度7,所以復(fù)制的字符為s[5]~s[7],

即f、g,1\\0三個(gè)字符,復(fù)制到s[3]~s[5],故最終輸出的字符串為

abcfg(因?yàn)閟[5]為NO:所以后面的字符不會(huì)輸出)。

3.333,3解析:本題在while(n++<=l)語(yǔ)句后,直接加了分號(hào),說(shuō)明如果

while。的條件為真時(shí),該循環(huán)什么都不做:n++是先取n的當(dāng)前值和1

做比較,然后再將n加1。第一次循環(huán),n=0時(shí),循環(huán)條件n++=<l成

立,執(zhí)行循環(huán),然后得到n=l。第二次循環(huán),n=l時(shí),循環(huán)條件n++=l

<=1成立,執(zhí)行循環(huán),然后得到n=2°第三次循環(huán),n=2時(shí),循環(huán)條件

n++=2<=l不成立,不執(zhí)行循環(huán),但在判斷循環(huán)條件時(shí)仍將n加1,得

到n=3.退出循環(huán)后執(zhí)行printf語(yǔ)句,第二個(gè)printf語(yǔ)句輸出n++,是先

輸出n的當(dāng)前值3,然后再將n加1,即程序結(jié)束后得到n=4,但輸出

的是3O

4.11解析:首先計(jì)算if語(yǔ)句后面的表達(dá)式,根據(jù)運(yùn)算符的優(yōu)先級(jí)可知,

先算“a!=0",該值為1,再把1賦值給p,結(jié)果為1(真),執(zhí)行其后的printf

語(yǔ)句,輸出的值為L(zhǎng)

5.隊(duì)頭隊(duì)頭解析:隊(duì)列是只允許在一端刪除,在另一端插入的順序表,

在隊(duì)列中,允許插入的一端叫做“隊(duì)尾”,允許刪除的一端叫做“隊(duì)頭

6.2468(若字符間有空格扣1分)2468(若字符間有空格扣1分)

7.printf("a=%db=%d”aB);printf("a=%d,b=%d”,a,B);解析:printf函數(shù)的一

般格式為:“printf(格式控制,輸出表列廣。

8.上溢上溢解析:入隊(duì)運(yùn)算是指在循環(huán)隊(duì)列的隊(duì)尾加入一個(gè)新元素。這

個(gè)運(yùn)算有兩個(gè)基本操作:首先將隊(duì)尾指針進(jìn)一(即rear=rear+l),并當(dāng)

rear=m+l時(shí)置rear=1;然后將新元素插入隊(duì)尾指針指向的位置。當(dāng)循環(huán)

隊(duì)列非空(s=l)時(shí)且隊(duì)尾指針等于隊(duì)頭指針時(shí),說(shuō)明循環(huán)隊(duì)列已滿,不能

進(jìn)行入隊(duì)運(yùn)算,這種情況稱(chēng)為“上溢”。

9.3

10.實(shí)體-聯(lián)系圖(E-R圖)實(shí)體-聯(lián)系圖(E-R圖)解析實(shí)體-聯(lián)系圖(E-R圖)

是實(shí)體聯(lián)系模型中的核心。由于E-R圖描述的是數(shù)據(jù)流圖中數(shù)據(jù)存儲(chǔ)及

其之間的關(guān)系,因此它是數(shù)據(jù)庫(kù)概念設(shè)計(jì)的最常用的工具。

11.D

[解析]字符串是一個(gè)特殊的數(shù)組,所以按照數(shù)組的規(guī)則,si應(yīng)該指向

的是數(shù)組的首地址,即"abc的第一個(gè)字符的地址。s2指向的是“123”的

第一個(gè)字符的地址。調(diào)用swap函數(shù)之后交換的是兩個(gè)字符串的第一

個(gè)字符ai和1的內(nèi)容,所以打印輸出為D)。

12.C解析:數(shù)據(jù)結(jié)構(gòu)是指數(shù)據(jù)以及他們之間的相互聯(lián)系。其中數(shù)據(jù)的邏

輯結(jié)構(gòu)是指數(shù)據(jù)元素之間的邏輯關(guān)系,它與所使用的計(jì)算機(jī)無(wú)關(guān):數(shù)據(jù)

的物理結(jié)構(gòu),又稱(chēng)存儲(chǔ)結(jié)構(gòu),是指數(shù)據(jù)結(jié)構(gòu)在計(jì)算機(jī)中的表示,它包括

數(shù)據(jù)元素的表示和元素的表示,其中數(shù)據(jù)元素之間的關(guān)系在計(jì)算機(jī)中有

順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)兩種。因此C是正確答案。

13.C解析:C語(yǔ)言的語(yǔ)法規(guī)定:else子句總是與前面最近的不帶else的

if相結(jié)合,與書(shū)寫(xiě)格式無(wú)關(guān)。所以選項(xiàng)C)為正確答案。

14.B解析:在main函數(shù)中定義了一個(gè)structabc類(lèi)型的數(shù)組,同時(shí)分別

利用{1,2,3}及{4,5,6}對(duì)數(shù)組中兩個(gè)元素進(jìn)行初始化。在該結(jié)構(gòu)體,依次

對(duì)其中的a,b,c三個(gè)變量進(jìn)行初始化。故s[O].a=l,s[l].b=5,所以本題輸

出為6。

15.B解析:NO作為標(biāo)志占用存儲(chǔ)空間,但是不計(jì)入串的實(shí)際長(zhǎng)度。當(dāng)

給一個(gè)字符型指針賦值時(shí),賦給這個(gè)指針的是這個(gè)字符串的地址。

16.BB.【解析】快速排序的基本思想是:從表中選取一個(gè)元素(如本題中

的33),將表中小于此元素的移到前面,大于此元素的移到后面,結(jié)果

把線性表分割成兩部分(兩個(gè)子表),此元素插入到其分界線的位置處。

然后分別對(duì)兩個(gè)子表再次分割……本題中33作為分割的中界線,第一

趟排序后排在比它小的18、9、25、12后面。

17.B解析:在對(duì)程序進(jìn)行測(cè)試時(shí)會(huì)發(fā)現(xiàn)錯(cuò)誤,這就要進(jìn)行程序調(diào)試(排

錯(cuò))。程序調(diào)試活動(dòng)由三部分組成:一是錯(cuò)誤定位,根據(jù)錯(cuò)誤的外部表現(xiàn)

形式,確定程序中出錯(cuò)的位置,找出錯(cuò)誤的內(nèi)在原因;二是對(duì)程序進(jìn)行

修改,排除這個(gè)錯(cuò)誤;三是進(jìn)行回歸測(cè)試,防止引進(jìn)新的錯(cuò)誤。所以程

序調(diào)試的目的就是診斷和改正程序中的錯(cuò)誤。軟件調(diào)試不能改善軟件的

性能,也不能挖掘軟件的潛能。

18.A

19.A

20.C

本題中int(*ptr)的含義是指向函數(shù)的指針變量,其為指向函數(shù)的指針變

量,該函數(shù)返回一個(gè)int型數(shù)據(jù),故選擇C選項(xiàng)。

21.

(答案1

voidfnn((Jiar*a,char*h,char*p)

{mti=0;

char*q=a;

while(q<h)

(

咽=*q;q++;i++;

)

while(q<p)(

if(*q|二,巧

(

加仁*q;i++:

1,

q++;

I

while(*q)

(

a(i土,;》.甲+;

)

a(i]=W;

}

(解析】

h和p分別指向第一個(gè)和最后個(gè)字母,先將前導(dǎo)”號(hào)進(jìn)行保存.再保存中間的非*號(hào)字符,然后保存

尾“號(hào),加上結(jié)束標(biāo)識(shí)符-

22.voidproc(char*str)

{

char*p=str:

while(*p==*)p++;//通過(guò)P的移動(dòng)來(lái)達(dá)

到使P指向第一個(gè)不是*號(hào)的字符

for(;*p!=\0;p++,str++)//把從第一個(gè)

不是*號(hào)的字符放到a中

*str=*P:

*str=\0;//最后用\0作為字符串結(jié)束標(biāo)志

)

【解析】題目中要求將字符串中的前導(dǎo)*號(hào)全部刪除首先將指針p移動(dòng)

到第一個(gè)不是*的字符,將指針P之后的字符放入原來(lái)的字符串中,并

為新的字符串添加結(jié)束符。

23.

【解析】此題是刪除字符串中的星號(hào)。思路是通過(guò)for循環(huán)來(lái)完成對(duì)字

符串的遍歷,通過(guò)if判斷,找到不是“*”的字符,將其賦值到數(shù)組a中

星號(hào)前的位置,“if(a[i]!='*')”“a[j++]=a[i]”,最后返回主函數(shù)將刪除*

后的字符串輸出即可。

24.\n#include'stdio.h'

\nmain

\n{inti,j,a[10];

\nfor(i=l;i<=10;i++)

\nscanf('%d',&a[i]);

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

\nfor(j=9;j>i;j—)

\nif(a[j-l]{t=a[j-l];

\na[j-l]=a[j];

\na[j]=t;}

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

\nprintf('%d',a[i]);

\n}

\n

25.

【解析】要求二維數(shù)組周邊元素之和,首先應(yīng)該判斷數(shù)組中的每一個(gè)

元素是否是周邊元素。找出所有的周邊元素后求和,返回給主函數(shù)。

周邊元素的下標(biāo)特點(diǎn)為行或列的下標(biāo)為。或N—1。根據(jù)此特點(diǎn),找出

所有的周邊元素然后求和。

26.floatfun(intn)

(

inti,sl=O;

floats=0.0;

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

(

sl=sl+i;/*求每一項(xiàng)的分母*/

5=5+1.0大1;/*求多項(xiàng)式的值*/

)

returns;

)

首先需要根據(jù)題意分析表達(dá)式的規(guī)律,得出通項(xiàng),然后再完成程序語(yǔ)句。

本題中公式的規(guī)律類(lèi)似于求l+2+...+n的倒數(shù)之和??梢酝ㄟ^(guò)for循環(huán)

語(yǔ)句來(lái)實(shí)現(xiàn)第1項(xiàng)到第n項(xiàng)的變化。先根據(jù)題目要求定義變量,注意

該變量的數(shù)據(jù)類(lèi)型。然后對(duì)其進(jìn)行初始化操作,因?yàn)樵撟兞肯喈?dāng)于累

加器,所以初值應(yīng)為0(或0.0,根據(jù)變量數(shù)據(jù)類(lèi)型來(lái)確定),再通過(guò)for

循環(huán)語(yǔ)句來(lái)完成累加過(guò)程。

本題中S1用來(lái)表示每一項(xiàng)的分母,每一項(xiàng)的分母都是由前一項(xiàng)分母加

項(xiàng)數(shù)得到的。注意,由于S1定義成一個(gè)整型,因此在s=s+1.0/sl語(yǔ)句

中不能把1.0寫(xiě)成1。

27.

【解析】要將字符串中為奇數(shù)的字母轉(zhuǎn)換為大寫(xiě)。首先應(yīng)該判斷奇數(shù)位

置上的字符是否為小寫(xiě)字母,若是則將其轉(zhuǎn)換為大寫(xiě),若不是則不予處

理。

28.

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

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

29.1voidfun(inta,intb,long*c)

21

3*c=(a%10)*1000+(b%10)*100+(a/10)*10+(b/l0);

4)

本題給出兩個(gè)兩位數(shù)的正整數(shù)。分別取出兩個(gè)數(shù)各位上的數(shù)字,再按

條件組成一個(gè)新數(shù)。取整數(shù)a十位數(shù)的方法為a/10,取整數(shù)a個(gè)位數(shù)

的方法為a%10o同理可取出整數(shù)b的個(gè)位數(shù)和十位數(shù)。

30.

【解析】通過(guò)要求把非素?cái)?shù)的數(shù)放到xx數(shù)組中,檢查大于整數(shù)m的整

數(shù),將不是素?cái)?shù)的整數(shù)放在數(shù)組XX中,直到個(gè)數(shù)大于k個(gè)結(jié)束。

31.(l)if(n==0)(2)result*=n--;(l)if(n==0)(2)result*=n--;解析:本

題中函數(shù)的功能是計(jì)算階乘,其中,階乘的計(jì)算公式分為參數(shù)n是1和

大于1兩種情況,例如,1的階乘1!=1;5的階乘5!=5x4x3x2xlo

32.(1)錯(cuò)誤:for(i=0;i<n;i++)正確:for(i=0;i<2;i++)(2)錯(cuò)誤:k=m;正

確:m=k;

⑴錯(cuò)誤:for(i=0;iVn;i++)\r\n正確:for(i=0;iV2;i++)\r\n⑵錯(cuò)誤:

k=m;\r\n正確:m=k;解析:錯(cuò)誤1:由于題目要求將最小數(shù)和次最小

數(shù)分別與a[0]和a[l]中的數(shù)對(duì)調(diào),因此,這層循環(huán)只需循環(huán)兩次。錯(cuò)誤

2:賦值語(yǔ)句的執(zhí)行方向是從右到左,即把右邊的值賦給左邊的變量。

33.(1)錯(cuò)誤:intfun(intm)正確:doublefun(intm)(2)錯(cuò)誤:for(i=l;i<

m;i++)正確:for(i=2;i<=m;i++(l)錯(cuò)誤:intfun(intm)正確:double

fun(intm)\r\n(2)錯(cuò)誤:for(i=1;i<m;i++)正確:for(i=2;i<=m;i++

解析:錯(cuò)誤1:函數(shù)的返回值為實(shí)型數(shù),所以應(yīng)定義為double類(lèi)型。錯(cuò)

誤2:根據(jù)題目的公式,參加運(yùn)算的數(shù)應(yīng)從2到m,包括mo

34.(1)錯(cuò)誤:for(i=2;i<m;i++)正

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論