2023年安徽省合肥市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)預(yù)測試題(含答案)_第1頁
2023年安徽省合肥市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)預(yù)測試題(含答案)_第2頁
2023年安徽省合肥市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)預(yù)測試題(含答案)_第3頁
2023年安徽省合肥市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)預(yù)測試題(含答案)_第4頁
2023年安徽省合肥市全國計(jì)算機(jī)等級(jí)考試C語言程序設(shè)計(jì)預(yù)測試題(含答案)_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2023年安徽省合肥市全國計(jì)算機(jī)等級(jí)考試

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

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

一、2.填空題(10題)

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

2.下列程序的運(yùn)行結(jié)果是____o

#include<stdio.h>

main()

{intfun();

fun();

)

fun()

{staticinta[4]={1,2,3,4);

inti:

for(i:0;i<4;i++)a[i]+=a[i];

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

printf("\n");

)

3.在先左后右的原則下,根據(jù)訪問根結(jié)點(diǎn)的次序,二叉樹的遍歷可以分

為三種;前序遍歷、【】遍歷和后序遍歷。

4.有以下程序

main()

{intt=l,i=5;

for(;i>=0;i—)t*=i;

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

)

執(zhí)行后輸出結(jié)果是______o

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

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

6.以下程序的功能是計(jì)算:s=l+12+123+1234+12345。請(qǐng)?zhí)羁铡?/p>

main()

{intt=O,s=O,i;

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

{t=i+;s=s+t;}

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

)

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

main()

{inta=l,b=10;

do

{b-=a;a++;}while(b—<0);

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

)

8.下面程序的輸出結(jié)果是()。

main()

{inti=0,a=0;

while(i<20)

{for(;;)

{if((i%10)==0)break;

elsei—;}

i+=ll;

a+=i;

)

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

}

9.一個(gè)模塊直接調(diào)用的其他模塊的模塊個(gè)數(shù)稱為o

10.以下程序中,函數(shù)SumColumMin的功能是:求出M行N列二維數(shù)

組每列元素中的最小值,并計(jì)算它們的和值。和值通過形參傳回主函數(shù)

輸出。請(qǐng)?zhí)羁铡?/p>

#defineM2

#defineN4

voidSumColumMin(inta[M][Nl,int*sum)

{inti,j,k,s=0;

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

{k=0;

for(j=l;j<M;j++)

if(a[k][i]>aU][i])k=j;

s+=a[k][i];

)

*sum=s;

)

main()

{intx[M][N]={3,2,5,1,4,l,8,3},s;

SumColumMin([]);

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

二、單選題(10題)

11.

設(shè)有定義iRtrurtIchartnadtf)2j;inlnum!sdauUrniun2;!t)?t2;,

若變量均已正確賦初值,則以下語句中

錯(cuò)誤的是()o

A.tl=t2;

B.t2.numl=tl.numl;

C.t2.mark=tl.Mark

D.t2.num2=tl.hum2;

12.

(3)在軟件生命周期中,能準(zhǔn)確地確定軟件系統(tǒng)必須做什么和必須具備哪些功能的階段是

().

A)需求分析B)詳細(xì)設(shè)計(jì)C)軟件設(shè)計(jì)D)概要設(shè)計(jì)

13.有下列程序:

#include<stdio.h>

main()

I

charb[]="happychristmas",k;

for(k=0;b[k];k++)

I

if(b[k]<<m')

b[k]=b[k]-'a'+'A';

printf("%c",b[k]);

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

A.hAppychristmAs

B.happychristmas

C.HAppyCHrlstmAs

D.HAPPYCHRISTMAS

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

main

{charx=OxFFFF;printf("%d\n",x-);}

A.-32767B.FFFEC.lD.32768

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

A.inta[5]={0,123,4,5};

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

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

D.inta[5]="0123";

16.有以下程序:

#include<stdio.h>

#include<string.h>

main()

{chara[]="THIS\O",*b="OK\0\0”;

printf("%d,%d,%d,%d”,strlen(a),sizeof(a),strlen(b),sizeof(b));

)

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

A.4,6,2,4B.4,4,4,1C.6,5,2,1D.6,4,2,4

17.以下不屬于C語言整數(shù)的是()。

A.12fB.25uC.-32D.+20L

18(28)以下對(duì)C語言中聯(lián)合類型數(shù)據(jù)的正確敘述是().

A)定義了聯(lián)合變最后,即可引用該變量或該變域中的任意成員

B)一個(gè)聯(lián)合變量中可以同時(shí)存放其所有成員

