2023年江西省景德鎮(zhèn)市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第1頁
2023年江西省景德鎮(zhèn)市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第2頁
2023年江西省景德鎮(zhèn)市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第3頁
2023年江西省景德鎮(zhèn)市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第4頁
2023年江西省景德鎮(zhèn)市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2023年江西省景德鎮(zhèn)市全國計算機等級考

試C語言程序設(shè)計預(yù)測試題(含答案)

學校:班級:姓名:考號:

一、2.填空題(10題)

1.實體之間的聯(lián)系可以歸結(jié)為一對一的聯(lián)系,一對多的聯(lián)系與多對多的

聯(lián)系。如果一個學校有許多教師,而一個教師只歸屬于一個學校,則實

體集學校與實體集教師之間的聯(lián)系屬于【】的聯(lián)系。

2.Jackson方法是一種面向【】的結(jié)構(gòu)化方法。

3.某二叉樹中度為2的結(jié)點有18個,則該二叉樹中有【】個葉子結(jié)

八占、、O

4.以下程序的功能是:刪去一維數(shù)組中所有相同的數(shù),使之只剩一個。

數(shù)組中的數(shù)已按由小到大的順序排列,函數(shù)返回刪除后數(shù)組中數(shù)據(jù)的個

數(shù)。

例如,若一維數(shù)組中的數(shù)據(jù)是:

2223445666677899101010

刪除后,數(shù)組中的內(nèi)容應(yīng)該是:

2345678910

請?zhí)羁铡?/p>

#include<stdio.h>

#defineN80

intfiin(inta[],intn)

{inti,j=l;

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

if(aU-l][]a[i])

a[j++]=a[i];

[];

)

main()

{inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10.

10,10},i,n=19;

printf("Theoriginaldata:\n");

fbr(i=O;i<n;i++)printf("%3d",a[i]);

n=fun(a,n);

printf("\nThedataafterdeleted:\n");

fbr(i=O;i<n;i++)printf("%3d",a[i]);printf("\n\n");

)

5.函數(shù)調(diào)用語句:“fgets(buf,n而);”從中指向的文件中讀入n個字符放到

buf字符數(shù)組中,函數(shù)返回值為o

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

floatav(a,n)

floata[];

intn;

{inti;floats;

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

returns/n;}

7.分析下列程序:

main()

{intx=l,y=0,a=0,b=0;

switch(a)

{casel:switch(b)

{case0:x++;

case1:y++;break;

case2:x++;y++;break;

)

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

)

運行程序的輸出結(jié)果是o

8.函數(shù)compare的功能是比較兩個字符串是否相等,若相等則函數(shù)返回

1,否則返回o,請?zhí)羁铡?/p>

compare(chars[],chart[])

inti=0

while(s[i]==t[i]&&[])i++;

return([]?l:0);

9.程序測試分為靜態(tài)分析和動態(tài)測試。其中【】是指不執(zhí)行程序,而

只是對程序文本進行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯誤。

10.下列程序段是從鍵盤輸入的字符中統(tǒng)計小寫字母的個數(shù),用換行符

結(jié)束循環(huán)。請?zhí)羁铡?/p>

intn=0,c;

c=getchar();

while(c!-\n')

{if(______)

n++;

二、單選題(10題)

11.以下敘述錯誤的是0。

A.算術(shù)運算符中不包含“=”運算符

B.模運算符“%”是c語言基本的算術(shù)運算符

C.算術(shù)運算符中只有“*”、“/”優(yōu)先級高于關(guān)系運算符

D.自加和自減運算符只能用于變量,而不能用于常量或表達式

12.

(29)卜面程序段的運行結(jié)果是().

#include<stdio.h>

voidmain()

{charstr[]="ABC",*p=str;

printfiC%d\n"/(p+3));

}

A)67B)0C)字符C的地址D)字符C

13.對于關(guān)鍵字值序列(12,13,11,18,60,15,7,18,25,100)

A.100B.12C.60D.15

14.有以下程序:voidsort(inta[],intn){intfor(i=0;i<n-l;i+=2)

for(j=i+2;j<n;j+=2)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){int

aa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(aa,10);for(i=0;i<10;i++)

printf("%d",aa[i]);printf("\n");}其輸出結(jié)果是

A.l,2,3,4,5,6,7,8,9,10.

B.10,9,8,7,6,5,4,3,2,1,

