2023年河北省邢臺市全國計算機等級考試C語言程序設(shè)計真題(含答案)_第1頁
2023年河北省邢臺市全國計算機等級考試C語言程序設(shè)計真題(含答案)_第2頁
2023年河北省邢臺市全國計算機等級考試C語言程序設(shè)計真題(含答案)_第3頁
2023年河北省邢臺市全國計算機等級考試C語言程序設(shè)計真題(含答案)_第4頁
2023年河北省邢臺市全國計算機等級考試C語言程序設(shè)計真題(含答案)_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2023年河北省邢臺市全國計算機等級考試

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

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

一、2.填空題(10題)

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

#include<stdlib.h>

main()

{char*sl,*s2,m;

s1=s2=(char*)malloc(sizeof(char));

*sl=15;*s2=20;m=*sl+*s2;

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

)

2.算法的基本特征主要包括叫個方面,它們分別是可行性、確定性、0

和擁有足夠的情報。

3.自動批處理文件名必須是【】。

4.下面rotate函數(shù)的功能是:將n行n列的矩陣A轉(zhuǎn)置為A,,例如:

123415913

5678261014

當4則A,=請?zhí)羁铡?/p>

9101112371115

13141516481216

#defineN4

voidrotate(inta()[N])

{inti,j,t;

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

for(j=0;[];j++)

{t=a[i][j];

[];

a[j][i]=t;

)

)

5.設(shè)丫是int型變量,請寫出判斷丫為奇數(shù)的關(guān)系表達式【】。

6.樹中度為零的結(jié)點稱為o

7.下列程序的運行結(jié)果是____o

#include<stdio.h>

func(a,B)

{staticintm=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

)

mainO

{intk=5,m=3,p;

p=func(k,m);

printf("%d",p);

p=func(k,m);

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

8.軟件生命周期可分為多個階段,一般分為定義階段、開發(fā)階段和維護

階段。編碼和測試屬于【】階段。

9.以下定義的結(jié)構(gòu)體類型擬包含兩個成員,其中成員變量info用來存

入整形數(shù)據(jù);成員變量link是指向自身結(jié)構(gòu)體的指針,請將定義補充完

整。

structnode

{intinfo;

【】link;};

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

點。

二、單選題(10題)

11.若有函數(shù)

voidfun(doublea[]0int*n)

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

A.調(diào)用fun函數(shù)時只有數(shù)組執(zhí)行按值傳送,其他實參和形參之間執(zhí)行按

地址傳送

B.形參a和n都是指針變量

C.形參a是一個數(shù)組名,n是指針變量

D.調(diào)用fun函數(shù)時將把double型參數(shù)組元素一一對應(yīng)地傳送給形參a數(shù)

12.

(24)有以下程序:

#include<stdio.h>

main()

{intc;

whilc((c=getchar())!=,\n,)

{switch(c-3*)

{Case0:

case1:putchar(c+4);

case2:putchar(c+4);break;

case3:putchar(c+3);

case4:putchar(c+3);break;

}}

printfl:w\nM);}

從第一列開始輸入數(shù)據(jù)(<CR>代表一個何車符):3845<CR>,則程序輸出結(jié)果為

().

A)77889B)77868C)776810D)77886610

13.同一個關(guān)系模型的任意兩個元組值0。

A.可以全相同B.不能全相同C.必須全相同D.以上都不對

14?一個序列中有10000個元素,若只想得到其中前10個最小元素,最

好采用方法

A.快速排序B.堆排序C插入排序D.二路歸并排序

15.判斷一個順序存儲的隊列sp為空的條件是()。

A.sp->front=sp->rear

B.sp->front=sp->rear+1

C.sp->front=sp->rear-1

D.sp->front=NULL

16.有下列程序:

intfunl(doublea){returna*=a;}

intfun2(doublex,doubley)

{doublea=0,b=0;

a=funl(x);b=funl(y);return(int)(a+b);

)

main()

{doublew;w=fun2(l.1,2.0)............}

程序執(zhí)行后變量w中的值是()。、

A.5.21B.5C.5.0D.0.0

17.若有定義floata=25,b,*p=&b;,則下列對賦值語句*p=a;和p=&a;

的正確解釋為()。

