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

下載本文檔

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

文檔簡介

2022年甘肅省張掖市全國計算機(jī)等級考試

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

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

一、2.填空題(10題)

1.設(shè)有以下結(jié)構(gòu)類型說明和變量定義,則變量a在內(nèi)存所占字節(jié)數(shù)是

[]o

structstud

{charnum[6];

ints[4];

doubleave;

}a,*p;

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

#defineN5

main()

{inta[N]={1,2,3,4,5},i,temp;

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

{temp=a[i];

a[i]=a[N-i-l];

a[N-i-l)=temp;

}

printf("\n");

for(i=0;i<n;i++)printf("%d",a[i]);

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

點(diǎn)。

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

模型中的核心。

5.\13,在內(nèi)存中占1個字節(jié),"\12"在內(nèi)存中占____個字節(jié)。

6.下列程序的輸出結(jié)果【】。

#definePR(ar)printf("ar=%d",ar)

main()

{intj,a[]={l,3,5,7,9,11,13.1),*p=a+5;

for。=3;j;j-)

switch(j)

{case1:

case2:PR(*p++);break;

case3:PR(*(—p));}}

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

fun(intx,inty,intz)

{z=x*x+y*y;}

main()

{inta=31;

fun(6,3,a)

printf("%d,a)

)

8.下面程序的功能是將字符串a(chǎn)下標(biāo)值為偶數(shù)的元素由小到大排序,其

他元素不變,請?zhí)羁铡?/p>

#include<stdio.h>

main()

(

chara[]="labchmfye",t:

int1,j;

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

for(j=i+2;j<9;[])

if([])

{t=a[i];a[i]=a[j];a[j]=t;j++;)

puts(a);printf("\n");

)

9.#define命令出現(xiàn)在程序中函數(shù)的外面,宏名的有效范圍為。

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

main()

{charc;intn=100;

loatf=10;doublex;

x=f*=n/=(c=50);

printf("%d%f\n",n,x);

二、單選題(10題)

11.

有以下程序

#include<stdio.h>

main

{inta=l,b=2,c=3,x;

x=(aAb)&C;printf("%d",x);

)

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

A.0B.1C.2D.3

12.讀取二進(jìn)制文件的函數(shù)調(diào)用形式為“fi"ead(bufTer,size,count,的「,其中

buffer代表的是()o

A.一個內(nèi)存塊的字節(jié)數(shù)

B.一個整型變量,代表待讀取的數(shù)據(jù)的字節(jié)數(shù)

C一個文件指針,指向待讀取的文件

D.一個內(nèi)存塊的首地址,代表讀入數(shù)據(jù)存放的地址

13.以下正確的字符串常量是()。

A.“\\\"B.'abc'C.OlympicGamesD."“

14.表示關(guān)系a<b<c的C語言表達(dá)式為()o

A.(a<=B)&&(b<=C)

B.(a<=B)and(b<=C)

C.(a<=b<=C)

D.(a<=B)&(b<=C)

15.下列關(guān)于邏輯運(yùn)算符兩側(cè)運(yùn)算對象的敘述中正確的是()。

A.只能是整數(shù)0或1B.只能是整數(shù)0或非0整數(shù)C.可以是結(jié)構(gòu)體類型

的數(shù)據(jù)D.可以是任意合法的表達(dá)式

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

A.一個邏輯數(shù)據(jù)結(jié)構(gòu)只能有一種存儲結(jié)構(gòu)

B.邏輯結(jié)構(gòu)屬于線性結(jié)構(gòu),存儲結(jié)構(gòu)屬于非線性結(jié)構(gòu)

C一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存諸結(jié)構(gòu)不影響數(shù)據(jù)

處理的效率

D.一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存諸結(jié)構(gòu)影響數(shù)據(jù)處

理的效率

17.在多媒體計算機(jī)系統(tǒng)中,不能用以存儲多媒體信息的是

A.光纜B.軟盤C.硬盤D.光盤

18.若f(n)=3n2+2n+l,則f(n)=()o

A.0(n2)B.O(n)C,O(2n)D.O(3n2)

19.有以下程序:#include<stdio.h>main(){inti=0.s=0;for(;;)if(i==

3IIi==5)continue;if(i==6)break;i++;s+=i;}printf("%d\n”,s);程序

運(yùn)行后的輸出結(jié)果是()。

A.10B.13C.21D.程序進(jìn)入列循環(huán)

20.以下選項中不能用作C語言程序合法常量的是()。

A.123C.1,234D.“\x7D”

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

21.學(xué)生記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已放入主函數(shù)中的結(jié)構(gòu)

體數(shù)組中,請編寫函數(shù)fun,其功能是:把分?jǐn)?shù)最低的學(xué)生數(shù)據(jù)放入b所