C.9,2,7,4,5,6,3,8,1,10,

D.l,10,3,8,5,6,7,4,9,2,

15.以下能正確定義一維數(shù)組的選項是o

A.inta[5]={0,1,2,3,4,5);

B.chara[]={0,l,2,3,4,5};

C.chara={'A','B','C'};

D.inta[5]="0123";

16.下列敘述中正確的是()。

A.棧是一種先進先出的線性表B.隊列是一種后進先出的線性表C.棧

與隊列都是非線性結(jié)構(gòu)D.以上三種說法都不對

17.

(24)有以下程序

#include<stdio.h>

#include<string.h>

StructA

{inta;charb[10];doublec;};

structA[structAt);

main()

{structAa-{1001/^hangDa0,1098.0};

a=f(a);printf|H%<L,%s,%6.1f\n”,a.a,a.b,a.c);

)

structA({StructAt)

{t.a=l002;strcpy(t.b,HWangPengH);t.c=1220.0;retumt;}

程序運行后的輸出結(jié)果是()。

A)100LZhangDa,1098.0B)1002,ZhangDa,l220.0

C)1001,WangPeng,1098.0D)1002,WangPeng,1220.0

18.算法分析的兩個主要方面是()。

A.空間復(fù)雜性和時間復(fù)雜性B.正確性和簡明性C.可讀性和文檔性D.

數(shù)據(jù)復(fù)雜性和程序復(fù)雜性

19.下述程序的輸出結(jié)果是()。#include<stdio.h>voidmain(){char

a=l,b=2;charc=aAb<<2;printf("\n%d",C);}

A.9B.10C.12D.2

20.有以下程序:

#include<stdio.h>

main()

{unsignedchara=8,C;

C=a?3:

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

)

程序運行后的輸出結(jié)果是()。A.32B.16C.1D.0

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

21.請編寫函數(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:");

scanf("%d",&n);

sum=proc(n)o

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

22.請編寫一個函數(shù)voidproc(char*tt,intpp[]),統(tǒng)計在tt字符串中“a”

到“z”26個字母各自出現(xiàn)的次數(shù),并依次放在pp所指數(shù)組中。例如,

當輸入字符串a(chǎn)bcdefghxyzabcde^e后,程序的輸出結(jié)果應(yīng)該是:

2222331100000000000000001110注意:部分源程序給出如下。請勿改

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

中填入所編寫的若干語句。試題程序:

才iscludc<conio.

fimeludeVstdio.

與ihdudcVzdlh

votdproc<char?tt?mtpp[])

voidaiato<>

char

mij?ki

aCl*S*)i

print((e\nPlc?*<enter?chari

%》8

proc<

loc(k-0311Vzs??)

pnnlf(-Kd?

e)t

23.請編寫一個函數(shù),用來刪除字符串中的所有*。例如,輸入

abc*de*/gh,則輸出為abcdefgh。注意:部分源程序給出如下。請勿

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

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

tsmcludr

9include<ctype.

9tfiHudeVettio.b>

dinclude<wtdlib.

voidprtx<ch<r.?tr)

VOidRMMI()

char?if(81]i

?y?<etn<*Ci-S*>e

pnfiifCalnptft??tnn<i*>?

get?(str)?

putt(ntr)i

proc(?ir)t

pnntf("■■??tr:K>\n*?*tr)?

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

案的項目中包含一個源程序文件progl.co程序中將m個人的成績存放

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

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

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

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

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

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

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

試題程序:

tinclude<conio.h>

2linclude<stdio.h>

3?include<string.h>

4linclude<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)

25.

請編寫一個函數(shù),用來刪除字符串中的所有空格。

例如,輸入asdafaaz67,則輸出為asdafaaz67o

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

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

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

試題程序:

/iwlude<stdiA.h>

#include<ctype.h>

#hiclude<conio.h>

vodfun(char*str)

(

}

main。

fcharstr[81];

charMsgf]=uInptitastring:T,;

intn;

printf(Msg);gftt5(str);puls(str);fun(str);

printfC****str:%&\nM,str);

I,

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

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

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

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

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

tinclude<8tdio.h>

tinclude<虱ring,h>

IMefineM81

intfun(char?ss,charc)

main()

Ichara[M]tch;

voidNONO();

printf(N\nPleaseenterastring:*);gct8(a);

printf("\nP1easeenterachar:");ch=getchar();

