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

下載本文檔

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

文檔簡(jiǎn)介

2021年湖南省衡陽(yáng)市全國(guó)計(jì)算機(jī)等級(jí)考試

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

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

一、2.填空題(10題)

1.在最壞情況下,冒泡排序的時(shí)間復(fù)雜度為【】。

2.問(wèn)題處理方案的正確而完整的描述稱(chēng)為o

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

#include<stdio.h>

main()

{intx=10,y=10,i;

for(i=0;x>8;y=++)

printf("%d%d",X-,y);

}

4.數(shù)據(jù)庫(kù)保護(hù)分為:安全性控制并發(fā)性控制和數(shù)據(jù)的恢復(fù)。

5.以下程序運(yùn)行時(shí),若從鍵盤(pán)輸入:102030〈回車(chē)〉,輸出的結(jié)果是

[]o

#include<stdio.h>

main()

{inti=0,j=0,k=0;

scanf("%d%*d%d",&i,&j,&k);

prinff("%d%d%d\n",i,j,k);

6.在一個(gè)容量為25的循環(huán)隊(duì)列中,若頭指針front=16,尾指針rear=9,

則該循環(huán)隊(duì)列中共有【】個(gè)元素。

7.以下程序的輸出結(jié)果是()。#include<stdio.h>voidmain(){intf,

fl,f2,i;fl=0;f2=l;printf("%d%d",fl,f2);for(i=3;i<=5;i++)

{f=-fl+f2,printf("%d",f);f2=fl;fl=f;}printf("\n");}

8.下列程序能將字符串si中的所有與字符串strl相同的子串替換成字

符串sb2,并將替換后的新串存于字符數(shù)組s2中。

#include<stdio.h>

voidreplace(s1,s2,str1,str2)

char*sl,*s2,*strl,*str2;

{char*t0,*tl,*t2,*x,*y;

x=sl;y=s2;

while([])

(

for(tO=sl,tl=strl;((*tl!='\O'&&[];tO++,tl++);

if(*tl!='\O')*s2++=[];

else

{for(tl=str2;*tl!='\0';)*s2++=【];

【】;

*s2='\0';

main()

{staticcharsl[]="abcdefababcdabab.",s2125];

replace(si,s2,"abc","XYZ");

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

}

9.若變量n中的值為24,則prnt函數(shù)共輸出【】行。

voidprnt(intn,intaa[])

{inti;

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

{printf("%6d",aa[i]);

if!(i%5))printf("\n");

)

printf("\n");

}

10.軟件工程研究的內(nèi)容主要包括:【】技術(shù)和軟件工程管理。

二、單選題(10題)

1L在下列排序算法中,在待排序的數(shù)據(jù)表已經(jīng)為有序時(shí),花費(fèi)時(shí)間反而

最多的是0

A.希爾排序B.堆排序C.冒泡排序D.快速排序

12.

(14)若變量已正確定義并賦值,則以下符合C語(yǔ)言語(yǔ)法的表達(dá)式是()。

A)a=a+7;B)a=7+b+c,a++

C)int(12.3%4)D)a=a+7=c+b

13.插入和刪除只能在一端進(jìn)行線(xiàn)性表,稱(chēng)為0。

A.隊(duì)列B.循環(huán)隊(duì)列C.棧D.循環(huán)棧

14.

(33)有以下程序:

#include<stdio.h>

/include"string.h"

voidfun(char*s[],intn)

(

charij;

fbr(i=K);i<n-l;i4-+)

for(j=i+ly<ny-^+)

if(strlen(s[i])>strlen(s[j])){t=s[i];s[i]=s[j];sO]=t;}

main()

char*ss[]={HbccM,Hbbcc1V,xyn,naaaacc,1/,aabccH};

,,M

fun(ss,5);printf(%s,%s\n,ss[0]>ss[4]);

程序的運(yùn)行結(jié)果是()o

A)xy,aaaaccB)aaaacc,xyC)bcc,aabccD)aabcc.bcc

15.設(shè)有定義“struct{charmark[12];intnuml;doublenum2;}tl,t2;”,若

變量均已正確賦初值,則下列語(yǔ)句中錯(cuò)誤的是()。

A.tl=t2;

B.t2.numl=tl.numl;

C.t2.mark=tl.mark;