C)聯(lián)合中的各個(gè)成員使用共同的存儲(chǔ)區(qū)域

D)在向聯(lián)合中的一個(gè)成員進(jìn)行賦值時(shí),聯(lián)合中其他成員的值不會(huì)改變

19.假定下列x和y均為int型變量,則不正確的賦值為()。

A.x+=y++B.x++=y++C.x=++yD.++x=++y

20一個(gè)長度為99的循環(huán)鏈表,指針A和指針B都指向了鏈表中的同一

個(gè)節(jié)點(diǎn),A以步長為1向前移動(dòng),B以步長為3向前移動(dòng),一共需要同

時(shí)移動(dòng)多少步A和B才能再次指向同一個(gè)節(jié)點(diǎn)0。

A.99B.100C.101D.49E.50F.51

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

21.

編寫函數(shù)fun(),其功能是:根據(jù)以下公式求的值(要求精度0.0005,

即某項(xiàng)小于0.0005時(shí)停止迭代)。

?,,1^.12,I2J,1234.12-a

2113535T157135-

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

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

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

tftcludch>

3inciiMkVcoaicxh>

?mcludrVath>h>

doublefun(doubleep?)

(

voidmain()

doublexi

pnnif<*1npuiep?i*)i

BcanfLW.A*

prmtlC^Xfwp*,%M?PI-Kl(\a9?

??fun(s>)i

22.n個(gè)人的成績存放在score數(shù)組中,請(qǐng)編寫函數(shù)proc(),它的功能是

將低于平均分的人數(shù)作為函數(shù)值返回,將低于平均分的分?jǐn)?shù)放在down

所指的數(shù)組中。例如,當(dāng)score數(shù)組中的數(shù)據(jù)為{99,80,40,56,59,

84,60,76,100}時(shí),函數(shù)返回的人數(shù)應(yīng)該是4,down中的數(shù)據(jù)應(yīng)為

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

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

語句。試題程序:

9aneludek>

9inriudeVcooio.h>

Stnrludr<Ndxxh>

SincludeV,tr?ng.h>

uMproc(miscorrf;.mt???m4owrCl>

roidmaiii()

inil?n?down[9]i

mitcorrO—<99。*0?40*”?5九弘?

?0?7<.|00|1

?ywtem(*CLS*)i

pvoe<Mx>r*?9?down)?

pnntf(*\ndowntotbeaverage?corraret*)?

k>r<i?Oiynil+?>

pnntf(*%d*?downf|]>i

prmt"?\n*)t

23.

請(qǐng)編寫函數(shù)proc(),它的功能是計(jì)算下列級(jí)數(shù)和,和值由函數(shù)值返回。

sum=l-x+x2/2!-x3/31+...+(-l*x)n/n!例如,當(dāng)n=23,x=0.3時(shí),

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

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

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

*mcluje<.?tdbhb>

8include<eomo,h>

<mdidh>

”Vaih.h>

doubleproctdoublr??mi?>

voidmaifi<)

*CLS*>(

pnfitl<*K(M?pror<0.3?23))i

24.

編寫函數(shù)proc,它的功能是:計(jì)算和輸出下列級(jí)數(shù)的和。S=1/(12)

+1/(23)+...+"(n(n+l))例如,當(dāng)n=20時(shí),函數(shù)值為0.952381。

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

任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語句。試

題程序:

stndtxl*Vjirtlbb.h>

Utndude<conidh>

,indud#b>

doubleproctmin>

VOtdBTVItflC>

■ee<"CLS*)I

prtni?*Sf\ne?proc(IO>)^

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

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

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

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

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

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

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

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

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

voidfun(char*s,chartf])

(

)

main()

(

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

printf(Msg);

scanf("%s",s);

fun(s,t);

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

)

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

的項(xiàng)目中包含一個(gè)源程序文件prog“。在此程序中,定義了NxN的二