printf(M\nThenumberofthecharis:%d\n**,fun(a,ch));

NONO();

I

voidNONO()

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

imi;

FILE?if,*wf;

chara[M],b[M]vch;

rf=fopen("in.dat"/r*);

wf=fopcn("out.dal",**w*)?

lbr(i=0;i<10;i4-+)

I

a);

w

fBcanf(rft-%8tb);

chs?b;

H

fprintf(wf.%c?%d\n**,ch.fun(atch));

I

fclo?e(rf);

fcloeeCwf):

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

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

其功能是找出一維整型數(shù)組元素中最大的值及其所在的下標,并通過形

參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。

主函數(shù)中x是數(shù)組名,n表示x中的元素個數(shù),max存放最大值,

index存放最大值所在元素的下標。

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

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

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

試題程序:

#include<time.h>

#include<stdlib.h>

#include<stdio.h>

voidfun(inta[],intn,int*max,int*d)

{

)

voidmain()

(

inti,x[20],max,index,n=10;

srand((unsigned)time(NULL));

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

(

x[i]=rand()%50;

printff4%4d”,x[i]);

/*輸出一個隨機數(shù)組*/

}

printf(n\nH);

fun(xfnf&max,&index);

printf("Max=%5d,Index=%4d\n”,max,index);

)

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

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

其功能是將s所指字符串中ASCII值為奇數(shù)的字符刪除,將剩余字符形

成的新字符串放在t所指數(shù)組中。

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

ASCII值為奇數(shù),字符1的ASCII值也為奇數(shù),都應(yīng)當刪除,其他依

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

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

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

voidfun(char*s,chart[])

(

)

main()