A.兩個語句都是將變量a的值賦予變量p

B.*p=a是使p指向變量a,而p=&a是將變量a的值賦予變量指針p

C.*p=a是將變量a的值賦予變量b,而p=&a是使p指向變量a

D.兩個語句都是使p指向變量a

18.有以下程序:

#include<stdio.h>

main()

charch[]="uvwxyz",*pc;pc=ch;

printf("%c\rr,*(pc+5));

}

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

A.zB.OC.元素ch[5]的地址D.字符y的地址

19.當調(diào)用函數(shù)時,實參是一個數(shù)組名,則向函數(shù)傳送的是____o

A.數(shù)組的長度B.數(shù)組的首地址C.數(shù)組每一個元素的地址D.數(shù)組每個

元素中的值

20.在Windows環(huán)境下,單擊當前窗口中的按鈕“”,其功能是

A.將當前應(yīng)用程序轉(zhuǎn)為后臺運行

B.退出Windows后再關(guān)機

C.終止當前應(yīng)用程序的運行

D.退出Windows后重新啟動計算機

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

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

案的項目中包含一個源程序文件progl.co此程序定義了NxN的二維

數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)fun(),該函數(shù)的功能是將數(shù)

組下三角元素中的值全部置成0。如a數(shù)組中的值為

197

238

456

則返回主程序后a數(shù)組中的值應(yīng)為

097

008

000

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

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<stdlib.h>

#defineN5

voidfun(inta[][N])

{

}

voidmain()