D.t2.num2=tl.num2;

16.

(12)若有以下定義和語(yǔ)句:

inta=010,b=0x10,c=10;

printR"%d,%d,%d\n",a,b,c);

則輸出結(jié)果是().

A)8,10,10B)10,10,10C)8,8,10D)8,16,10

17.有以下程序

#include<stdio.h>

#include<string.h>

typedefstrllct{charname[9];charsex;floatscore[2];}STU;

STUf(STUa)

{STUb={"Zhao",'m',85.0,90.0);inti;

strcpy(aname,b.name);

sex:b.sex;

for(i=0;i<2;i++)a.score[i]=b.score[i];

returna;

)

main

{STUc="Qian",'f,95.0,92.0},d;

d=f(c).printf("%s,%c,%2.Of,%2.Of",d.Name,d.sex,

d.score[0],d.score[l]);

)

程序的運(yùn)行結(jié)果是()。

A.A.Qian,f,95,92

B.Qian,m,85,90

C.Zhao,m,85,90

D.Zhao,f,95,92

18.下列選項(xiàng)中非法的字符常量是()。

A.'\t'B.'\039'C.','D.'\n'

19.設(shè)x=011050,則x=x&01252的值是()。

A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

20,有以下程序:#include<stdio.h>#include<stdio.h>main(){chare[6];

inti=0;for(;j<6;c[i]=getchar(),i++);for(i=0;i<6;i++)putchar(c[i]);