維數(shù)組,并在主函數(shù)中自動(dòng)賦值。請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是使

數(shù)組上三角元素中的值乘以m。若m的值為2,a數(shù)組中的值為197238456

則返回主程序后a數(shù)組中的值應(yīng)為2181426164512注意:部分源程序在

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

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

序:l#include2#include3#include4#include5#defineN56voidfun(inta[][N],int

m)7{89}lOmain()ll{l2inta[N][N],m,i,j;13FILE*out;14printf("***Thearray

***\n");15for(i=0;i<n;i++)

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

27{for(j=0;j38{for(j=O;j<n;j++)

39fprintf(out,"%4d",a[i][j]);40fprintf(out,"\n");41}42fclose(out);43/*******

**found********/44}lvoidfun(inta[][nl,intm)2{3inti,j;4for(j=0;j<n;j++)

5:for(i=0;i<=j;i++)6:a[i][j]=a[i皿*m;/*上三角元素中的值乘以m*/

27.編寫函數(shù)fun,其功能是:求出1?1000之間能被7或11整除,但

不能同時(shí)被7和11整除的所有整數(shù),并將其放在a所指的數(shù)組中,通

過n返回這些數(shù)的個(gè)數(shù)。

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

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

號(hào)中填人你編寫的若干語句。

#inr|udt*<h>

voidfun(ini?a,int?n)

tnain()

Iiniaa[1000],n,k(

voidNONO();

fun(aa,&n);

H>r(k=0;k))

if((k?!)%10==0)pnntf(M\nM):

e!wprintf(**%5d*.aak]);

NONO();

voidNONO()

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

in<?a[1000]en,k;

FILEafp:

S-foprn("out.dat"w**)j

fun(aa.An);

fnr(ks0;k<n;k4?)

w

if((k?1)%10??O)fprintf(fpt*\n);

rlwfprintf(fp.*%5d".aa[k]):

岫y(fp);

28.

編寫函數(shù)intproc(intlim,intaa[M]),該函數(shù)的功能是求出小于或等于

lim的所有素?cái)?shù)并放在aa數(shù)組中,該函數(shù)返回所求出的素?cái)?shù)。例如,

若輸入12時(shí),則輸出:235711。注意:部分源程序給出如下。請(qǐng)

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

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

*includeVstdlib.h>

:include<conio.h>

辛includeVstdio.h>

宰defineM100

intproc(intlim*intaa[M])

voidmain(>

(

int

intarrfMli

^ystemC"Cl^")i

printfL輸入?個(gè)整數(shù)?),

"%d"?&limit)?

sum=proc(limit?arr)i

for(i-10;iVsum?i++)

(

if(i%10==0&&i!-0)〃每行輸出10個(gè)數(shù)

printf("\n*)?

printf(H%5d*?arr[ij)i

}

</n;j++)

</n;j++)

<n;i++)

</n;i++)

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

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

在形參n所指的存儲(chǔ)單元中。

例如,若二維數(shù)組中的數(shù)據(jù)為

13233343

14243444

15253545

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

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

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

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

試題程序:

#include<stdio.h>

voidproc(int(*s)[103,int*b,int*n,intrain.intnn)

(

}

voidmain

(

intarr[10][10]={{33,33,33,33),{44,44,44,44},

{55,55,55,55}),i,j;

inta[100]={o),n=o;

printf("Thematrix:\n");

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

(

for(j=O;j<4;j++)

printf("%3d",arr[i][j]):

printf("\n");

)

proc(arr,a,&n,3,4):

printf("TheAarray:\n");

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

printf("%3d",a[i]):

printf("\n\n");

30.下列程序定義了MxM的二維數(shù)組,并在主函數(shù)中自動(dòng)賦值。請(qǐng)編

寫函數(shù)fun(intarr[][M]),該函數(shù)的功能是使數(shù)組左下半三角元素中的

值全部置成0。例如,arr數(shù)組中的值為:

I23

■rrw4S6

789

MlMtWRFrf?rrCtOI中仲值應(yīng)力.

023

f00<

AAA

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

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

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

試題程序:

ssmeltMlkVCOIMXh>

:£meludrVadic.h>

9include<Csldbk.h>

smcludrVlime.h>

9defineM5

midpfor<IMarr[]£M2>

Eidmam<)

initrr£M'[M,.i?ie

ay?iem(*CLS")?

pniiifc?????Tbtarray????\?*)?

?r?nd《(urvHgrMxl)timc<NULL))i