指的數(shù)組中,注意:分?jǐn)?shù)最低的學(xué)生可能不止一個,函數(shù)返回分?jǐn)?shù)最低

的學(xué)生人數(shù):

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

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

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

findude<stdio.h>

WdcfineN16

typedefttract

|charniun[10]:

ints;

|STREC;

intfun(STREC?a.STREC?b)

main()

(STREC?(N]?H-GA05",851.{"GAOS",761,|"GA02”,691,|"GA04",851,

|"GA01CAO7",72(,rGA08".641.GA06",871.

|-GA015-,85(,)"GA0)3,,91|,|*GA012-,64|,|"CA014",911.

,

|"CA0ir,91|.|"CA0i7,,64|,|-CA0I8",64|,|"CAOI6,72||{

STRECb[N];

iniitn;FIL£?oul;

n=fun(f,h);

prinlf("The%dlowestscore:\n*,n);

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

printf("%B%4d\n*,b[i].num,h[i].?);

pnntf(-\n");

out=fbpen("out.dat**.Ww*);

fprintf(o<rt,,n);

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

fprinlf(out,*%4d\n",h[i].?);

fdooe(out);

i

22.

假定輸入的字符串中只包含字母和*號。請編寫函數(shù)proc(),它的功能

是:只刪除字符串前導(dǎo)和尾部的*號,串中字母之間的*號都不刪除。形

參m給出了字符串的長度,形參h給出了字符串中前*號的個數(shù),形參

e給出了字符串中最后*號的個數(shù)。在編寫函數(shù)時,不得使用C語言提

供的字符串函數(shù)。例如,若字符串中的內(nèi)容為****a*bc*def*g****,刪

除后,字符串中的內(nèi)容則應(yīng)當(dāng)是a*bc*def*g。注意:部分源程序給出如

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

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

ttincludeV.tdso,b>

AIRCIIMUVCOAMKh>

vendprocCdwu?a?mtm.inth?inte)

voedauian()

eMr?£!!j?

m<tn*0?tn*0?fn,O4

phmf(aEncerA?tnnfI\D*)I

<et>(?)i

whileC?t)

-"m"導(dǎo)冷圈舲長It

t一一i/掂計t|B向字符率兄施

wt)dr<?)

{l———■++/

,指針,■向■晅一個字母?sflUt/部?'的

個教

wtul?<?(0*,*,>

<(+?if?*?11

/mitf?網(wǎng)■一個字,?《■畿精??‘?’的個?

proc<■?m?(n?fn)i

prmtf<*The?tnnc>(irrdeleiedt\ii*>i

pulsC?)t

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的花括號中填入所縮寫的若干語句。試題程

linclude<stdio.h>

voidNONO();

intfun(intn)

main()

{intn,place;

do{

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

scanf;

Iwhile(n<0IIn>9999);

place?fun(n);

print—1*輸入的數(shù)字是記位\n“,place);

NONO();

)

voidNONO()

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

FILE?fp,?wf;

inti,n,place;

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

wf-fopen("c:\testk>ut.datHw");

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

(

fscanf(fp,"Id?,4n);

place■fun(n);

fprintf(wff”%d\n”,place);

fclose(fp);

fclose(wf);

序:)

24.請編寫一個函數(shù)voidproc(char*str),其功能是:將字符串str中所有

下標(biāo)為偶數(shù)位置上的字母轉(zhuǎn)化為大寫(若該位置上不是字母,則不轉(zhuǎn)換)。

例如,若輸入字符串:“thankyou6verymuch",則應(yīng)輸出:

“TbAnKYoU6vErYMuCh”。注意部分源程序給出如下。請勿改動main

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

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

FIncludeVcooio.b>

9includeVZ&OLb>

*includeVsidUKh>

voidpruc<char?Mr)

RidYAMI)()

ciuiftt£51].

?yw<<^ii("CI.S">i

prtnt(<*Ptc?*?*?t*rancharacterBtnn*

wvtlMn$0cluirMk9er?i\nw)?

gcis(tt)?

printf<<\?\nAhrrchancingubcMring\a%>*.11)1

proc<tt)1

prmtfC*\nbcconKB\n%?"?"一

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

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

其功能是根據(jù)以下公式求兀的值(要求精度0.0005,即某項小于0.0005

時停止迭代)O

^=I+±+p^1x2x3+Ix2xlx4

233x53x5x73x5x7x9

1x2x…x〃

3x5x???x(2n+1)

程序運(yùn)行后,若輸入精度0.0005,則程序應(yīng)輸出為3.140578。

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

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

#include<math.h>

doublefun(doubleeps)

(

)

voidmain()

(

doublex;

printf('Inputeps:");

scanf("%lf',&x);

printf("\neps=%lf,PI=%lf\n,5,x,fun(x));

)

26.學(xué)生的記錄由學(xué)號和成績組成,M名學(xué)生的數(shù)據(jù)已在主函數(shù)中放人

結(jié)構(gòu)體數(shù)組stu中,請編寫函數(shù)proc(),它的功能是:把指定分?jǐn)?shù)范圍

之外的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,分?jǐn)?shù)范圍之外的學(xué)生人數(shù)由函

數(shù)值返回。

例如,輸入的分?jǐn)?shù)是70和79,則應(yīng)當(dāng)把分?jǐn)?shù)低于70和高于79的學(xué)生