printf("\n");}如果從鍵盤(pán)上輸入:ab<回車(chē)>c<回車(chē)>def(回車(chē)>則輸

出結(jié)果為O

A.abcdefB.abedC.abcdD.abcdef

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

21.

請(qǐng)編寫(xiě)函數(shù)proc(),該函數(shù)的功能是:將M行N列的二維數(shù)組中的數(shù)

據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個(gè)數(shù)存放在形

參n所指的存儲(chǔ)單元中。例如,若二維數(shù)組中的數(shù)據(jù)為:13233343

1424344415253545則一維數(shù)組中的內(nèi)容應(yīng)該是1323334314243444

15253545o注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和

其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫(xiě)的若

干語(yǔ)句。試題程序:

gincludeVcuHo.b>

roadprar(im(?nn?b?ii>t?n?mtmm-aitrwi

voidtBftint>

iott33.33?a?33)?(,4.44?44.44).

(53.55?55?55?i?i*

mt4100],<0)?n-0?

prtfM(<"ThenuitriM:\na>i

for<imOiiV3ii+?)

forif?,

pni?t((-S3d*??rr{i'?)])!

priRih?

prorqarr???&n?3?4).

pnnth*TheAarray

loc(iMOii^niI*—)

priatf<*%3d.?4[?]

pnntf<*\n\nw>t

22.請(qǐng)編寫(xiě)函數(shù)proc(),該函數(shù)的功能是:計(jì)算n門(mén)課程的平均分,計(jì)

算結(jié)果作為函數(shù)值返回。例如,有6門(mén)課程的成績(jī)是90.5,72,80,

61.5,55,60,則函數(shù)的值為69.83o注意:部分源程序給出如下。

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

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

若includeVMdio.h>

floatproc(float?a?intn)

voidmain()

<

float弄core[30jH<90.5?72.80?61?5.55.6O).

aven

aver=proc(score?6))

printf("XnAveragcscoreis:%5.2f\n".aver)i

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

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

tt指向一個(gè)M行N列的二維數(shù)組,求出二維數(shù)組每列中值最大的元素,

并依次放入PP所指的一維數(shù)組中。二維數(shù)組中的元素已在主函數(shù)中給

出。

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

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

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

試題程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#defineM3

#defineN4

voidfun(inttt[M][N],intpp[N])

(

}

voidmain()

(

intt[M][N]={{68,32,54,12],{14,24,88,58},{42,22,44,56}};

intp[N],i,j,k;

ystem(“CLS”);

printff'Theoriginaldatais:\n");

for(i=0;i<=""p="">

(

for(j=0;j<=""p="">

printf("%6d”,t[i][j]);

printf("\n"n);

fun(t,p);

printf("\nTheresultis:\n^^);

for(k=0;k<n;k++)<p=""x/n;k++)<>

printf("%4d'',p[k]);

printfC^\n^^);

)

24.請(qǐng)編寫(xiě)函數(shù)proc(),其功能是:計(jì)算并輸出下列多項(xiàng)式值。S=(1+1

/2)+(1/3+1/4)+...+(1/(2n-l)+1/2n)例如,若輸入10,

則輸出為S=3.597740。n的值要求大于1但不大于100。注意:部分

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

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

sinciixlcV

doubleproc<mtn)

votd>

iniBI

double

prviuRHi

ucanH,*d*?&■h

*mproc(n)i

pnnifC*\n??Sf\n*?a)?

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

除了字符串前導(dǎo)的。號(hào)之外,將串中其他*號(hào)全部刪除。在編寫(xiě)函數(shù)時(shí)不

得使用C語(yǔ)言提供的字符串函數(shù).

例如.字符串中的內(nèi)容為「???.A.BC.DEF?.............................”.*除后.字符串中的內(nèi)容應(yīng)當(dāng)

是:??*??ABCDEFG”.

注意:部分那程序在文件PR0G1.C中。

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

tindude<stdio.h>

voidfim(chAr?a)

main()

|chvs[81];voidNONO();

pnntf("Enterastring:\n");gete(s);

pnntf("Thestringafterdeleted:\n");puts(s)?

NONOO;

I

voidNONO()

1/?本南數(shù)用于打開(kāi)文件,幅入數(shù)據(jù).利用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。?/

FILE?in.?out;

izrti;chars[81];

in=fopen("in.dat\-r");

outsibpen("out.dat*/w*);

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

I

Hn

bcanf(int%8ts);

^nntf(out,M%a\n",?);

I

fdme(in);

(doaeCaut);

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

案的項(xiàng)目中包含一個(gè)源程序文件progl.c。在此程序中,請(qǐng)編寫(xiě)一個(gè)函

數(shù)fun(),該函數(shù)的功能是將大于整數(shù)m且緊靠m的k個(gè)素?cái)?shù)存入所

指的數(shù)組中。例如,若輸入17、5,則應(yīng)輸出19、23、29、31、37。注

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

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

程序:

1tinclude<conio.h>

2#include<stdio.h>

3linclude<stdlib.h>

4voidfun(intm,intk,intxx[])

5(

6

71

8voidmain()

9(

10FILE?wf;

IIintmrn,zz[1000];

12system(MCLSn);

13printf(M\nPleaseentertwoin-

或tegers:M);

14scanf(w%d%d,\&m,&n);

■Kfun(mrn,zz);

16for(m=0;m<n;m++)

17printf(n%d”,zz[m]);

18printf(w\n");

19//

20wf-fopen("out.dat*\nwM);

21fun(17r5rzz);

22for(m=0;m<5;m++)

H

23fprintf(wfr%d",zz[m]);

flEfclose(wf);

■■//

■}

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

的項(xiàng)目中包含一個(gè)源程序文件progl.c。在此程序中,規(guī)定輸入的字符串

中只包含字母和*號(hào)。請(qǐng)編寫(xiě)函數(shù)其功能是使字符串的前導(dǎo)*號(hào)不得多于

n個(gè),若多于n個(gè),則刪除多余的*號(hào);若少于或等于n個(gè),則不做處

理。字符串中間和尾部的*號(hào)不刪除。

例如,字符串中的內(nèi)容為“*******A*BC*DEF*G****”,若n的值為

4,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是“****A*BC*DEF*G****”;若n

的值為8,則字符串中的內(nèi)容仍為“*******A*BC*DEF*G****”。n的

值在主函數(shù)中輸入。在編寫(xiě)函數(shù)時(shí),不得使用C語(yǔ)言提供的字符串函

數(shù)。

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

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

voidfun(char*a,intn)

(

)

voidmain()

(

chars[81];intn;

printf("Enterastring:\n,5);

gets(s);

printf("Enter

scanf("%d”,&n);

fun(s,n);

printf("Thestringafterdeleted:\n^^);

puts(s);

28.請(qǐng)編寫(xiě)函數(shù)proc(),它的功能是計(jì)算:s=(In(1)4-ln(2)+In(3)

4-...+ln(m))0.5在C語(yǔ)言中可調(diào)用log(n)函數(shù)求In(n)o例如,

若nl的值為30,則proc()函數(shù)值為8.640500o注意:部分源程序

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

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

UincherVttdbk.h>

叁includeVefito.

,includeh>

=includrVaih,h>

doubleprocCmnm)

)

voediiMunl>

prmtf(*Xf\n*?proc(30>>i

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

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

fun(),它的功能是求出能整除x且不是偶數(shù)的整數(shù),并將這些整數(shù)按從

小到大的順序放在PP所指的數(shù)組中,總個(gè)數(shù)通過(guò)形參n返回。如x中

的值為30,則有4個(gè)數(shù)符合要求,它們是1、3、5、15。注意:部分源

程序在文件progl.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)

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

1tinclude<conio.h>

2tinclude<stdio.h>

3finclude<stdlib.h>

4voidfun(intxFintpp[]rint*n)

(

6

鬻}

8Ivoidmain()

9{

10FILE?wf;

11intxraa[1000],n,i;

12system(WCLSM);

13printf(w\nPleaseenteran

integernumber:\n;

14scant&x);

15fun(x,aar&n);

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

17printf("%d”,aa[i]);

18printf("\n");

19/?????*???found***?*????/

20wf=fopen("out.datM,MwM);

21fun(30raa,&n);

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

n

23fprintf(wfr%d,aa[i]);

24fclose(wf);

25/??***??**found**?*??*?*/

26}

30.請(qǐng)編寫(xiě)函數(shù)proc(),其功能是:利用以下所示的簡(jiǎn)單迭代方法求方

程cos(x)-x=0的一個(gè)實(shí)根。

xn+l=COS(xn)

迭代步驟如下:

⑴取xl初始值為0.0;

(2)x0=xl,把?XI的值賦給x0;

(3)xl=cos(xO),求出一個(gè)新的xl;

(4)若xO-xl的絕對(duì)值小于0.000001,則執(zhí)行步驟

(5),否則執(zhí)行步驟(2);

(5)所求xl就是方程cos(x)-x=0的一個(gè)實(shí)根,作為函數(shù)值返回。

程序?qū)⑤敵鼋Y(jié)果root=0.739085。

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

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

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

試題程序:

ssnciudcVconicxh>

*meludrViwatk.h>

9mciudcVSUIBO.h3>

VkxHpror()

wh?|<(N0*~KI)>■I。-6);

murn*11

tnam<)

Hoel]=pcoct)i

*root*Sf\n**()i

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

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

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

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

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

1tinclude<stdio.h>

2/**********foundw*********/

3charfun(char*srchar*t)

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

5ss-s;tt?t;

6while(*ss)

7{sl++;

8

9(*SS)

10}

11while(*tt)

12(C++;

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

14

15)

16if(tl>sl)returnt;

17elsereturns;

18}

19main()

20{chara[80],b[80];

21printf(H\nEnterastring:");

gets(a);

22printf(w\nEnterastringagain:

");gets(b);

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

nwR

ts\\nrfun(a,b));

24

32.給定程序MOD11.C中函數(shù)fun的功能是:統(tǒng)計(jì)一個(gè)無(wú)符號(hào)整數(shù)中

各位數(shù)字值為零的個(gè)數(shù),通過(guò)形參傳回主函數(shù);并把該整數(shù)中各位上最

大的數(shù)字值作為函數(shù)值返回。例如,若輸入無(wú)符號(hào)整數(shù)30800,則數(shù)字

值為零的個(gè)數(shù)為3,各位上數(shù)字值最大的是8。

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

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

linclude<stdio.h>

intfun(unsignedn,int*zero)

3{intcount?0,max=091;

4do

5{t-n%10;

6/…………*foUnd…………★/

7if(t-0)

8counts*;

9if(max<t)max-t;

10n?n/10;

11}while(n);

12/???★★★★found**???,★????育?/

13zero-count;

14returnmax;

15

16main()

17{unsignedn;intzero#max;

18printf(n\nlnputn(unsigned):");

scanf(w%dw,&n);

19max-fun(nr&zero);

20printf(H\nTheresult:max^tdzero=

%d\n"rmaxrzero);

21

33.給定程序MOD11.C中函數(shù)fun的功能是;從低位開(kāi)始取出長(zhǎng)整型

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

低位仍在低位。

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

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

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

1linclude<stdio.h>

2//foundf

3voidfun(longs,longt)

4(longsl-10;

5s/?10;

6*t-s%10;

7/*********w**found************

8while(s<0)

9ss/100;

10*<s%10*sl?*t;

11si?10;

12

13

14main()

15(longs,t;

16printf(w\nPleaseenters:");scanf

("Id”,&s);

17fun(s,&t);

MH

18printf(Theresultis:%ld\nrt);

19

34.下列給定程序中,函數(shù)fun()的功能是計(jì)算并輸出high以?xún)?nèi)的素?cái)?shù)

之和。high由主函數(shù)傳給fun()函數(shù)。

例如:若high的值為100,則函數(shù)的返回值為1060o

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

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

[試題源程序]

#include<conio.h>

#include<stdio.h>

#include<math.h>

intfun(inthigh)

intsum=0,n=0,j,yes;

while(high>=2)

yes=l;

for(j=2;j<=high/2;j++)

ifhigh%j==O

yes=O;

break;

if(yes==O)

('

sum+=high;

n++;

)

high-;

)

returnsum;

)

main()

(

clrscr();

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

35.下列給定程序中,函數(shù)fun()的功能是:計(jì)算s所指字符串中含有t

所指字符串的數(shù)目,并作為函數(shù)值返回。

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

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

試題程序:

#include<conio.h>

#include<string.h>

#include<stdio.h>

#defineN80

intfun(char*s,char*t)

{intn;

char*p,*

n=0;

while(*s)

P=s;

/vL-、!//、1、!,<1*vj**t-vt-*.L*、],、!”7,7,/

/不不不不不不不不不不不不不不T/~\ime不不不不不不不不不不不不個(gè)個(gè)個(gè)/

r=p;

while(*r)

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

elsebreak;

/KI>K(>、!,vL-、!)/、1、!,<1**X?*1--*1**.L*7,7,7,/

/不不不不不不不不不不不不不不T/~\ime不不不不不不不不不不不個(gè)個(gè)個(gè)個(gè)/

if(*r==O)

n++;

s++;

)

returnn;

1

main()

{chara[N],b[N];intm;

clrscr();

printf("\nPleaseenterstringa:");

gets(a);

printf("\nPleaseentersubstringb:");

gets(b);

m=fun{a,b);

printf("\nTheresultis:m=%d\n",m);

36.給定程序M0D11.C中函數(shù)fun的功能是:根據(jù)整型形參m,計(jì)算

如下公式的值。

11.1..1

y=一十——??一

100?100200e2003OO?3OOm'm

例如,若m=2000,則應(yīng)輸出:0.000160。

請(qǐng)改正程序中的語(yǔ)法錯(cuò)誤,使它能計(jì)算出正確的結(jié)果。

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

iinclude<stdio.h>

2/*6?*??**??■?found育育*******■?*/

3fun(intm)

4(doubley-0,d;

5inti;

6/…………found…………/

7for(i■100,i<?mri+=100)

8(d=(double)i*(double)i;

9y??l.0/d;

10]

11return(y);

12)

13main()

14{intn=2000;

15printf(H\nTheresultis

fun(n));

16

37.給定程序MOD11.C中函數(shù)fun的功能是:將p所指字符串中的所

有字符復(fù)制到b中,要求每復(fù)制三個(gè)字符之后插入一個(gè)空格。

例如,在調(diào)用fun函數(shù)之前給a輸入字符串:ABCDEFGHIJK,調(diào)用函

數(shù)之后,字符數(shù)組b中的內(nèi)容則為:ABCDEFGHIJKO

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

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

finclude<stdio.h>

2voidfun(charchar*b)

3(inti,k-0;

4while(*p)

5{i-1;

6while(i<?3&&*p)<

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

8b[kl-p;

9p++;

10;1

11if(*p)

12

13/……★…found……?…/

b[k++]=”n

15

16

17

18!)

19main()

20{chara[80]rb[80];

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

22printf("Theoriginalstring:");

puts(a);

23fun(arb);

24printf(w\nThestringafterinsert

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

25

38.給定程序MOD11.C中函數(shù)fun的功能是:將s所指字符串的正序

和反序進(jìn)行連接,形成一個(gè)新串放在t所指的數(shù)組中。

例如,當(dāng)s所指字符串為:“ABCD”時(shí),貝h所指字符串中的內(nèi)容應(yīng)為:

“ABCDDCBA”。

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

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

tinclude<stdio.h>

2tinclude<string.h>

3Z*w**********found*****w******/

4voidfun(chars,chart)

5(

6int1,d;

7d-strlen(s);

8for(i=0;i<d;i++)t[i]?s[i];

9for(i?0;i<d;i++)t[d+i]■

s[d-l-i];

10/…………found…………/

11t[2*d-l]-,\0,;

12)

13main()

14(

15chars[100],t[100];

16printf(w\nPleaseenterstringS:R);

ww

scanf(%s/s);

17fun(s,t);

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

19

39.下列給定程序中,函數(shù)fun()的功能是:傳入一個(gè)整數(shù)m,計(jì)算如下

公式的值。

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

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

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

doublefun(intm)

doublet=1.0;

inti;

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

t=1.0-l/i;

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

main()

{intm;

clrscr();

printf("\nPleaseenter1integernumbers

:In");

scanf("%d",&m);

printf("\n\nTheresultis

fun(m));

40.下列給定程序中,函數(shù)fun()的功能是;計(jì)算函數(shù)F(x,y,z)=(x+y)/(x-

y)+(z+y)/(z-y)的值。其中x和y不相等,z和y不等。例如,當(dāng)x的值

為9,y的值為11,2的值為15時(shí),函數(shù)值為-3.50。

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

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

試題程序:

#include<stdio.h>

#include<math,h>

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

#defineFU(m,n)(m/n)

floatfun(floata,floatb,floatc)

{floatvalue;

value=FU(a+b,a-b)+FU(c+b,c-b);

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

return(Value);

main()

{floatx,y,z,sum;

printf("Inputxyz::");

scanf("%f%f%f",&x,&y,&z);

printf("x=%f,y=%f,z=%f\n",x,y,z);

if(x==y||y==z){printf("Dataerror!\n");

exit(0);}

sum=fun(x,y,z);

printf("Theresultis:%5.2f\n",sum);

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

41.

下列給定程序中,函數(shù)fun的功能是求兩個(gè)非零正整數(shù)的最大公約數(shù),

并作為函數(shù)值返回。

例如,若nmnl和num2分別為49和21,則輸出的最大公約數(shù)為7;若

numl和num2分別為27和81,

則輸也的最大公約數(shù)為27o

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

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

試題程序:

#tnclude<stdio.h>

iirtfun(mta^intb)

{int3

if(a<b)

/******拿*?*******4c1^1md*****************/

)

r=a%b;

whfle(r!=O)

{a=b;b=r;r=a%b;}

尸北***********拿**91^g&,率******,*****,今*/

屐tum(a);

)

voidmain()

{intnuml,num2,a;

,printfif,Inputnumlnum2:");

scanf(H%d%d,',&nuni!,&num2);

MM

printf(num1nufn2=%d\n\nTnum1Tnum2);

a=^un(numlfnum2);

jxin或FiemaximuiicommoficKvisoris%d\n\n,,^J;

)

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

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

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

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

構(gòu)。

試題程序:

岑indudtV,tdio.h>

,include<ctype.h>

SincludeVento.h>

midfumCciuir?Mr)

//????(oond????

while(?

M(A'&&??tr<

a'&&

i(<??tr-B.N)

??tr?'A'i

elseU(?Mr*,-'/>

<?K

//????(ound????

(??tr>+??

voidm?m()

cluirMrfSOji

prrnt”Ent”■tiringwiibkngth<80.Aa\nfl)i

v

crt?(wtr)ipeif>d("\?The?tnngt\o\n>i

pui?(Mr)i

fg?>ir)?

printK*\n\nTheCorda?t\a\n*)i

pvis(Mr)t

六、操作題(2題)

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

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

)

44.給定程序中,函數(shù)fun的功能是:調(diào)用隨機(jī)函數(shù)產(chǎn)生20個(gè)互不相同

的整數(shù)放在形參a所指數(shù)組中(此數(shù)組在主函數(shù)中已置0)。

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

的結(jié)果。

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

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

1?include<stdlib.h>

2tinclude<stdio.h>

3tdefineN20

4voidfun(int*a)

5(int1,x,n-0;

6x-rand()%20;

7/??found?

8while(n<_1_)

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

10/???***??**foundw*?***?***/

11if(x-a[i])_2_;

12/………”ound………?/

13if(i-_3_)(a[n]?x;)

14xsrand()%20;

15

16

17main()

18intx[N]-(0),i;

19fun(x);

20printf(wTheresult:\nw);

21for(iw0;i<N;i++)

ww

22(printf(%4drx[i]);

23if((i+1)%5??0)printf(H\nw);

24)

25printf(w\n\nw);

26

參考答案

L2X|2J2X(21解析:冒泡排序法是通

過(guò)相鄰數(shù)據(jù)元素的交換逐步將線(xiàn)性表變成有序。假設(shè)線(xiàn)性表的長(zhǎng)度為n,

則在最壞的情況下,冒泡排序需要經(jīng)過(guò)遍的從前往后的掃描和

遍的從后往前的掃描,需要的比較次數(shù)為。

2.算法或程序或流程圖算法或程序或流程圖解析算法是問(wèn)題處理方案

正確而完整的描述。

3.101091101091解析:for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語(yǔ)句的功能

是:首先計(jì)算表達(dá)式1的值,然后檢測(cè)表達(dá)式2的值,若其值為真,則

執(zhí)行循環(huán)體語(yǔ)句,執(zhí)行完畢后,再計(jì)算表達(dá)式3的值。然后再檢測(cè)表達(dá)

式2的值是否為真,若為真,繼續(xù)執(zhí)行循環(huán)體語(yǔ)句,若為假,則退出循

環(huán);第1次循環(huán)x>8成立,輸出x=10,y=10后,x的值減1,i=l,執(zhí)

行丫=+內(nèi)操作,y的值變?yōu)?;判斷條件還成立,輸出x=9,y=l,然后

x的值減1,循環(huán)條件不成立,則退出循環(huán)。

4.完整性控制完整性控制

5.1030010300解析:在scanf格式控制符中有一個(gè)“*”附加說(shuō)明符,表示

跳過(guò)它指定的列數(shù)。程序中%(1%*(1%(1,表示首先將10賦給i,然后遇%。

d讀入整數(shù)但不賦給任何變量,最后將讀人的整數(shù)30賦給變量j,變量

k并沒(méi)有重新賦值,仍為初始值0。所以輸出的結(jié)果為10300。

6.1818解析:設(shè)循環(huán)隊(duì)列的容量為n。若rear>front,則循環(huán)隊(duì)列中的

元素個(gè)數(shù)為rear-front;若rear<front,則循環(huán)隊(duì)列中的元素個(gè)數(shù)為

n+(rear-front)o題中,front=16,rear=9,g[]rear<front,所以,循環(huán)隊(duì)列

中的元素個(gè)數(shù)為m+(rear-front)=25+(9-16)=18o

7.0111201112解析:在主函數(shù)中定義了整型變量fl和f2,并把其值

賦為。和1,在屏幕上輸出。然后在第一次運(yùn)行for循環(huán)語(yǔ)句時(shí),變量f

的值等于1,把其值輸出,把變量fl的值0賦給變量f2,變量f的值1

賦給n,在執(zhí)行第二次for循環(huán)語(yǔ)句時(shí),變量f的值等于1,把此值輸出。

然后再把變量fl的值1賦給變量f2,變量f的值1賦給fl,在執(zhí)行第

三次for循環(huán)語(yǔ)句時(shí),變量f的值等于2,把此值輸出。所以程序運(yùn)行后

的結(jié)果為01112。

8.*sl!='\0'或*si*t0=*tl*sl++*tl++sl=tO或s1=s1+strlen(str1)*s1!='\\0'

或*sl\r\n*t0=*11\r\n*s1++\r\n*11++\r\ns1=t0或sl=sl+strlen(strl)

9.55解析:本題的關(guān)鍵在于if(!(i%5))printf(Nn),這句,即如果i可被5

整除時(shí),則換行。i值為24,可以被5整除4次,并余4,因此,prnt函

數(shù)共輸出5行,最后一行有4個(gè)數(shù)。

10.軟件開(kāi)發(fā)

11.D

12.B

13.C

14.A

15.Cmark為結(jié)構(gòu)體中的數(shù)組,不能直接賦值,所以C選項(xiàng)錯(cuò)誤。故本題

答案為C選項(xiàng)。

16.D

17.C

f函數(shù)的功能是對(duì)形參a的各個(gè)成員用結(jié)構(gòu)體變量b的各個(gè)成員進(jìn)行賦

值后,然后返回變量a。

18.B

水平制表符中,'\f表示的是橫向跳若干格;選項(xiàng)B中,入039錯(cuò)誤,

、039,是八進(jìn)制形式表的字符,最大數(shù)為7,但其中出現(xiàn),9,1,'是字

符逗號(hào);選項(xiàng)D中,入鼠表示的是換行。

19.A

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

化成二進(jìn)制為0001001000101000,把01252化成二進(jìn)制為

0000001010101010,兩者相與得0000001000101000o

20.C解析:1.getcharO:此函數(shù)的作用是從終端(或系統(tǒng)隱含指定的輸

入設(shè)備)輸入一個(gè)字符。

2.putchar():此函數(shù)的作用是向終端輸出一個(gè)字符,也可以輸出控制字

符。本題在輸入字符時(shí),ab和c后面的回車(chē)符分別賦給了c[2]和c[4],

所以,正確答案為C。

21.

【解析】要將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一

維數(shù)組中,可以首先通過(guò)行循環(huán),然后列循環(huán)取出二維數(shù)組中的每一個(gè)

元素,并將其放入一維數(shù)組中,最后將一維數(shù)組的長(zhǎng)度通過(guò)形參返回到

主函數(shù)當(dāng)中。

22.

【解析】要計(jì)算n門(mén)課程的平均分,首先可以求得n門(mén)課程的總分,然

后除以n得到其平均分,最后將其平均分返回到主函數(shù)中。

23.voidfun(inttt[M][N],intpp[N])

inti,j,max;

for(j=0;j<=""p="">

(

max=tt[O][j];/*假設(shè)各列中的第1個(gè)元素值最大*/

for(i=0;i<=""p="">

if(tt[i][l]>max)

/*如果各列中的其他元素值比最大值大,則將這個(gè)值更大的元素看作

當(dāng)前該列中值最大的元素*/

max=tt[i][j];

pp[j]=max;/*將各列的最大值依次放入pp數(shù)組中*/

}

)

本題函數(shù)fun()的功能是求出二維數(shù)組中每列值最大的元素。首先,假設(shè)

各列中的第1個(gè)元素值最大,然后利用行下標(biāo)的移動(dòng)來(lái)依次取得各列中

其他元素的值,并與假設(shè)的最大值進(jìn)行比較,如果遇到更大的,則把這

個(gè)值更大的元素看作當(dāng)前該列中值最大的元素,繼續(xù)與該列中的其他元

素進(jìn)行比較。

24.

【解析】首先定義一個(gè)變量來(lái)存放表達(dá)式的和,根據(jù)題目中提供的多項(xiàng)

式,通過(guò)n次循環(huán)來(lái)求出n項(xiàng)的和。最后把所求得的和返回到主函數(shù)當(dāng)

中。

25.

程序設(shè)計(jì)題解析:

【考點(diǎn)分析】

本題考查:指針型變最定義;wh丑e循環(huán)語(yǔ)句;語(yǔ)句條件

表達(dá)式;字符串結(jié)束標(biāo)識(shí)

【解題思路】

函數(shù)fun的功能:除了字符串前導(dǎo)的*號(hào)之外,將串中其他+號(hào)全部刪

除。

【解答本題】

⑴定義一個(gè)臨時(shí)指針P,初始指向原串首地址;(2)利用循環(huán)語(yǔ)句把字

符串前導(dǎo)*號(hào)拷貝到原串;(3)繼續(xù)移動(dòng)指針,把串中和串尾的非*號(hào)字

符拷貝到原串;(4)為修改后的字符串賦結(jié)束字符,0\

【解題寶典】

要?jiǎng)h除字符串中的指定字符,我們通常采用保留非指定字符的方法。

可以將非指定字符保留在原串,即將需要保留的字符從原串的起始位

置重新賦值;也可以保留到新串,即新建一個(gè)字符串,存放要保留的

字符。

26.lvoidfun(intm,intk,intxx[])

2{

3inti,j,n;

4for(i=m+l,n=O;n

<k;i++)p*<>找

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論