(

chars[100],t[100],Msg[]-'Pleaseenterstrings:";

printf(Msg);

scanf("%s”,s);

fun(s,t);

printf("\nTheresuitis:%s\n,,,t);

)

29.N名學生的成績已在主函數(shù)中放人一個帶頭節(jié)點的鏈表結(jié)構(gòu)中,h指

向鏈表的頭節(jié)點。請編寫函數(shù)fun,其功能是:求出平均分,并由函數(shù)

值返回。

例如,若學生的成績是:8576698591726487,則平均分應(yīng)當是:

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

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

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

^include<stdio.h>

#include<Btdiib.h>

*defineN8

stnictfllist

Idoubles;

■Uuctalisl?next;

I;

typcdefstnicttlisiSTREC:

doublefun(STRECeh)

STREC?creat(double??)

ISTREC?h.?p,?q;inti=0;

h(STREC?)maUoc(tueoT(STREC));p>>?s0;

while(i<N)

|q=(STREC?)maUoc(fizeo((STREC));

q->?=?[i];i.?;p->next=q;p=q;

I

p->next=0;

returnh;

I

outli8t(STREC?h)

|STREC?p;

p=h->next;printf(*head“);

do.

|printf("->%4.IP.p->?);psp->next;|

while(p!?0);

printf("\n\n*);

I

main()

|doubleB[N]?185,76,69.85,91,72,64.87(..ve;

voidNONO();

STREC?h1

h=creai(?)?outlist(h);

ave?fun(h):

printf("ave=%6.3f\n*.ave);

NONO();

I

voidNONO()

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

FILE?in.?out;

intiJ;doubles[N],ave;

STREC?h;

in=fopen("in.datw,wr");

out=fopen("out.dm"t"w");

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

I

for(j=O;j<N;j++)f^?f(in,-%lf/,A.(j]);

h=creai(s);

ave=fiin(h);

fjpnnif(outt-%6.31f\n",ave);

fcloae(in);

fdoee(out);

30.某學生的記錄由學號、8門課程成績和平均分組成,學號和8門課程

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

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

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

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

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

填入你編寫的若干語句。

^include<stdio.h>

"defineNR

typrdrfMmrt

icharnum*10j;

double?[NJ5

doubleave;

ISTREC;

voidfun(STREC?a)

niain()

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

inti;

voidNONO():

fun(&s);

nTheutuckmidate:\nM,M.num);

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

printf("%4.

printf(w\navt?=%7.3Anw,i?.ave);

N()N()(){

voidNONO()〃

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

FILE?out;

inf?J;STHECs[10]=1

I*GA005R,85..1.

!"CA00I-.9.76.46,5,78.51.

IwGA002".9,68,.

I-GA003",6.5,86.99.86,56,5.88.51.

|-GA(XMW.6.5.56,76,75,|.

|0GAOO6H,1.5.85.SI.79,L

|*GA007-.9.75,1.

|*GA008-,72.5,0.69.63,76,5.53.51.

!"GA009",1.82,86.5.58.5!.

i-GA0I0",6,71,96.5,93.5!,

I:

out=fopcn(*out.dal"w");

(bt(ts0;i<10;i+4-)I

fun(&?[i]);

fprintf(outt"%7.3f\nH,?[i].Mve);

I

felr?r((Mil);

\

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

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

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

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

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

1tinclude<stdio.h>

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

3charfun(char*srchar*t)

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

5ss^s;ttwt;

6while(*ss)

7{sl++;

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

9(*ss)

10}

11while(*tt)

12(W;

13/**w*******found**********/

14(?tt)**;

15}

16ifreturnt;

17elsereturns;

18)

19main()

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

21printf(w\nEnterastring:H);

gets(a);

22printf(w\nEnterastringagain:

w);gets(b);

23printf(w\nThelongeriss\n\n\

fun(a,b));

24

32.下列給定程序中,函數(shù)fun()的功能是:用下面的公式求兀的近似值,

直到最后一項的絕對值小于指定的數(shù)(參數(shù)num)為止。

71/4-1-1/3+1/5-1/7+...

例如,程序運行后,輸入0.0001,則程序輸出3.1414。

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

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

試題程序:

#include<math.h>

#include<stdio.h>

floatfun(floatnum)

{ints;

floatn,t,pi;

t=l;pi=0;n=l;s=l;

/*****************************I

while(t>=num)

pi=pi+1;

n=n+2;

s=-s;

/****************************j

t=s%n;

pi=pi*4;

returnpi;

main()

{floatn1,n2;

clrscr();

printf("Enterafloatnumber:");

scanf("%f&nl);

n2=fun(nl);

printf("%6.4f\n",n2);

33.已知一個數(shù)列從0項開始的前3項:0,0,1,以后的各項都是其相

鄰的前3項之和。下列給定的程序中,函數(shù)fUn()的功能是:計算并輸出

該數(shù)列前。項的平方根之和sum。n的值通過形參傳入。例如,當n=10

時,程序的輸出結(jié)果應(yīng)為23.197745。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<math.h>

/****不***不***不*********************/

fiin(intn)

{doublesum,sO,si,s2,s;intk;

sum=1.0;

if(n<=2)sum=0.0;

s0=0.0;sl=0.0;s2=1.0;

fbr(k=4;k<=n;k++)

{s=s0+sl+s2;

sum+=sqrt(s);

sO=sl;sl=s2;s2=s;

/****************n-d*****************/

returnsum

main()

{intn;

clrscr();

printffTnputN=");

scanf("%d",&n);

printf("%f\n",ftin(n));

34.下列給定程序中函數(shù)fun()的功能是:將長整型數(shù)中每一位上為奇數(shù)

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

例如當s中的數(shù)為87653142時,t中的數(shù)為7531。

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

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

試題程序:

#include<stdio.h>

#include<conlo.h>

voidfun(longs,long*t)

{intd;

longsl=l;

/*************d**************!

t=0i

while(s>0)

{d=s%10;

/*************d**************/

if(d%2==0)

{*t=d*sl+*t;

sl*=10;

s/=10;

main()

{longs,t;

clrscr();

printf("\nPleaseenters:");scanf("%ld",&s);

fun(s,&t);

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

35.給定程序MODU.C中函數(shù)fim的功能是:為一個偶數(shù)尋找兩個素

數(shù),這兩個素數(shù)之和等于該偶數(shù),并將這兩個素數(shù)通過形參指針傳回主

函數(shù)。

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

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

1!linclude<stdio.h>

2;linclude<math.h>

3voidfun(inta,int*b,int*c)

4(int

5for(i?3;i<-a/2;i-i+2)(

6/found?

7Y-l;

8for(j-2;j<-sqrt((double)i);

j++)

9ify-0;

10if(y-1)(

11/?????■★found*,/,

12

13for(j?2;j<-sqrt((double)d);

*?)「…」一一一

14if(d%j=?0)y?0;

15if(y??l)

16{*b?l;*cwd;|

17

18

19

20main()

21(inta,b,c;

22do

23{printf(w\nlnputa:scanf

("id-,,a);}

24while(al2);

25fun(a,ftc);

HR

26printf(\n\n%d?%d?%d\nrafbrc);

27

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

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

低位仍在低位。

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

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

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

1iinclude<stdio.h>

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

3voidfun(longs,longt)

4(longsl-10;

5s/=10;

6*tms%10;

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

8while(s<0)

9{s-s/100;

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

11si?si*10;

12

13

14main()

15{longs,t;

16printf(n\nPleaseenters:R);scanf

&s);

17fun(s,6t);

Mw

18printf(Theresultis:%ld\nft);

19

37.下列給定程序中,函數(shù)ftm()的功能是:依次取出字符串中所有的字

母,形成新的字符串,并取代原字符串。

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

voidfun(char*S)

inti,j;

for(i=0,j=0;s[i]!='\0';i++)

/*************d************/

if((s[i]>='A'&&s[i]<='Z')&&(s[i]>='a'&&S[i]<='z',))

sU++]=s[i];

s[j]="\O";

)

main()

{

charitem[80];

clrscr();

printf("\nEnterastring:");

gets(item);

printf("\n\nThestringis:\%S\n",item);

fun(item);

printf("\n\nThestringofchanging

is:\%S\n",item);

38.下列給定程序中函數(shù)fun()的功能是;先將在字符串s中的字符按逆

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

當s中的字符串為ABCDE時,則t中的字符串應(yīng)為EDCBAABCDEO

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

voidfun(char*s,char*t)

(

inti,sl;

sl=strlen(s);

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

t[i]=s[sl-l];

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

/*************d**************

t[sl+i]=s[i];

t[2*sl]-'\0';

}

main()

{chars[100],t[100];

clrscr();

printf("\nPleaseenterstrings:");

scanf("%s",s);

fun(s,t);

printf("Theresultis:%s\n",t);

)

39.下列給定程序中,函數(shù)fun()的功能是找出100?n(n不大于1000)之

間百位數(shù)字加十位數(shù)字等于個位數(shù)字的所有整數(shù),把這些整數(shù)放在s所

指的數(shù)組中,個數(shù)作為函數(shù)值返回。

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

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

試題程序:

#include<stdio.h>

#defineN100

intfun(int*s,intn)

inti,j,k,a,b,c;

j=0;

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

k=n;

a=k%10;

k/=10;

b=k%10;

c=k/10;

if(a==b+c)

/************'f^)und*********,

sLH=i;

}

returnj;

)

main()

{

inta[N],n,num=O,i;

do

(

printf("\nEntern(<=1000):”);

scanff%d”,&n);

I

while(n>1000);

num=fun(a,n);

prints"\n\nTheresult:\n");

for(i=O;i<num;i++)

printf("%5d",a[i]);

printf("\n\n");

40.下列給定程序中函數(shù)fim()的功能是:從低位開始取出長整型變量s

中偶數(shù)位上的數(shù),依次構(gòu)成一個新數(shù)放在t中。例如,當s中的數(shù)為

7654321時,t中的數(shù)為642。

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

/*************d**************/

voidfun(longs,longt)

{longsl=10;

s/=10;

*t=s%10;

/*************d**************/

while(s<0)

{s=s/100;

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

sl=sl*10;

main()

{longs,t;

clrscr();

printf("\nPleaseenters:");scanf

("%ld",&s);

fun(s,&t);

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

五、程序改錯題(2題)

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

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

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

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

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

構(gòu)。

試題程序:

&mcludrVNcboi

gincludeVcotMo.

ntocludeVmdlikh>

ntprorimtk)

intji

wharfO-21&&《10>>

//????found????

m**

k——?

//????found????

returnmi

midmaint)

(

9yvteniC*CLS")i

pnfid<*Kd\n?.proc<$00>);

42.下列給定程序中,函數(shù)proc()的功能是:求S的值。

5,<2:<】?3"?(4'/<3?5>>??7)】

?I?<2n)f/<(2n-I)?<2a4*D)

例如,當n為100時,函數(shù)的值應(yīng)為1.566893c

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

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

構(gòu)。

試題程序:

Finclude〈■Msb.b>

8MicludrVconio.h>

9includeVMdio.b>

SmrludrVnuiluh>

〃????found????

proc(mta)

mtmGoat?um?w.p?qi

11

?u<n-LOi

whdXn<.n>

(

■―工()?n*

l.Oi

Mun??um?w?w/p/qt

?i

//????found????

returnMian

voidmain(>

wynicmC?CLS,)s

w

printf(%f\n*aproc(100>)t

六、操作題(2題)

43.下列給定程序中,函數(shù)fim()的功能是:應(yīng)用遞歸算法求某數(shù)a的平

方根。求平方根的迭代公式如下:

x,=(xe+—)/2

例如,2的平方根為1.414214。

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

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

試題程序:

#include<math,h>

#include<stdio.h>

/*************d**************/

fun(doublea,doublexO)

{doublexl,y;

xl=(x0+a/x0)/2.0;

/*************d**************/

if(fabs(xl-xO)>0.00001)

y=fiin(a,xl);

elsey=x1;

returny;

)

main()

{doublex;

printf("Enterx:");scanf("%lf',&x);

printf("Thesquarerootof%lfis

x,fun(x,l.O));

44.以下函數(shù)的功能是刪除字符串s中的所有數(shù)字字符。請?zhí)羁铡?/p>

voiddele(char*s)

intn=0,i;

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

if((1)

s[n++]=s[i];

s[n]=[];

參考答案

1.一對多一對多解析:實體之間的聯(lián)系可歸結(jié)為一對一、一對多與多對

多的聯(lián)系。如一個學校有許多教師,一個教師只歸屬于一個學校,則實

體集學校與實體集教師之間的聯(lián)系屬于一對多的聯(lián)系。

2.數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)解析:Jackson方法是一,種面向數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)化

方法。

3.1919解析:根據(jù)二叉樹的性質(zhì):在任意一棵二叉樹中,度為。的結(jié)點

(即葉子結(jié)點)總是比度為2的結(jié)點多一個。本題中度為2的結(jié)點數(shù)為18,

故葉子結(jié)點數(shù)為18+1=19個。

4.!=returnj!=\r\nretumj解析:本題程序的流程是:讓i,j都從1

開始,其中j用于控制刪除后剩下的數(shù)中的下標,i用于搜索原數(shù)組中

的元素。j始終是新數(shù)組已有元素中最后一個元素的下一個元素的下標,

所以if()中的條件是a[j-l]!=a[i],其中就是新數(shù)組中的最后一個元

素,若條件成立則表示出現(xiàn)了不同的值,所以a[i]要留到新數(shù)組中。注

意本題中i、j的初值都要從1開始,該算法只能用于數(shù)組已排序的題目

中。

5.buf的首地址buf的首地址解析:考查fsets()函數(shù)的功能,fBets()函數(shù)

用來從文件中讀入字符串。調(diào)用格式為:fBets(buf,n,fp)o此處,fp是

文件指針,buf是存放字符串的起始地址,n是一個int型變量。調(diào)用函

數(shù)fsets()時,最多能讀入n-l個字符,系統(tǒng)自動在最后加字符串結(jié)束標

志,并以buf作為函數(shù)值返回。

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

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

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

7.x=ly=0。x=l,y=0o解析:本題程序的主體部分是switch語句的嵌

套結(jié)構(gòu),當變量a的值為0時,在第一層switch-case語句中,沒有匹配

的case分支。因此,x和y的值沒有變化,仍然是1和0o

8.s[i]&&t[i]或s[i]!='\O'&&t[i]!='\O'!(s[i]-t[i])s[i]&&t[i]或

s[i]!='\\O,&&t[i]!='\\O'\r\n!(s[i]-t[i])解析:while后括號中的判斷條件為兩

個字符串相同位置上的字符相等,且兩個字符串都沒有結(jié)束,則循環(huán)。

故第一空應(yīng)該填或其他等價表達式。如果兩個字符串完全相

等,則while循環(huán)退出時s國和t[i]的值同時為0,否則s國和明不相等。

故表達式在字符串相等時為0,不相等時為非0,所以第二空應(yīng)

該填!國)就滿足題意了。

9.靜態(tài)分析靜態(tài)分析解析:程序測試分為靜態(tài)分析和動態(tài)測試。其中,

靜態(tài)分析是指不執(zhí)行程序,而只是對程序文本進行檢查,通過閱讀和討

論,分析和發(fā)現(xiàn)程序中的錯誤。

10.c>='a'&&c<='z'c>='a'&&c<='z'解析:小寫字母在內(nèi)存中以ASCII

的形式存入,且從a到z依次遞增,所以可以直接用c>=區(qū)&&c<=N

判斷是不是小寫字母;c!=Nn,判斷是用換行符結(jié)束循環(huán)。

11.C

12.B

13.C

14.C解析:本題考核的知識點是程序中算法的基本分析。sort。函數(shù)作用

是將數(shù)組aa中的下標為偶數(shù)的元素按大到小排序.主函數(shù)中首先定義

了一個長度為10的數(shù)組并賦值,然后調(diào)用sort。函數(shù),將數(shù)組aa中奇

數(shù)個元素的值按大到小排序,因此執(zhí)行完該函數(shù)后,數(shù)組中奇數(shù)個元素

的值為9,7、5、3和1,故主函數(shù)中最后通過一個for循環(huán)輸出數(shù)組aa

中各元素的值為9、2、7、4、5、6、3、8、1和10,所以,4個選項中

選項C符合題意。

15.B解析:選項A)定義的是長度為5的數(shù)組元素,但初值有6個元素,

所以錯誤;選項C)不符合數(shù)組定義形式,數(shù)組名后應(yīng)加上“口;選項D)

的類型說明符錯誤,應(yīng)改為char;選項B)中的0,1,2,3,4,5分別

表示對應(yīng)字符的ASCII碼,所以正確。

16.D

【答案】:D

【知識點】:棧和隊列

【解析1:棧和隊列都是線性結(jié)構(gòu),所以選項C錯誤;棧是一種先進

后出的線性表,故選項A錯誤;隊列是一種先進先出的線性表,故選

項B錯誤,所以選D。

17.D

18.A

19.A

20.C

題中定義了無符號數(shù),c=a>>3;是指右移3位,然后輸出。結(jié)果為

Co

21.\n\tdoubleproc(intn)

\n(

\ninti;

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

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

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

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

\n2n)

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

\n}

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

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

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

22.

【解析】由函數(shù)proc()可知,數(shù)組PP中存放26個字母各自出現(xiàn)的次數(shù),

初始化為0。然后判斷字符串口中每一個字符,每檢查一個字符,將數(shù)

組pp中相應(yīng)的元素加1。

23.

【解析】根據(jù)題目中要求刪除字符串中所有的*號,需要檢查字符串中

的每一個字符,將不是*號的字符放入原來的字符串中,形成新的字符

串,最后在新的字符串的末尾加上結(jié)束符。

24.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*如果分數(shù)<>8低于平均分,則將此分數(shù)放入below數(shù)::組中

*/</av)p*如果分數(shù)<></m;i++)

</m;i++)

<m;i++)

<m;i++)

<av)p*如果分數(shù)<>9below[j++]=score[i];</av)p*如果分數(shù)<></m;i++)

</m;i++)

<m;i++)

<m;i++)

<av)p*如果分數(shù)<>10returnj;/*</av)p*如果分數(shù)<></m;i++)

</m;i++)

<m;i++)

<m;i++)

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

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

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

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

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

</m;i++)

25.[答案]

voidfiin(char?str)

{inti=0;

char*p=?str;

while(*p『遍歷字符串?/

{

/*如果當前元素不為空格*/

即p!二

{??

/*將當前元素保存到西中*/

sti(ij=*p;

i++;

)

P++;

}

6用尸\0V*字符串最后加上結(jié)束標記符M力

)

[解析]

題目要求刪除空格,也就是重新保存空格以外的其他字符。通過循環(huán)刪

除字符串中的每一個空格,將非空格字符進行重新保存。

26.

intfun(char*ss,charc)

inti=0;

for(;*ss!='\0';ss++)if(}ss==c

i++/*求出*所指字符串中指定字符的個數(shù)*/

return1;

【考點分析】

本題考查:for循環(huán)語句遍歷字符串,并通過if條件語句,判斷字符串

是否結(jié)束。

【解題思路】

從字符串中查找指定字符,需要使用循環(huán)判斷結(jié)構(gòu),循環(huán)語句用來遍

歷字符串,循環(huán)條件為字符串沒有結(jié)束,即當前字符不是''0',判斷

語句用來判斷當前字符是否為指定字符。最后返回指定字符的個數(shù)。

27.voidfun(inta[],intn,int*max,int*d)

(

inti;

*max=a[0];

*d=0;

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

if(*max<a[i])

{*max=a[i];*d=i;}

)

fun()函數(shù)形參max用來存

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論