數(shù)據(jù)輸出,不包含70分和79分的學(xué)生數(shù)據(jù)。主函數(shù)中把70放在low

中,把79放在heigh中。

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

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

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

試題程序:

gMidud*k>

WdefineMl?

typcdefMruci

duirHMtn[IO]i

I*-i

STREC,

mipror<STREC???STREC?b?mfl?uithX

voidmain()

STRfl1MU(M]?<(*<;ADOSa.SSK<*(^003*,<M,

(*GA002*.SOhlPA004.?

<aGAOOP.MMaGA<X)7fl.74h

《?GA0Q8??N)?<.GA006?.891?

<<GA0i$-.901PAO】3'?

<?GAOI2".”1?C?;AO14?.8Z),

rGA0ir.73KI*GA0n\69h

<wGAOiaa.MU(aGAO)S*.MHs

STRECh(M]i

mti.■?low.hngh*ti

|mtit(<*EiMrr2fen?<rrnumberlow&

Knght

?canf(*KdHd*?(low?the<h>i

lf(h?cbVlow>

t*he?ch|

heigh*lowi

loft.

A*:proc(sin?h?low?lw<h)?

prtfit(<,ThcwiwdcAt'?<Utaoui

Kd------Kdi\a*?low?het<h)?

+)

prifitfc*K?w.h(i3.aum?

〃■掰指定分?jǐn)?shù)越■內(nèi)立學(xué)生妃量

pHfll(<*\ll")|

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

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

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

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

是:?????ABCDEFG".

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

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

tinchide<stdio.h>

voidfun(chArea)

main()

|char?[8i];voidNONO();

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

fun(?);

printf("Tbestringafterdeleted:\nM);puls(s);

NONO();

I

voidNONO()

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

FILE■in,■out;

mli;chart[81];

,

m=fopoi(-in.dal"f"r");

outsfbpen(ffoul.dat",ww");

ibr(i-0;i<10;i??)

I

n

bcanf(in("%8;

Ma

^printf(outv%s\n,?);

I

fd?e(in);

Ho-g);

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

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

fun(),其功能是統(tǒng)計s所指字符串中的數(shù)字字符個數(shù),并將其作為函

數(shù)值返回。例如,s所指字符串中的內(nèi)容是

2def35adh253kjsdf7/kj8655x,函數(shù)fun()返回值為11注意:部分源程序在

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

函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:

舅1tinclude<stdio.h>

2voidNONO();

3intfun(char*s)

5

6}

7main()

8{char*s=n2def35adh253kjsdf

7/kj8655x";

9printf("%s\nw,s);

10printf(',%dKn*1,fun(s));

11NONO();

12}

13voidNONO()

M{/?本函數(shù)用于打開文件、輸入數(shù)據(jù)、調(diào)

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

15FILE*fp,?wf;

16inti;

17chars[256];

nMnM

嘉fp=fopen(in*datrr);

19wf=fopen(Mout.dat11,www);

20for(i-0;i<10;i++){

21fgets(sf255,fp);

,"

Wfprintf(wf,%d\n"rfun(s));

9Efclose(fp);

fclose(wf);

■)

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

案的項目中包含一個源程序文件progl.c。在此程序中,請編寫一個函

數(shù)fun(),用來求出數(shù)組中值最大的元素在數(shù)組中的下標(biāo)并將其存放在

k所指向的存儲單元中。

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

876675896101301401980431451777則輸出結(jié)果為6,980□

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

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

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

1tinclude<conio.h>

2#include<stdio.h>

3#include<stdlib,h>

4intfun(int?szintt,int?k)

5{

6

7)

8voidmain()

9{

10FILE*wf;

11inta[10]={876,675,896,101,

301r401r980r431,451,777}rk;

12system(MCLSH);

13fun(a,10,&k);

14printf(w%d,%d\n",k,a[k]);

15/**************京**/

16wf=fopen(nout.daf\MwH);

w

.17fprintf(wfr%d,%d”,k,a[k]);

18fclose(wf);

19/

20}

30.有一個一維數(shù)組,內(nèi)放10個學(xué)生成績,寫一個函數(shù),求出平均分。

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

31.下列給定程序中fun()函數(shù)的功能是:將n個無序整數(shù)從小到大排序。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<stdlib.h>

fun(intn,int*a)

{inti,j,p,t;

for(j=O;j<n-l;j++)

{P=j;

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

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

if(a[p]>a[i])

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

t=i;

if(p!=j)

{t=a[j];a[j]=a[p];a[p]=t;}

putarr(ihtn,int*z)

{inti;

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

{printf("%4d",*z);

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

}printf("\n");

main()

{intaa[20]={9,3,0,4,l,2,5,6,8,10,7},n=ll;

clrscr();

printf("\n\nBeforesorting%dnumbers:\n",n);putarr(n,aa);

fun(n,aa);

printf("\nAftersorting%dnumbers:\n",n);putarr(n,aa);

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

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

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

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

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

1*include<stdio.h>

2intfun(intm)

3{intk-2;

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

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

6…

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

8if(m-k)

9return1;

10elsereturn0;

11}

12main()

13(intn;

14printf(??\nPleaseentern:w

R

scanf("%dr&n);

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

16elseprintf(WNO!\nn);

17

33.給定程序MOD11.C中函數(shù)fun的功能是:將字符串中的字符按逆

序輸出,但不改變字符串中的內(nèi)容。

例如,若字符串為abed,則應(yīng)輸出:deba。

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

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

?include<stdio.h>

2/…………found

3fun(chara)

4(if(*a)

5{fun(a*l);

6/…………found

7printf(n%cn*a);

8

9

10main()

11{chars[10]s?nabcdw;

12printf("處理前字符申=*s\n處理后字

符串s);

13fun(s);printf(w\nn);

14

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

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

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

例如,程序運(yùn)行后,輸入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;

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

while(t>=num)

pi=pi+t;

n=n+2;

s=-s;

/******

t=s%n;

pi=pi*4;

returnpi;

)

main()

{floatnl,n2;

clrscr();

printf("Enterafloatnumber:");

scanf("%f",&nl);

n2=fun(nl);

printf("%6.4An",n2);

)

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

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

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

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

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

1tinclude<stdio.h>

2intfun(intk)

3{intmc-0;

while((k>?2)&&(me<10))

(

/????????????found?

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

8(m-k;mc++;(

9k一;

10

11returnm;

12/…………"und…………/

13

14main()

15(

ww

16printf(%d\nrfun(500));

17

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

N項之和SN,直到SN+1大于q為止,q的值通過形參傳入。

SN=2/l+3/2+4/3+(N+l)/N

例如,若q的值為50.0,則函數(shù)值為49.394948。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

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

doublefun(doubleq)

{intn;doubles,t;

n=2;

s=2.0;

while(s<=q)

t=s

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

s=s+(n+l)/n;

n++;

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

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

returns;

main()

{clrscr();

printf("%Rn"Jun(50));

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

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

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

“ABCDDCBA”。

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

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

1?tinclude<stdio.h>

*

2Itinclude<string.h>

3i/*?*??*?*?*??found************/

4voidfun(chars,chart)

5(

6inti,d;

7d-strlen(s);

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

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

s[d-l-i];

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

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

12

13main()

14

15chars[100]9t(100);

16printf(H\nPleaseenterstringS:R);

w

scanf("%s#s);

17fun(s,t);

w

18printf(\nTheresultis:%s\n"rt);

19

38.給定程序MOD11.C中函數(shù)fun的功能是:先從鍵盤上輸入一個3

行3列矩陣的各個元素的值,然后輸出主對角線元素之和。

請改正函數(shù)fun中的錯誤或在橫線處填上適當(dāng)?shù)膬?nèi)容并把橫線刪除,使

它能得出正確的結(jié)果。

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

1?include<stdio.h>

2finclude<string.h>

3voidfun()

4(

5inta[3][3],sum;

6intirj;

7

8

9printf("Inputdata:");

10for(i-0;i<3;if>)

11{for(j-0;j<3;j++)

12/**w******found**********/

RR

13scanf(%d,a[i](j]);

14

15for(i-0;i<3;i++)

16sum=sum+a(i)[i];

ww

17printf(Sum?%d\nrsum);

18}

19main()

20

21fun();

22

39.給定程序M0D11.C中函數(shù)fun的功能是:在字符串的最前端加入

n個*號,形成新串,并且覆蓋原串。

注意:字符串的長度最長允許為79o

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

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

1tinclude<stdio.h>

2tinclude<string.h>

3voidfun(chars[],intn)

4(

5chara[80],*p;

6inti;

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

8s-p;

9for(i-0;i<n;i++)a[i]-**'

10do

11{a[i]?wp;

12i++;

13

14**????**??found***********

15while(*p++)

16a(i]-0;

17strcpy(sra);

18

19main()

20(intn;chars[80];

21printf(M\nEnterastring:w);

gets(s);

Mn

22printf(\nThestring\"%s\*\nrs);

23printf(w\nEntern(numberof*):

“);scanf&n);

24fun(s,n);

25printf(w\nThestringafterinsert:

\"%s\"\nw,s);

26

40.下列給定程序中,函數(shù)fun()的功能是:找出一個大于給定整數(shù)m且

緊隨m的素數(shù),并作為函數(shù)值返回。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

intfun(intm)

{inti,k;

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

{for(k=2;k<i;k++)

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

if(i%k!=0)

break;

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

if(k<i)

return(i);

)

}

main()

{intn;

clrscr();

printf("\nPleaseentern:");

scanf("%d",&n);

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

五、程序改錯題(2題)

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

形),判斷能否構(gòu)成三角形;構(gòu)成的是等邊三角形還是等腰三角形。若能

構(gòu)成等邊三角形函數(shù),返回3;若能構(gòu)成等腰三角形函數(shù),返回2;若

構(gòu)成=三角形函數(shù),返回1;若不能構(gòu)成三角形函數(shù)返回0。請修改函數(shù)

fun()中的錯誤,得出正確的結(jié)果。注意:不要改動main()函數(shù),

不能增行或減行,也不能更改程序的結(jié)構(gòu)。試題程序:

#include<stdio.h>

inifun(inty,intz)

(

i“x+y>/&&y+z>x&&x+z>y>

(

//????found?*?*

if(x==y&&y==z)

return1?

elseif(xyIly^:zlx--z)

return2,

elite

//?*?*found????

return3s

else

return0(

i

voidmairiC)

intx.y.z.shape;

print?"\nlnputx.y.z:?)i

scan”.%d%d%d*?&x,&y.i

prinif("\nx^%d.y=%d.z=%d\n"?x?y?z)i

shapc=fun(x?y?z)i

prind("\n\nThc5hapc:%d\nH.shape)?

42.

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

S7《22,4]03))e(4?*(3?$>>?((3?:>

?????(2k)2y<(2h—

例如,當(dāng)k為20時,函數(shù)的值應(yīng)為1.551759。請修改程序中的錯誤,

使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或

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

stfiduJeVstdio.h>

=mcludeVconeo.h>

9mclu4eVIL>

:includeVaih.h>

??found??

proHintk)

mtmfloat??w?p.Q,

l.Ot

wtiikrCn<

2,0?m

p■■-LOi

q-w

w?wpqi

??found??

rrtum%

fvMMni*CI

ptmtlC

六、操作題(2題)

43.以下函數(shù)用來求出數(shù)組的最大元素在數(shù)組中的下標(biāo)并存放在k所指

的存儲單元中。請?zhí)羁铡?/p>

#include<conio.h>

#include<stdio.h>

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

{inti;

*k=0;

[1

if(s[*k]<s[i])*k=i;

return[];}

main()

{inta[10]={876,675,896,101,301,401,980,431,451,777),k;

fun(a,10,&k);

printf("%d,%d\n",k,a[k]);}

44.執(zhí)行以下程序后的輸出結(jié)果是【】。

main()

{inta=10;

a=(3*5,a+4);printf("a=%d\n",a);

參考答案

1.22

2.54321

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

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

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

4.實(shí)體聯(lián)系圖或E-R圖實(shí)體聯(lián)系圖或E-R圖解析:實(shí)體聯(lián)系圖(B-R圖)

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

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

5.22解析:'W13':表示八進(jìn)制數(shù)13表示的ASCII字符,是一個字符,

占一個字節(jié);而飛12”是個字符串,除了八進(jìn)制數(shù)12表示的ASCII字符

占一個字節(jié)外,還有在字符串的末尾加上串結(jié)束標(biāo)志所以共有2

個字節(jié)。

6.ar=9ar=9ar=llar=9ar=9ar=ll解析:本題綜合考查了for循環(huán),switch

語句及宏替換等幾個知識點(diǎn)。j=3時,執(zhí)行PR(*(--p));輸出數(shù)組元素a[4]

的值;j=2時,執(zhí)行PR(*p++);取出p所指位置的元素a[4],然后p++;

當(dāng)J=1時,執(zhí)行PR(*p++);取得是數(shù)組元素a[6]的值llo

7.3131解析:在函數(shù)調(diào)用時,形參值和改變,不會改變實(shí)參的值。

8j++a[j]>a[j]

9.從定義到本源文件結(jié)束從定義到本源文件結(jié)束解析:C語言規(guī)定,宏

名的有效范圍為從定義宏到本源程序結(jié)束。

10.0

11.D

\n首先計算1與2的或運(yùn)算,再將其結(jié)果與3進(jìn)行“與”運(yùn)算,結(jié)果為

00000011,即十進(jìn)制數(shù)3。

\n

12.D函數(shù)原型“fread(void*buffer,sizetsize,sizetcount,FILE*stream)”

的功能是從一個文件流中讀數(shù)據(jù),讀取count個元素,每個元素size字

節(jié)。如果調(diào)用成功,返回count。buffer用于接收數(shù)據(jù)的內(nèi)存地址,大小

至少是size*count字節(jié);size是單個元素的大小,單位是字節(jié);count是

元素的個數(shù),每個元素是size字節(jié);stream是輸入流。故本題答案為D

選項。

13.D

在C語言中,字符串常量是用雙引號標(biāo)注的字符序列,因此B選項和

C選項不正確。字符序列中可包含一些轉(zhuǎn)義字符,轉(zhuǎn)義字符以“\\”開

頭。A選項中包含3個前兩個(\\\\)代表一個“\\”字符,后面一個為

因為被看作一個所以該字符串缺少一個結(jié)束的因此

A選項不正確。D選項的兩個“”之間沒有任何字符,代表的是一個空

串,是合法的字符串常量,因此D選項正確。B選項的abc應(yīng)該使用

雙引號標(biāo)注。故本題答案為D選項。

14.A解析:本題考查邏輯與運(yùn)算符&&。在C語言中使用運(yùn)算符“&&”

連接兩個表達(dá)式,也可以表示邏輯與運(yùn)算符。在C語言中不允許出現(xiàn)a

<=b<=c這種格式。

15.D解析:邏輯運(yùn)算符兩側(cè)的運(yùn)算對象可以是任意合法的表達(dá)式。邏輯

表達(dá)式的運(yùn)算結(jié)果或者為1(“真”)或者為0(“假”)。

16.D數(shù)據(jù)的存儲結(jié)構(gòu)是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機(jī)存儲空間中的存放

形式,一種數(shù)據(jù)結(jié)構(gòu)可以根據(jù)需要采用不同的存儲結(jié)構(gòu),用的存儲結(jié)構(gòu)

有順序和鏈?zhǔn)浇Y(jié)構(gòu)。用不同的存儲結(jié)構(gòu),其處理的效率是不同的。

17.A

解析:光纜是傳輸多媒體信息的通道,不能用以存儲多媒體信息。

18.A

19.D解析:程序第1次執(zhí)行for循環(huán)時,i=0,兩條if語句中的表達(dá)式

都不成立,執(zhí)行i++;s+=i;此時i為1,s為1第2次循環(huán),兩條if語

句中的表達(dá)式也不成立,執(zhí)行i++,s+=i,此時i為2,s為3;……;當(dāng)

i=3時,執(zhí)行continue,結(jié)束本輪循環(huán),不執(zhí)行i++;繼續(xù)執(zhí)行下一輪循

環(huán),這樣一來i值始終為3,繼續(xù)continue,無終止條件,進(jìn)入死循環(huán)。

20.CC選項中不能含有逗號,所以“1,234”不能用作C語言程序的合法

常量。B選項表示的是八進(jìn)制的常量,D選項表示的是十六進(jìn)制的常量。

故本題答案為C選項。

21.

【考點(diǎn)分析】

本題考查:查找結(jié)構(gòu)體數(shù)組中的最小數(shù)據(jù),需要通過for循環(huán)語句和if

條件語句來完成。

【解題思路】

本題中第一個循環(huán)語句的作用是遍歷數(shù)組求出最低分?jǐn)?shù),第二個循環(huán)

語句的作用是將數(shù)組中的元素與最低分比較,查找是否存在與最低分

相等的成績。

22.

【解析】題目要求不能用C語言提供的字符串函數(shù),可以利用移動字符

串指針來實(shí)現(xiàn),首先移動字符串指針到第一個不是*的位置,通過指針

的移動,來實(shí)現(xiàn)把第一個不是星號的字符與最后一個不是星號的字符放

到a數(shù)組中,最后用‘'0'來作為字符串結(jié)束的標(biāo)志。

23.

int量帆計位”

while(n/lO)〃料備是否為0,若不為O.bita*1,4

*以10,it修判斷

I

bitsx;

n-n/10;

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

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

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

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

24.

【解析】要將字符串str中下標(biāo)為偶數(shù)位置上的字符轉(zhuǎn)化為大寫字母,

首先應(yīng)該判斷字符串str中下標(biāo)為偶數(shù)位置上的字符是否為小寫字母,

若是將其轉(zhuǎn)化為大寫字母.若不是不做任何變化。

25.doublefun(doubleeps)

(

doubles=0.0,sl=1.0;

intn=l;

while(sl>=eps)/*當(dāng)某項大于精度要求時,繼續(xù)求下一項*/

{s=s+sl;/*求和*/

sl=sl*n/(2*n+l);

/*求多項式的每一項*/

n++;

)

return2*s;

)

該題考核的是通過迭代法求給定多項式的值。迭代法是讓計算機(jī)對一組

指令(或一定步驟)進(jìn)行重復(fù)執(zhí)行,在每次執(zhí)行這組指令(或這些步驟)時,

都從變量的原值推出它的一個新值。需要注意變量的數(shù)據(jù)類型和賦初值

操作。

定義double類型變量s,并為其賦初值,用來存放多項式的某一項和

最后的總和。從第2項開始,以后的每一項都是其前面一項乘以

n/(2*n+l)o程序用si來表示每一項,用s表示求和后的結(jié)果。需注意

變量si和s的初值都為1.0,因為循環(huán)變量從第2項開始累加。

26.

【解析】題目要求把指定范圍之外的數(shù)放到h中,將每一個學(xué)生的成

績與指定的成績相比較,將符合條件的學(xué)生成績放在數(shù)組b中,并將

符合要求的學(xué)生個數(shù)返回給主函數(shù)。

27.

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

【考點(diǎn)分析】

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

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

【解題思路】

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

除。

【解答本題】

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

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

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

【解題寶典】

要刪除字符串中的指定字符,我們通常采用保留非指定字符的方法。

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

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

字符。

28.intfun(char*s)

2;{intn=0;

3char*p;

4:;for(p=s;*p!=,\\0';p_L+)

if((*p>,o,)&&(<,9,))

6n++;

7retumn;

8}要統(tǒng)計字符串中數(shù)字字符的個數(shù),首先應(yīng)定義變量n,并將其初始化

為0,然后遍歷字符串,逐個判斷字符是否為數(shù)字字符,判斷條件為該

元素的ASCII值在字符。和9的ASCII值之間,若判斷條件成立,則

使n的值加1,否則,繼續(xù)判斷下一個字符,直到字符串結(jié)束。

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

2{

3Inti;

4*k=0;/*k所指的數(shù)是數(shù)組的下

5標(biāo)*/

6for(i=0;i<t;i++)hif(s[*k]<s[i])*k=i;/*找到數(shù)組中值最大的元素,把該元

素的下標(biāo)賦給k所指的數(shù)*/

7returns[*k];/*返回數(shù)組的最大元素*/

81

<t;i++)

<>本題中使用指針變量k作為值最大的元素的下標(biāo)。使用時要注意對

k進(jìn)行指針運(yùn)算。程序一開始讓k指向數(shù)組中的第1個元素,即

*k=0o通過for循環(huán)與數(shù)組各個元素比較,找到最大值。<></t;i++)

30.\nfloataverage(floatarray[],intn)

\n{intI;

\nfloataver,sum=array[0];

\nfor(I=1;Isum=sum+an'ay[I];

\naver=sum/n;

\nreturn(aver);}

\nmain

\n{floatave,score[10];

\nintI;

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

\nscanf('%f,&score[I]);

\nave=average(score,10);

\nprintf('%f\\n',ave);}

\n

31.(1)錯誤:for(i=j+l;i<n-l;i++)正確:for(i=j+l;i<n;i++)(2)錯誤:

t=i;正確:p=i;(1)錯誤:for(i=j+l;i<n-1;i++)正確:for(i=j+l;i<

n;i++)\r\n(2)錯誤:t=i;正確:p=i;解析:該程序是對n個數(shù)實(shí)現(xiàn)從

小到大的排序,該題中先是找小輸入整數(shù)的最小項,置于指針第1個元

素的位置:再找出第2個元素至尾元素的最小項,置于第2個元素的位

置;之后順次處理后讀元素。

32.⑴k++;(2)if(m==k)(l)k++;(2)if(m==k)解析:本題中函數(shù)的功能

是判斷一個整數(shù)n是否是素數(shù)。素數(shù)是只能被1和本身整除的正整數(shù)

(>1),所以判別n是否為素數(shù),只要用2、3.........n-l這些數(shù)逐個去除

n,觀察余數(shù)是否為0即可,只要有一次相除余數(shù)為0,n就不是素數(shù),

否則n為素數(shù)。

33.(l)voidfun(char*a)(2)printf("%c"*a)

(l)voidfun(char*a)(2)printf("%c",*a),解析:本題中函數(shù)的功能

是將字符串中的內(nèi)容逆序。題干中給出的fun函數(shù)通過遞歸調(diào)用自

身,實(shí)現(xiàn)字符串的逆序。

34.(1)錯誤:while(t>=num)正確:while(fabs(t)>=num)(2)錯

溫馨提示

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

評論

0/150

提交評論