(

inta[N][N],i,j;

system,CLS");

printf("****Thearray****\n*);

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

/*產(chǎn)生一個隨機的5x5矩陣*/

(

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

(

a[i][jl-rand()%10;

printf("%4d”,a[i][j]);

}

printfCt\n,,);

)

fun(a);

printf(€tTheResult\n,,);

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

(

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

printf(-%4d-,a[i][j]);

printf("\n");

)

)

22.

編寫函數(shù)如n,其功能是:刪除一個字符串中指定下標的字符。其中,

a指向原字符串,刪除指定字符后

的字符串存放在b所指的數(shù)組中,n放指定的下標。

例:輸入一個字符串“world”,然后輸入3,則調(diào)用該函數(shù)后的結(jié)果為

"word"。

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

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

#d<fineLEN20

voidfiin(chara[]tcharb[],intn)

(,'

},

voidmain()

?{charstrl[LEN),str2(LEN];

intn;

prin好EnterthestringAn");

gets(strl);

prirttfEnier山epositionrfthestringdeleted:。

scanf(,,%drt,&n);

fun(strLstr2,n);

prinrf(HThenewstringis:%s\n?tr2);

23.…請編寫函數(shù)。fun能是:判斷形參n中的正整數(shù)是幾位數(shù)(輸入數(shù)

據(jù)的位數(shù)不超過4位),并將結(jié)果通過函數(shù)值返回。例如:若輸入的數(shù)

據(jù)為123,則輸出結(jié)果為:輸入的數(shù)字是3位。注意:部分源程序存在

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

數(shù)fun的花括號中填入所縮寫的若干語句。試題程

finclude<stdio.h>

voidNONOO;

intfun(intn)

main()

{intn,place;

do{

printfL請輸入一個4位以內(nèi)的正整數(shù):-);

scanfLid",&n);

>while(n<011n>9999);

place-fun(n);

printf(“粉人的數(shù)字是3位\M,place);

NONOO;

)

voidNONO()

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

FILE?fp,?wf;

intifn,place;

fp-fopen(wc:\test\in.dat","r");

wf-fopen(*c:\test>cut.datH,Hw");

for(i-0;i<10;i什)

(

fscanf(fpr"%d",tn);

place,fun(n);

w

fprintf(wf/"%d\nrplace);

)

fclose(fp);

fclose(wf);

序:)

24.請編寫一個函數(shù)proc(),它的功能是:將str所指字符串中所有下標

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

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

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

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

■mciuii9?

?efirlu4r

■utclutl*<k>

?inclu4v<MriRg.Ii>

*o一peoc<clMir?H9>

m<>

rhaf

?X?IMB(*CLS>>?

pneih*\nPV??rEVTanxragwitlwi

10rhsracierv?\A>>I

gviMtOi

prin4i<*\n\nAft?rHurngNtf.the?sr?g

\aK*a?n>?

pmHitli

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

25編寫函數(shù)voidproc(intx,intpp口,int*n),它的功能是求出能整除x

且不是奇數(shù)的各整數(shù),并按從小到大的順序放在pp所指的數(shù)組中,這

些除數(shù)的個數(shù)通過形參返回。

例如,若x中的值為30,則有4個數(shù)符合要求,它們是261030。

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

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

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

試題程序:

*include<conio.h>

include<stdio.h>

/includeVntdlib.h>

voidproc(intx?infpp£]?int?n)

voidmain()

(

intx.arrflOOO].n?ii

syMem("CI-S")i

printf("\nPleascenteranintegernumber:\nH)i

?canf("%d".>

proc<x?arr.s

for(i-0si<nii++)

printf(*%d*?arr[i])i

print((**\nH)i

26.請編寫函數(shù)proc(),其功能是:將str所指字符串中下標為偶數(shù)的字

符刪除,串中剩余字符形成的新串放在t所指數(shù)組中。

例如,當str所指字符串中的內(nèi)容為abedefg,則在t所指數(shù)組中的內(nèi)容

應(yīng)是bdfo

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

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

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

試題程序:

Biodude?二afetflik.

StncluJrVcomo,

=incftudrV,tdxx!O?

$include<*nn<.li>

eidproc<Huir?ar.ciui,4])

voidHMMI<)

char?trC10Q]?t[100]i

wyvlcM<>i

pnm”.'aPlcenter*trtn<wiri")i

?canl《■外■"?Mr)i

proeCwir.tli

pnM((*\aTberesulttsrH?\n*tt)t

27.請編寫函數(shù)proc(),該函數(shù)的功能是:刪去一維數(shù)組中所有相同的

數(shù),使之只剩一個。數(shù)組中的數(shù)已按由小到大的順序排列,函數(shù)返回

刪除后數(shù)組中數(shù)據(jù)的個數(shù)。

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

1122234456666778

9910101010

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

12345678910

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

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

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

試題程序:

sinrludrV.tdMkh>

9%fineMBO

mtptor(mi?[]?tainl

voidmain(>

8.0.9.IO.1O.IOJO).i.ii-ZZ.

print((eTh?ongtnAl<iftUj\na>i

(orii^OiYm,?)>

|xint(<<K3d*?arr[i]>t

n?pror(arr?f>>i

pnnifC*\n\fiThedal>afterdeleted

foHi**Oii<tu[?+)

pnnt?eX3d".>rr[.ij>3

pcintl<*\n\n")i

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

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

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

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

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

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

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

tioclude<sldio.h>

fdefineN8

typedefstruct

Icharnum[10];

doubles[N];

doubleave;

|STREC;

voidfun(STREC?a)

main()

|STREC??|*GA005",85.5,76,69.5.85.91,72,64.5.87.51;

int

voidNONO();

fUfl();

printf("The%-sludentchia:\n*,B.num);

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

pnntf(*%4.1An-,?.?[>]);

pnntf("\nave=%7.3An".t.ave);

NONO();

I.

voidNONO()

I/.本函數(shù)用于打開文件,輸人敷據(jù),利用雨數(shù),輸出數(shù)據(jù),關(guān)閉文件,

FILE?out;

inti.j;STREC式10]=I

|■GA005",85.5,76.69.3,85,91,72,64.5.87.51.

j"CA001*.82.5,66.76.S.76,89.76,46.5,78.51,

|?CA002-,72.5,56,66.5.66,79,68.46.5,58.51,

I-GA003*.92.5,76.86.5,86,99,86.56.5,88.5|,

|-CA004",82,66.5,46.5,56,76,75,76.5.63.51,

I"GA006",75.5,74,71.5.85,81,79,64.5.71.51,

|?GA007',92.5.61,72.5,84.79.75.66.5,72.51,

|-GA008,,72.5,86,73.5,80,69,63.76.5,53.51.

|-GA009-.66.5,71.74.5,70,61.82,86.5.58.51.

|?GAOJO”,76,66.5,75.S,60.76,71,96.5,93.51.

11

out=fopen(dM'*,"w");

fbr(is0;i<10;i??)I

M

^pnntf(outr"%7.3An,?[i].ave);

I

fdoee(out);

29.請編寫函數(shù)proc(),其功能是:計算并輸出下列多項式值。S=(1-

1/2)+(1/3-1/4)+...+(1/(2n-l)-l/2n)例如,若主函數(shù)從

鍵盤給n輸入20后,則輸出為s=0.680803o注意:部分源程序給出

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

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

於includeVstdio.h>

doubleproc(intn)

(

}

voidmain<>

(

intm

doublesum;

print((N\nlnputnt**>:

scanf(?&-n)i

5um=proc(n>i

30.請編寫函數(shù)proc,它的功能是計算:

s=(In(l)4+ln(2)4+ln(3)+...+In(m))0.5

在C語言中可調(diào)用log(n)函數(shù)求ln(n)o

例如,若m的值為30,則proc函數(shù)值為8.640500。

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

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

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

試題程序:

#include<stdlib.h>

#include<conio.h>

#inclllde<stdio.h>

#include<math.h>

doubleproc(intm)

)

voidmain

system("CLS");

printf("%f\n",proc(30));

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

31.給定程序MOD11.c中函數(shù)fun的功能是;由形參給定n個實數(shù),

輸出平均值,并統(tǒng)計在平均值以上(含平均值)的實數(shù)個數(shù)。

例如,n=8時,輸入:193.199,195,673,195,757,196.051,196.092,

196,596,196,579,196.763

所得平均值為:195.838745,在平均值以上的實數(shù)個數(shù)應(yīng)為:5

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

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

1!*include<stdio.h>

;intfun(doublex(],intn)

3!(

4j/??*??*?*?**?found**<?*???????/

5intj9c?0.doublexa-0.0;

for(j?0;j<n;

Ixax(j)/n;

i

8printf(wave?%f\nw,xa);

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

10!/*??*???*>?**found*

11if(x(j)->xa)

12C++;

13returnc;

14jJ

15!main()

16;{doublex(100)-(193.199,195.673,

!195.757,196.051,196.092,196.596,

?196.579,196.763};

17printf(R%d\nR,fun(x,8));

18

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

公式的值。

Al=l,A2=1/(1+A1),A3=l/(1+A2),....An=(l/(1+A(n-1))

例如,若p=10,則應(yīng)輸出0.617977。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

/*******不***不**f^ound**不***不************不/

ihtfun(ihtn)

{floatA=l;inti;

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

A=1.0/(i+A);

returnA;

)

main()

{intn;

clrscr();

printf("\nPleaseentern:");

$canf("%d",&n);

printf("A%d=%lf\n",n,fun(n));

)

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

的字符按從小到大的順序進行排序。插入法的基本方法是:先對字符串

中的頭兩個元素進行排序,然后把第3個字符插入到前兩個字符中,插

入后前3個字符依然有序;再把第4個字符插入到前3個字符中,待排

序的字符串已在主函數(shù)中賦予。

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

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

試題程序:

#include<String.h>

#include<stdio.h>

#defineN80

voidinsert(char*aa)

{ihti,j,n;charch;

n=strlen(aa);

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

{c=aa[i];

j=i-l;

while((j>=0)&&(ch<aa[j]))

{aa[j+l]=aa[j];

j-;

)

aa[j+l]=ch;

)

)

main()

{chara[N]="QWERTYUIOPASDFGHJKIMNBVCXZ";

inti;

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

insert(a);

printf("Thestringaftersorting:

%s\n\n",a);

34.下列給定程序中,函數(shù)fun()的功能是:判斷一個整數(shù)m是否是素

數(shù),若是返回1,否則返回0。在main()函數(shù)中,若fun()返回1則輸出

YES,若fun()返回0則輸出NO!

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

intfun(intm)

{intk=2;

while(k<=m&&(m%k))

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

k++

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

if(m=k)

return1;

elsereturnO;

)

main()

{ihtn;

clrscr();

printf("\nPleaseentern:");

scanf("%d",&n);

if(fun(n))printf("YES\n");

elseprintf("NO!\n");

)

35.下列給定的程序中,函數(shù)fun()的功能是:判斷字符ch是否與str所

指字符串中的某個字符相同;若相同,則什么也不做,若相同,則將其

插在申的最后。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

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

voidfun(charstr,charch)

{while(*str&&*str!=ch)str++;

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

if(*str==ch)

{str[O]=ch;

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

str[l]-O';

main()

{chars[81],c;

clrscr();

printf("\nPleaseenterastrzng:");

gets(s);

printf("\nPleaseenterthecharacterto

search:");

c=getchar();

fun(s,c);

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

)

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

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

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

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

注意:不要改動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()的功能是:求出以下分數(shù)序列的前n項

之和。

2/1,3/2,5/3,8/5,13/8,21/13...........

和值通過函數(shù)值返回main()函數(shù)。例如,若輸入n=5,則應(yīng)輸出8.391667。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

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

fun(intn)

{inta=2,b=l,c,k;

doubles=0.0;

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

{s=s+1.0*a/b;

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

c=a;a+=b;b+=c;

)

return(s);

)

main()

{intn=5;

clrscr();

printf("\nThevalueoffunctionis:

fun(n));

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

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

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

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(longs,long*t)

{intd;

longsl=l;

*t=0;

while(s>0)

{d=s%10;

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

)

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

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

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

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

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

1finclude<stdio.h>

2*include<string.h>

3voidfun(chart[])

4(

5charc;

6int1,j;

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

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

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

10/**********found***********/

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

12(

13c-t[j];

14t[j]-t(j?1];

15t(j?1]-c;

16)

17}

18main()

19

20chars[81];

21printf(w\nPleaseenteracharacter

string:

22gets(s);

23printf(w\n\nBeforesorting:\n

s);

24fun(s);

25printf(w\nAftersortingdecendingly:

\nWb,s);

26

40.下列給定程序中,函數(shù)fun()的功能是:按順序給s所指數(shù)組中的元

素賦予從2開始的偶數(shù),然后再按順序?qū)γ?個元素求一個平均值,并

將這些值依次存放在w所指的數(shù)組中。若s所指數(shù)組中元素的個數(shù)不是

5的倍數(shù),多余部分忽略不計。例如,s所指數(shù)組有14個元素,則只對

前10個元素進行處理,不對最后的4個元素求平均值。

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

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

試題程序:

#include<stdio.h>

#defineSIZE20

fun(double*s,double*w)

{intk,i;doublesum;

for(k=2,i=0;i<SIZE;i++)

{s[i]=k;k+=2;}

sum=0.0;

for(k=0,i=0;i<SIZE;i++)

{sum+=s[i];

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

if(i+l%5==0)

{w[k]=sum/5;Sum=0;k++;}

)

returnk;

)

main()

{doublea[SIZE],b[SIZE/5];

inti,k;

k=fun(a/b);

printf("Theoriginaldata:\n");

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

if(i%5==0)printf("\n");

printf("%4.0f7a[i]);

printf{"\n\nTheresult:\n");

for(i=0;i<k;i++)printf("%6.2f,b[i]);

printf("\n\n");

)

五、程序改錯題(2題)

41.

假如整數(shù)數(shù)列中的數(shù)不重復,并存放在數(shù)組中。下列給定的程序中,函

數(shù)proc()的功能是:刪除數(shù)列中值為x的元素。n中存放的是數(shù)列中

元素的個數(shù)。請修改程序中的錯誤,使它能夠得出正確的結(jié)果。注意:

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

題程序:

密iDclwk

?*dehneM2門

i?t?an?vnt,.皿x>

ifii

whale

rrtwra-It

eb?

for?>

//????found????

rviim-11

voadouun<>

mi"r[MJ-f-3?0?1I0.1S.30.90).

x?n?it

?.10A

pnnt(<"Theortgioaldat?:\na)?

tor(i-0i?Vtui+,)prmtf<*%5d*?arr[ij)i

S

printf(*\nlnpui*<to<MH?>G>?

?c?nf<*Kd**&.*)<

eDeletetKd\n*?*>i

n*proc<arY?n?K)i

tl(??—―!)

printf(e???NobrIOUCMI!???\n\aa)t

tix

p<ifH".Thcdala“l(fā)erdeleted)i

for<i9O&Ynil++)

pnntfl*K5d*?arr{t]>i

42.

下列給定程序中,函數(shù)proc()的功能是:計算并輸出下列級數(shù)的前N

項之和SN,直到SN+1大于q為止。q的值通過形參傳人。SN=2/1+3

/2+4/3+(N+l)/N例如,若q的值為57,則函數(shù)值為59.593612。

請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main

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

aindude<Htdlihk>

MindudrVcocUo.b>

9include<*tdxkh>

//????(ouf>3????

dcHiblcproc(dr>u!4rq>

inil*idouble?ufn?tt

-&。,

whik<wm<WQ)

//?????

sum*turnXn>I)/m

■十+,

//????(outfit????

rriimMitni

voidm*in(>

>ystefi><*CLS*)i

pntrtfC*S(\n"?proc<^0))?

六、操作題(2題)

43.請補充main()函數(shù),該函數(shù)的功能是:從鍵盤輸入一個長整數(shù),如

果這個數(shù)是負數(shù),則取它的絕對值,并顯示出來。例如,輸入>123456,

結(jié)果為:1234560注意:部分源程序給出如下。請勿改動main()函

數(shù)和其他函數(shù)中的任何內(nèi)容,僅在橫線上填入所編寫的若干表達式或語

句。試題程序:

霖includeV.tdLhb>

9mrlutlrVMdio.h>

9includeVconio.h?>

rotdmain()

longintnum?

?yMctn<*CLS*>i

pntttfCaf£nicribcdatai\n*)?

?can(<fl}_?i

????theabsolutevalue???\?")i

i!(nuai<CO)

■】

pnBtf(e\a\nM)t

prtntf(13]>?

44.觀察題目要求,可以知道以下幾點:}

參考答案

1.40

40解析:本題中指針si和s2都指向同一個內(nèi)存中的地址。因此語句

“*s2=20;”執(zhí)行后,*\u3000sl=*s2=20。所以m最后的值為40。

2.有窮性有窮性

3.AUTOEXEC.BAT

4.j<ia[i][j]=a[j][i]j<i\r\na[i][j]=a[j][i]解析:本題中要求將n行n列的

矩陣A轉(zhuǎn)置,即讓數(shù)組中行上的元素變成對應(yīng)列上的元素。即把對角線

兩邊的元素對換,所以本題的第一個空格處應(yīng)該填寫j<i,第二個空格

處填寫交換對角線兩邊的元素的語句a[i][j]=a[j][i]o

5.Y%2=1或Y%2!=OY%2=1或丫%2!=0解析:判斷變量是否為奇數(shù)

可以用變量與2取模,判斷結(jié)果是為1或下為0。本題具體做法如下:

Y%2=1或丫%2!=0。

6.葉子結(jié)點葉子結(jié)點解析樹中度為零的結(jié)點,也就是沒有后件的結(jié)點,

稱為葉子結(jié)點。

7.11231123解析:在主函數(shù)中第一次調(diào)用func子函數(shù)時,m=0,i=2,i

=i+m+1=3,m=i+a+b=3+5+3=llo因為在子函數(shù)中將m和i定義成

了static類型,所以在子函數(shù)中對m和i進行的改變,在下一次調(diào)用子

函數(shù)時能進行保存,所以第二次調(diào)用子函數(shù)時,m=ll,i==3,貝IJi=

i+m+1=15,m=i+a+b=15+5+3=23。

8.開發(fā)開發(fā)解析:軟件生命周期(SDLC,軟件生存周期)是軟件的產(chǎn)生

直到報廢的生命周期,周期內(nèi)有問題定義、可行性分析、總體描述、系

統(tǒng)設(shè)計、編碼、調(diào)試和測試、驗收與運行、維護升級到廢棄等階段,其

中的編碼和測試屬于開發(fā)階段。

9.structnode*structnode*解析:本題中的結(jié)構(gòu)類型名為structnode,所

以空白處應(yīng)填:structnode*o即定義一個指向自身的結(jié)構(gòu)體指針。

10.n+ln+l解析:在任意一棵二叉樹中,度為0的結(jié)點(即葉子結(jié)點)總

是比度為。的結(jié)點多一個。

ll.B\n本題考查函數(shù)中數(shù)組和指針的傳值,數(shù)組a□在參數(shù)傳遞時,是傳

遞的數(shù)組a的首地址,所以形參a和n都是指針變量。。

\n

12.A

13.B關(guān)系具有以下7個性質(zhì)。①元組個數(shù)有限性:二維表中元組的個數(shù)

是有限的。②元組的唯一性:二維表中任意兩個元組不能完全相同。③

元組的次序無關(guān)性:二維表中元組的次序,即行的次序可以任意交換。

④元組分量的原子性:二維表中元組的分量是不可分割的基本數(shù)據(jù)項。

⑤屬性名唯一性:二維表中不同的屬性要有不同的屬性名。⑥屬性的次

序無關(guān)性.二維表中屬性的次序可以任意交換。⑦分量值域的同一性:二

維表屬性的分量具有與該屬性相同的值域,或者說列是同質(zhì)的。滿足以

上7個性質(zhì)的二維表稱為關(guān)系,以二維表為基本結(jié)構(gòu)所建立的模型稱為

關(guān)系模型。本題答案為B選項。

14.B

15.A

16.C

子函數(shù)funl(doublea)的功能是返回a的平方值的整數(shù)部分。子函數(shù)

fun2(doubleX,doubley)的功能是返回X的平方值的整數(shù)部分與丫的

平方值的整數(shù)部分的和。又因為題中變量W的定義為double型,函數(shù)

fun(2)的定義為int型,按照各類數(shù)值型數(shù)據(jù)間的混合運算,整型數(shù)據(jù)

被轉(zhuǎn)換為實型數(shù)據(jù)。所以雙精度型變量w的值為5.Oo

17.C解析:“p”是指針變量,指向一個地址:“*p”,為p指針所指向地

址的內(nèi)容。

18.A語句“pc=ch;"使得指針變量pc指向字符數(shù)組ch的首地址,即指向

字符'u"而“pc+5”指向的是指針向后移動5位所指的字符,即指向字

符3,所以輸出的“*(pc+5)”的值為玄。故本題答案為A選項。

19.B解析:當調(diào)用函數(shù)時,實參是一個數(shù)組名,則向函數(shù)傳送的是數(shù)組

的首地址,函數(shù)中的形參可定義成以下三種形式:

①形參定義成數(shù)組;

②形參定義成可變長數(shù)組:

③形參定義為指針變量。

20.C

解析:在Windows環(huán)境下,單擊當前窗口中的按鈕“x”,其功能是終止

當前應(yīng)用程序的運行,關(guān)閉當前窗口。

21.voidfun(inta[][n])

(

inti,j;

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

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

a[i][jl=O;/*將數(shù)組下三角元素中的值全部置成0*/

)

對于NxN二維數(shù)組,表示其下三角元素,可以通過以下語句實現(xiàn)。

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

\tfor(j=0;j<=i;j++)

外層循環(huán)用來控制矩陣的行下標,內(nèi)層循環(huán)用來控制矩陣的列下標。

注意列下標的取值范圍,因為要表示下三角元素,所以j的范圍是

0~io

22.

【答案】

vnidfun(chara[),eharH),intn)

(init.k=0;

iffi!卻)/"將不是指定下標的字符存人數(shù)組b中?/

hfkzX*

)肚h燈;片在字符串最后加上結(jié)束標識符*/

)

(解析】

根嶷題意要刪除字符串中指定下標的字符.也就是保的非指定下標的字符,所以在話句為%!=0,在字

符串木尾加上字符中結(jié)束標識符.

23.

int恰時丈量隨計儀敕

xhileS/10)〃到備是否為0,若不為O.blts加1,再

看n*以10,?續(xù)打嘴

(

bits”;

n-n/10;

returnbits;【考點分析】主要考察考生對循環(huán)

跳出的條件的理解,以及理解取數(shù)字位數(shù)的方法?!窘忸}思路】通過

對指定的多位數(shù)每次除以10,去掉最后一位,直到為。結(jié)束,使用臨時

變量來統(tǒng)計一個多位數(shù)的位數(shù)。

24.

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

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

理。

25.

【解析】按照題目中要求,求出能整除x且不是奇數(shù)的各整數(shù)。首先

判斷小于等于整數(shù)x的所有偶數(shù)是否能被x整除,將能被x整除的奇

數(shù)放入數(shù)組pp中。最后將數(shù)組pp中元素的個數(shù)返回到主函數(shù)當中。

26.

voidproctchef?mr?clMrciJ)

//k

lordlBiVhiii+Z)示力奇■

"七下際為今收的K收?

■中

iDl-AOi”■為[毫字料率,因比必SI用V?作

力雄未修二

【解析】題目要求將下標為偶數(shù)的字符刪除,其余字符放在新的字符

數(shù)組t中。首先取出字符串str中下標為奇數(shù)的字符,將其賦值給新的

字符串3最后用‘\0'作為字符串結(jié)束的標志。

27.

【解析】題目中要求刪去一維數(shù)組中所有相同的數(shù),使之只剩一個。

首先需要將字符串中的每一個字符與其后的一個字符相比較,相同則

不做任何操作,不相同則將其放入新的字符串中。最后將新的字符串

中的字符個數(shù)返回給主函數(shù)。

28.

voidfun(STREC*a)

inti:

a->ave=0.0:

fbr(i=O;i<N;i++)a->ave=a一>ave+-->s[i];/*求各門成績的總和}

/

a->ave/=N;/}求平均分*/}

【考點分析】

本題考查:結(jié)構(gòu)體類型成員運算,指向結(jié)構(gòu)體類型的指針變量作函數(shù)

參數(shù)。

【解題思路】

本題考查自定義形參的相關(guān)知識點,程序流程是這樣的:在如n()函數(shù)

中求出平均分后,返回到主函數(shù)時平均分也要帶回,所以只能定義一

個指針類型的形參STRECa,此時,引用成員的方式可以使用指向運

算符,即a—〉ave和a—>s[i],當然也可用(*a),aveW(*a).S[i]o

29.

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

可以利用n次循環(huán)求出n項表達式的值,求和放在變量s中。最后將多

項式的值返回到主函數(shù)當中。

30.doubleproc(intm)

\n{

\ninti;

\ndoubles=0.0;//s是表示其和

\nfor(i=1;i<=m;i++)

\ns=s+log(i);〃計算s=ln(l)+ln(2)+ln(3)+…+ln(m)

\nreturnsqrt(s);〃最后將其開平方的值返回到主函數(shù)中

\n}

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

后開平方??梢允紫韧ㄟ^m次循環(huán)求得m項表達式的和,然后將其和

開平方并返回到主函數(shù)當中。

\n

31.(l)intj-c=0;doublexa=0.0;(2)if(x[j]>=xa)(l)intj-c=0;double

xa=0.0;(2)if(x[j]>=xa)解析:本題中函數(shù)的功能是輸出平均值,并

統(tǒng)計在平均值以上(含平均值)的實數(shù)個數(shù)。本題中的函數(shù)實現(xiàn)過程首先

求解平均值,然后將所有值與平均值進行比較,統(tǒng)計高于平均值的實數(shù)

個數(shù)。

32.(1)錯誤:intfun(intn)正確:floatfun(intn)(2)錯誤:for(i=2;i<n;

i++)正確:for(i=2;i<=n;i++)⑴錯誤:intfun(intn)正確:floatfun(int

n)\r\n(2)錯誤:for(i=2;i<n;i++)正確:for(i=2;i<=n;i++)解析:該

題中fun()函數(shù)的作用是計算數(shù)列前n項的和,而數(shù)列的組成方式是:第

n項的分母是功□第n-1項的值,分子為1,如果循環(huán)累加按for(i=2;

i<n;i++)執(zhí)行的話,當我們輸入n=2的時候會是什么結(jié)果?循環(huán)會怎么

執(zhí)行呢?循環(huán)不能執(zhí)行,但數(shù)學思路絕對正確,這就矛盾了,所以循環(huán)條

件應(yīng)該是for(i=2;i<n;i++)o

33.錯誤:c=aa[i]正確:ch=aa[i];錯誤:c=aa[i]正確:ch=aa[i];解析:

對長度為n的數(shù)組元素進行排列,可先對數(shù)組的前m-l項進行排序,之

后再對前m項進行排序,如此循環(huán)直到數(shù)組全部元素完成排序。對前m

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

評論

0/150

提交評論