(or(i-Oit^Mi>4"+>

//i*t-個(gè)■機(jī)的5?SM?

r?nd<>MIOI

print”?%4d"?.rr[i]3)B

printf(a\n*)i

proc^arr)(

pnmfCTHERESVLT\n*)>

fort*>

foHj?0,?+)

pEMf(?為..tfG:[j]”

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

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

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

例如,若輸入:edeba,則應(yīng)輸出:abcdeo

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

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

1linclude<stdio.h>

2linclude<string.h>

3voidfun(chart[])

4(

5charc;

6int1,j;

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

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

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

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

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("XnPleaseenteracharacter

string:R);

22gets(s);

23printf(w\n\nBeforesorting:\n

\W,s);

24fun(s);

25printf("XnAftersortingdecendingly:

\n\W,s);

26

32.下列給定程序中,函數(shù)fun()的功能是:通過某種方式實(shí)現(xiàn)兩個(gè)變量

值的交換,規(guī)定不允許增加語句和表達(dá)式。例如變量a中的值原為8,

b中的值原為3,程序運(yùn)行后a中的值為3,b中的值為8。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

intfun(int*x,inty)

intt;

/***************'£iQund***************/

t=x;x=y;

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

return(y);

)

main()

{inta=3,b=8;

clrscr();

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

b=fun(&a,b);

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

)

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

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

例如當(dāng)s中的數(shù)為87653142時(shí),t中的數(shù)為75310

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

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

試題程序:

#include<stdio.h>

#include<conlo.h>

voidfun(longs,long*t)

{intd;

longsl=l;

/***************************/

t=0;

while(s>0)

{d=s%10;

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

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

)

34.給定程序M0D11.C中函數(shù)fun的功能是:從低位開始取出長整型

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

低位仍在低位。

例如,當(dāng)S中的數(shù)為:7654321時(shí),t中的數(shù)為:753lo

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

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

1tinclude<stdio.h>

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

3voidfun(longs,longt)

4{longsl-10;

5*t-s%10;

6while(s>0)

7(s■s/100;

8*t-s%10,si+*t;

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

10si■sl*100;

11)

12)

13main()

14{longsrt;

15printf("\nPleaseenters:;

R

scanf("%ld#&s);

16fun(sr&t);

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

18

35.下列給定程序中,函數(shù)fun()的作用是,將字符串tt中的大寫字母都

改為對(duì)應(yīng)的小寫字母,其他字符不變。例如,若輸入"Ab,cD",則輸出

"ab,cd"0

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

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

試題程序:

#include<stdio.h>

#include<string.h>

#include<conio.h>

char*fun(chartt[])

(

inti;

for(i=0;tt[i];i++)

/***************************/

{if(('A,<=tt[i]||(tt[i]<='z'))

tt[i]+=32;}

return(tt);

)

main()

{inti;

chartt[81];

clrscr();

printf("\nPleaseenterastring:");

gets(tt);

printf("\nTheresultstringis:\n%s",fun(tt));

)

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

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

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

“ABCDDCBA”。

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

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

1?include<stdio.h>

2*include<string.h>

3/…………"und…………/

4voidfun(chars,chart)

5(

6inti,d;

7d?strlen(s);

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

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

Rw

scanf(%s#s);

17fun(s,t);

wn

18printf(\nTheresultis:%s\nrt);

19

37.給定程序MODU.C中函數(shù)fun的功能是:用下面的公式求兀的近

似值,直到最后一項(xiàng)的絕對(duì)值小于指定的數(shù)(參數(shù)num)為止:

一xM1.I11???

4357

例如,程序運(yùn)行后,輸入0.0001,則程序輸出3.1414°

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

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

**include<math.h>

2!finclude<stdio.h>

?

3;floatfun(floatnum)

{ints;

floatn,t,pi;

s*1;

while(t>=num)

pi=pi?t;

n?n?2;

12!s?-s;

13I/?肯?★???**■■??found*

14\t?s%n;

15

16pi-pi?4;

17returnpi;

18

19main(J

20;(floatnl,n2;

21!printf("Enterafloatnumber:w);

22;scanf(0%f&nl);

23:n2-fun(nl);

Hw

24iprintf(%6.4f\nrn2);

25?1

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

行3列矩陣的各個(gè)元素的值,然后輸出主對(duì)角線元素之和。

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

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

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

1;#include<stdio.h>

2Ifinclude<string.h>

3voidfun()

4(

5inta[3][3],sum;

6intj;

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

8!;

9jprintf("Inputdata:w);

10;for(i-0;i<3;i*+)

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

12*********/

wR

13scanf(%dra[i](jj);

14

15for(i-0;i<3;

16sum-sum*a(i)[i];

Hw

17printf(Sum?%d\nrsum);

18}

19main()

20(

21fun();

22

39.下列給定的程序中,函數(shù)fun()的功能是;將s所指字符串中出現(xiàn)的

n所指字符串全部替換成t2所指字符串,所形成的新的字符串放在w所

指的數(shù)組中。在此處,要求H和t2所指字符串的長度相同。例如:當(dāng)

s所指字符串中所指的內(nèi)容為abcdabfab,tl所指字符串中的內(nèi)容為ab,

t2所指字符串中的內(nèi)容為99時(shí),結(jié)果在w所指的數(shù)組中的內(nèi)容應(yīng)為

99cd99f99。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

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

intfun(char*s,char*tl,char*t2,char*w)

inti;char*p,*r,*a;

strcpy(w,s);

while(*w)

{p=w;El;

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

while(r)

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

elsebreak;

if(*r=='\0')

{a=w;r=t2;

/*************■J^Qurid**************/

while(*r){*a=*r;a++;r++}

w+=strlen(t2);

elsew++;

)

main()

{chars[100],tl[100],t2[100],w[100];

clrscr();

printf("\nPleaseenterstringS:");

scanf("%s",s);

printf("\nPleaseentersubstringtl:");

scanf("%s",tl);

printf("\nPleaseentersubstringt2:");

scanf("%s",t2);

if(strlen(tl)==strlen(t2))

(

fun(s,tl,t2,w);

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

)

elseprhitf("Error:strlen(t2)\n");

40.給定程序中,函數(shù)fun()的功能是:使數(shù)組中的元素的值縮小5倍。

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

floatmflO];

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

intfun(void)

intj;

printf("Insubfuncaftercalling\n");

for(j=O;j<10;j++)

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

print("%f",m[j]%5);

)

main()

inti;

printf("Inmainbeforecalling\n");

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

m[i]=i+20;

printf("%f",m[i]);

)

fun();

printf("\nlnmainaftercalling\n");

fbr(i=O;i<10;i++)

printf("%f",m[i]/5);

)

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

41.

下列給定程序中,函數(shù)fun的功能是:從整數(shù)10-55,查找能被3整除且

有一位上的數(shù)值是5的數(shù),把這些:故放在b所指的數(shù)組中,這些數(shù)的

個(gè)數(shù)作為函數(shù)值返回。規(guī)定函數(shù)中al放位數(shù),a2放十位數(shù)。

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

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

試題程序:

include<stdio.h>

i;itfun(int*b)

{intk,al,i=0;

for(k=:IO;k<=55;k++)

產(chǎn)m**********a)und*****************/

a2=k/tO;

al=k-a2*10;

if((k%3^==0&&a2==5)fl(k%3==0&&

al==5))

).

/*****************lhund*****************/

returnk;

returnk;

ma:n()

inta[100J?k,m;

m=fuh(a);

printf(n,D]eresultis:\n");

for(k=O;k<m;k++)

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

printf「\n”X

42.

下列給定程序中函數(shù)fun()的功能是:求出如下分?jǐn)?shù)序列的前n項(xiàng)之

和,結(jié)果通過函數(shù)值返回。

T2.*2T*AT*TA*1T2*n

例如,若n=5,則應(yīng)輸出8.391667。請(qǐng)改正程序中的錯(cuò)誤,使其得出

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

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

2iftcludr<Ktdlili.h*1

UmcludrVcomo?h>

smcludeV?uliQ,h>

/????iound????

(Ufl(Mlt■)

itx?一2.bwI?c.bi

4o?ble?*0?0i

,WhlkV?)

//????????

<

????<Do?i4t>a.bi

r?iuni<?>?

rOtdNMiB<>

uitfi-6,

??tMn<-CLS*)?

(E\ATWvalwol(aBctsMi

六、操作題(2題)

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

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

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

如,輸入3個(gè)邊長為3,4,5,實(shí)際輸入時(shí),數(shù)與數(shù)之間以Enter鍵分隔

而不是逗號(hào)。請(qǐng)修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:

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

題程序:

?*ifirlodrV加點(diǎn)dh>

答includeCnuith.h>

ifiiproHsnt??mib?intc)

Ab*?>?&&a+?〉!?》

4fcbK&b--*c)

//????louad????

return11

?!”東?―■、|b""cl!>―~c>

mum2i

//????found????

eb*rviwm3i

)

ehemurnOi

voedouim()

KUa?b>r?>lMprt

prmif(M\ntnpul??b?ci?).

?enR?%d%d%di

pruidL'na**%d.b-Kd?%d\tT.a?b?c)i

Rhapceaproc(??b?c)i

prm<l("\n\nThcshape,%dXn*.shape).

44.以下程序運(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)

參考答案

1.完整性控制完整性控制

2.24682,4,6,8解析:子函數(shù)fun()的功能是將數(shù)組a中的元素都自加一

遍,然后仍然將結(jié)果存在原數(shù)組中,其實(shí)就是將數(shù)組a的每個(gè)元素都變

為原來的2倍,然后輸出。在主程序中首先通過intfun。定義了子函數(shù)

fun(),然后再調(diào)用fun()o

3.中序中序解析:在先左后右的原則下,根據(jù)訪問根結(jié)點(diǎn)的次序,二叉

樹的遍歷可以分為三種:前序遍歷、中序遍歷和后序遍歷.前序遍歷是

指在訪問根結(jié)點(diǎn)、遍歷左子樹與遍歷右子樹這三者中,首先訪問根結(jié)點(diǎn),

然后遍歷左子樹,最后遍歷右子樹;并且遍歷左、右子樹時(shí),仍然先訪

問根結(jié)點(diǎn),然后遍歷左子樹,最后遍歷右子樹。中序遍歷指在訪問根結(jié)

點(diǎn)、遍歷左了樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根

結(jié)點(diǎn),最后遍歷右子樹:并且遍歷左、右子樹時(shí),仍然先遍歷左子樹,

然后訪問根結(jié)點(diǎn),最后遍歷右子樹。后序遍歷指在訪問根結(jié)點(diǎn)、遍歷左

子樹與遍歷右子樹這三者中,首先遍歷右子樹,然后訪問根結(jié)點(diǎn),最后

遍歷左子樹;并且遍歷左、右子樹時(shí),仍然光遍歷右子樹,然后訪問根

結(jié)點(diǎn),最后遍歷左子樹。

4.00解析:本題中的for循環(huán)共執(zhí)行了6次,每執(zhí)行一次將相應(yīng)i的值

相乘,最后當(dāng)i=-1時(shí)停止循環(huán).該for循環(huán)執(zhí)行完后t的值為

5*4*3*2*1*0=0,故最后輸出I的值為0。

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

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

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

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

不能進(jìn)行人隊(duì)運(yùn)算,這種情況稱為“上溢”。

6.t*10或或10*t解析:本題要求累加一系列有規(guī)律的數(shù),從

輸出結(jié)果來看,s保存的是最終結(jié)果,而s在循環(huán)體中,每次累加一個(gè)

t,則說明t在5次循環(huán)中分別等于1.12、123、1234、12345;而t每

次循環(huán)等于“填空內(nèi)容”加上循環(huán)變量i.又因?yàn)閕在5次循環(huán)中分別等

于1、2、3、4,5,所以t每次循環(huán)要加的“填空內(nèi)容”應(yīng)分別為0、10、

120,1230,12340,這一系列值正好是前一次t的值的10倍.所以“填

空內(nèi)容”應(yīng)是伊10。

7.282,8解析:do...while語句的功能是:首先執(zhí)行循環(huán)體語句,然后檢

測循環(huán)控制條件表達(dá)式的值,若為真,則重復(fù)執(zhí)行循環(huán)體語句,否則退

出循環(huán)。這里程序初始時(shí)a=l,b=10,經(jīng)過操作b-=a;a++后b=9,a=2,

判斷條件b-<0不成立,退出循環(huán),但b的值被減1,因此結(jié)果為:

a-2,b=8°

8.3232解析:while(表達(dá)式)的功能是:首先計(jì)算表達(dá)式的值.若為真,

則執(zhí)行循環(huán)體語句,執(zhí)行完畢,再計(jì)算表達(dá)式的值.若仍為真,則重復(fù)

執(zhí)行循環(huán)體語句,直到表達(dá)式的值為假,結(jié)束while語句的執(zhí)行,繼續(xù)

執(zhí)行while語句后面的語句;i=0時(shí)滿足循環(huán)條件,也滿足if的條件,

執(zhí)行語句得i=U,a=U,第2次循環(huán)不滿足if的條件,執(zhí)行i—,i=10,

執(zhí)行i+=ll;a+=i后,得i=21,a=32,不滿足i<20,循環(huán)結(jié)束。

9.扇出扇出解析在結(jié)構(gòu)圖中,調(diào)用一個(gè)給定模塊的模塊個(gè)數(shù)稱為扇入,

一個(gè)模塊直接調(diào)用的其他模塊個(gè)數(shù)稱為扇出。

lO.x&sx,&s解析:函數(shù)SumColumMin中變量k存放一列數(shù)組元素中

值最小的數(shù)組元素的行標(biāo),函數(shù)通過形參sum帶回值,sum是指針變量,

將s中的值賦給*sum??諡楹瘮?shù)調(diào)用,函數(shù)SumColumMin有兩個(gè)形參,

二維數(shù)組和指針變量,故空中應(yīng)填x,&so

11.C

結(jié)構(gòu)體變量中的第一成員都是數(shù)組,不能直接將變量tl的成員mark數(shù)

組的地址賦給另一個(gè)變量t2的成員mark數(shù)組的地址。因?yàn)榈刂范际?/p>

固定值,不能被賦值。結(jié)構(gòu)體可以進(jìn)行整體的賦值。

12.A

13.C

程序定義一個(gè)字符數(shù)組b和一個(gè)字符變量kofor循環(huán)通過循環(huán)變量

k,遍歷數(shù)組b中的各個(gè)字符,通過if語句判斷當(dāng)前下標(biāo)為k的字符的

ASCII值與字符'm,的ASCII值的大小,ASCII值小于,m,的ASCII值的

字符改成大寫字母(b[k]=b[k]」a=A),然后輸出b[k]。在字符串

“happychristmas”中,ASCII值小于'm'的字符有h,a,c,h,i,a,所

以程序輸出:HAppyCHrlstmAso本題答案為C選項(xiàng)。

14.C

因?yàn)閤=0xFFFF=11111111,因此當(dāng)以整型形式輸出時(shí)對(duì)應(yīng)的數(shù)為一

lo

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

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

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

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

16.Astrlen函數(shù)求得參數(shù)中字符串的長度(不包括字符串結(jié)束標(biāo)識(shí)“\\0”)

sizeof函數(shù)求得特定類型參數(shù)所占存儲(chǔ)空間的長度。題干中a是數(shù)組名,

由于定義時(shí)省略維數(shù)大小,因此數(shù)組大小是初始化的字符個(gè)數(shù),即a的

數(shù)組大小為6。綜上,strlen(a)只計(jì)算字符力”“S”,結(jié)果為43izeof(a)

求得數(shù)組a的大小,結(jié)果為6;指針b指向一個(gè)字符串“OKWOWO",所以

strlen(b)只計(jì)算字符結(jié)果為2;sizeof(b)求得指針占用存儲(chǔ)空間

的大小,結(jié)果為4。故本題答案為A選項(xiàng)。

17.AC語言中整型常量,從表示形式來看,有十進(jìn)制、八進(jìn)制或十六進(jìn)

制;從符號(hào)位來看,有有符號(hào)整數(shù)和無符號(hào)整數(shù)兩類。選項(xiàng)A的“12廣

是float類型的實(shí)數(shù),不是整數(shù);選項(xiàng)B的“25u”屬于無符號(hào)整數(shù);選項(xiàng)

C的“-32”是十進(jìn)制形式的有符號(hào)整數(shù);選項(xiàng)D的“+20L”是十進(jìn)制形式

的長整數(shù)。故本題答案為A選項(xiàng)。

18.C

19.B

20.A

21.

【解析】此題考查的是用迭代法求多項(xiàng)式的值。通過觀察題目中給出的

數(shù)學(xué)公式可知,后面一項(xiàng)是前面一項(xiàng)乘以n/(2*n+l),發(fā)現(xiàn)這個(gè)規(guī)律后,

問題迎刃而解。通過定義double類型變量,并且賦初值,用來存放多項(xiàng)

式的總和。此題中需要注意的是,表示每一項(xiàng)的S1和表示多項(xiàng)式之和

的s,兩者的初值都是1.O0

22.

【解析】要找到所有學(xué)生中成績低于平均分?jǐn)?shù)的人數(shù),首先需要算出所

有學(xué)生的平均成績。然后將所有學(xué)生的成績與平均成績相比較。將低于

平均分?jǐn)?shù)學(xué)生的記錄存放在新的數(shù)組中,并將低于平均分?jǐn)?shù)的學(xué)生數(shù)返

回給主函數(shù)。

23.

【解析】首先定義兩個(gè)變量分別用來存儲(chǔ)級(jí)數(shù)的和與每一項(xiàng)的分母。觀

察級(jí)數(shù)的特點(diǎn),其每一項(xiàng)的正負(fù)號(hào)是交替變化的。根據(jù)這些特點(diǎn),每增

加一項(xiàng)都需要變換符號(hào)。最后求出級(jí)數(shù)的和。

24.

【解析】首先定義一個(gè)變量來表示其和s,通過n次循環(huán)求出n項(xiàng)的和,

最后將所得到各項(xiàng)的和值返回給主函數(shù)。

25.voidfun(char*s,chart[])

(

inti,j=0,n;

n=strlen(s);

/*遍歷整個(gè)數(shù)組*/

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

/*如果元素的ASCII值為偶數(shù)*/

if(s[i]%2==0)

(

/*將元素保存到t中*/

t[j]=s[i];

j++;

)

)

要?jiǎng)h除ASCH值為奇數(shù)的字符,也就是要保留ASCII值為偶數(shù)的字符,

將ASCH值為偶數(shù)的字符保存到新字符串。所以本題的算法是對(duì)原字

符串從頭到尾進(jìn)行掃描,找出ASCII值為偶數(shù)的字符并依次存入數(shù)組。

26.1voidfun(inta[][n],intm)2{3inti,j;4for(j=0;j<="">5for(i=0;i

<=j;i++)6a[i][j]=a[i][j]*m;/*上三角元素中的值乘以m*/7}本程序

實(shí)現(xiàn)的是:矩陣上三角元素的值乘以mo上三角元素下標(biāo)的特點(diǎn)是行下

標(biāo)小于等于列下標(biāo),即"i<=『使用循環(huán)語句遍歷數(shù)組元素,第1個(gè)循環(huán)

用于控制列坐標(biāo),第2個(gè)循環(huán)用于控制行下標(biāo)。

27.

【考點(diǎn)分析】

本題考查:if語句,用來判斷能被7整除或者能被11整除,但是又不

能同時(shí)被7和11整除的數(shù),在這里充分理解“邏輯與“和“邏輯或”的區(qū)

別;for循環(huán)語句的循環(huán)變量用來控制取值范圍。

【解題思路】

該題需要運(yùn)用循環(huán)判斷結(jié)構(gòu)來實(shí)現(xiàn),其中循環(huán)語句比較容易,只要確

定循環(huán)變量的范圍即可,下面來看判斷語句,題目要求找出能被7或

11整除,但不能同時(shí)被7和11整除的所有整數(shù)。能同時(shí)被7和11整

除的整數(shù)一定能被77整除,且不能被

77整除的數(shù)不一定就是能被7或11整除的數(shù),所以可得出程序

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論