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

下載本文檔

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

文檔簡(jiǎn)介

2022年湖南省益陽市全國(guó)計(jì)算機(jī)等級(jí)考試

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

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

一、2.填空題(10題)

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

fl,fl,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");}

2.數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合,它通常包括5個(gè)部分,即數(shù)據(jù)項(xiàng)、

數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流和處理過程。

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

main()

{inta[4][4]={{l,2,3,4),{5,6,7.8},{11,12,13.14},{15,

16,17,18}};

inti=0,j=0,s=0;

while(i++<4)

(

if(i==2||i==4)continue;

j=0;

do{S+=a[i][j];j++;}while(j<4);

)

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

)

4.函數(shù)voidfun(float*sn,intn)的功能是:根據(jù)以下公式計(jì)算s,計(jì)算

結(jié)果通過形參指針sn傳回…通過形參傳入,n的值大于或等于0。請(qǐng)

填空。

s=§

42xi+1

voidfun(float*sn,intn)

{floats=0.0,w,f=-1.0;

inti;

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

{f=[】*f;

w=f/(2*i+l);

s+=w;

)

【】=S;

}

5.用十六進(jìn)制給存儲(chǔ)器中的字節(jié)地址進(jìn)行編號(hào),其地址編號(hào)從0000到

FFFF,則該存儲(chǔ)器容量是【】。

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

#include<stdio,h>

main()

{inta,b,c;

a=10;b:20;c=(a%b<1)II(a/b>1);

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

)

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

#include<stdio.h>

fun(intx)

{if(x/2>0)fun(x/2);

printf("%d",x);

)

main()

{fun(6);}

8.數(shù)據(jù)庫(kù)設(shè)計(jì)分為以下6個(gè)設(shè)計(jì)階段:需求分析階段-------邏輯設(shè)

計(jì)階段、物理設(shè)計(jì)階段、實(shí)施階段、運(yùn)行和維護(hù)階段。

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

main()

{chara[]="ABCDEFG";

char*cp=&a[7];

while(—cp>&a[0])putchar(*cp);

)

10.在關(guān)系數(shù)據(jù)庫(kù)中把數(shù)據(jù)表示成二維表,每一個(gè)二維表稱為【】。

二、單選題(10題)

11.設(shè)有定義“Charp[]={T,2,3},*q=p;",以下不能計(jì)算出一個(gè)char

型數(shù)據(jù)所占字節(jié)數(shù)的表達(dá)式是()。

A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])

12.二叉樹的第三層最少有個(gè)結(jié)點(diǎn)。

A.OB.lC.2D.3

13.已知字母A的ASCII代碼值為65,若變量kk為char型,以下不能正

確判斷出kk中的值為大寫字母的表達(dá)式是

A.kk>='A'&&kk<='Z'

B.!(kk>='A'||kk<='Z')

C.(kk+32)>=W&&(kk+32)<=2

D.isalpha(kk)&&(kk<91)

14.折半查找法的查找速度一定比順序查找法快()。

A.正確B.錯(cuò)誤

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

]社inchide<stdio.h>

mainO

{

intb[3][3]={0Il,2s0;ls2J0sL2},i,j,t=h

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

fbr(j=i;j<=i;j++)t+=b[i][b[j][i]];

printfr^6dn",t);

}

A.3B.4C.1D.9

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

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

17.在下面棧的基本運(yùn)算中,不是加工型運(yùn)算的是

A.初始化B.進(jìn)棧C.退棧D.判棧空

18.若有以下定義和語句:

chars[10]="abcd!%*s2="\nl23\\";

Drintf("%d%d\n",strlen(sl),strlen(s2));

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

A.55B.105C.107D.58

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

A.C程序中注釋部分可以出現(xiàn)在程序中任意合適的地方

B.花括號(hào)"(“和只能作為函數(shù)體的定界符

C.構(gòu)成C程序的基本單位是函數(shù),所有函數(shù)名都可以由用戶命名

D.分號(hào)是C語句之間的分隔符,不是語句的一部分

20.

(40)已知一個(gè)文件中存放若干工人檔案記錄,其數(shù)據(jù)結(jié)構(gòu)如下:

structa.?

{charnumber[100];

intage;

floatp[6];);

定義一個(gè)數(shù)組:structanumber[10];

假定文件己正確打開,不能正確地從文件中讀入10名工人數(shù)據(jù)到數(shù)組b中的是()o

A)fread(b,sizeofl[structa),10,fp);B)fbr(i=0;i<10;i-H-)

fread(b[i],sizeof(structa),l,fp);

C)fbr(i=0;i<10;i+4-)D)fbr(i=O;i<5;i-?-=2)

frcad(b+i,sizcof{structa),l,fp);fread(b+i9sezeof(stnicta),2,fp);

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

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

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

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

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

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

index存放最大值所在元素的下標(biāo)。

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

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

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

試題程序:

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

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

/*輸出一個(gè)隨機(jī)數(shù)組*/

printf(n\nH);

fun(xfnf&max,&index);

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

)

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

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

fun(),它的功能是求小于形參n同時(shí)能被3與7整除的所有自然數(shù)之

和的平方根,并將其作為函數(shù)值返回。例如,若n為1000時(shí),程序輸

出應(yīng)為s=153.909064。注意:部分源程序在文件progl.c中。請(qǐng)勿改動(dòng)

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

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

1#include<math.h>

2tinclude<stdio.h>

3doublefun(intn)

4{

5

靠}

7main()/*主函數(shù)?/

8{voidNONO();

w

9printf("s?%f\nrfun(1000));

10NONO();

篡)

12voidNONO()

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

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

FILE*fp,*wf;

inti,n;

doubles;

fp■fopen(win.datn,wrw);

18wf=fopen(Mout.datn,Hww);

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

20fscanf(fpr,?%d",&n);

21s=fun(n);

22fprintf(wf,n%f\n",s);

23)

24fclose(fp);

25fclose(wf);

26

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

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

其功能是將s所指字符串中除了下標(biāo)為奇數(shù)同時(shí)ASCII值也為奇數(shù)的字

符之外的其余所有字符全部刪除,字符串中剩余字符所形成的一個(gè)新字

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

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

ASCII值為奇數(shù),但所在元素的下標(biāo)為偶數(shù),因此需要?jiǎng)h除;而字符1

的ASCII值為奇數(shù),所在數(shù)組中的下標(biāo)也為奇數(shù),因此不應(yīng)當(dāng)刪除,

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

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

請(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,chart[])

(

)

main()

{

chars[100],t[100];

printf("\nPleaseenterstrings:");

scanfs);

fun(s,t);

printf("\nTheresultis:%

)

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

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

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

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

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

夕includehj>

doubleproHintn)

iniBI

double

prmifcnt

?mproc<n)t

prmtfC**>)>

25.請(qǐng)編寫一個(gè)函數(shù)proc,它的功能是:求出1?m(含m)能被7或11

整除的所有整數(shù)放在數(shù)組a中,通過n返回這些數(shù)的個(gè)數(shù)。

例如,若傳給m的值為70,則程序輸出:

7111421222833354244495556636670

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

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

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

試題程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#defineN100

voidproc(intm,int*a,int*n)

{

}

voidmain

(

intarr[N],n,k;

system("CLS");

proc(70,arr,&n);

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

if((k+l)%20==0)//每行輸出20個(gè)數(shù)

{printf("%4d",arr[k]);

printf("\n");

)

else

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

printf("\n");

)

26.請(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=0;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");

)

27.

請(qǐng)編寫一個(gè)函數(shù)voidproc(chara[],charbE3,intn),其功能是:刪除

一個(gè)字符串中指定下標(biāo)的字符。其中,a指向原字符串,刪除后的字符

串存放在b所指的數(shù)組中,n中存放指定的下標(biāo)。例如,輸入一個(gè)字符

串student,然后輸入5,則調(diào)用該函數(shù)后的結(jié)果為studet。注意:部分

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

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

#includeVstdlib.h>

#include<stdio.h>

#include<conio.h>

5defineN20

voidproc(chara[].charb[].intn)

voidmain()

charstr![N].str2[Nji

intn?

xystemC**C1-S*,)i

printf("Enterthesiring:\n")i

gets(strl)t

printf(*Enterthepositionofthestringdeleted:

*>I

scan!&n>i

proc(strl??1r2an)i

print!("Thenewstringis*%*\n".sir2>i

28.請(qǐng)編一個(gè)函數(shù)fun(char*str),該函數(shù)的功能是把字符串中的內(nèi)容逆

置。例如,字符串中原有的字符串為asdfg,則調(diào)用該函數(shù)后,串中的

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

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

?Mtcludc<Mmg.

.MKUKWh2>

?ifirlvdr<M4KXk>

■Mm*NIM

voidItmCcliar?MY>

NMMI<)

HMM?N].

FILE?<nrti

pciiith*EIN?T?Mrwg??,.

pnatlc*TWongwoi3vwg..*>j

,i“s

pmn{<-TWvtracafwrwAf.%*>g

pvt?<a)a

?ircpy<a.*W?IRMB?!->a

l?M<a>i

Out■*fopettl4atW)i

(pciatf(ovi?0M?*?a)s

29.

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

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

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

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

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

試題程序:

/iwlude<stdiA.h>

#include<ctype.h>

#hiclude<conio.h>

vodfun(char*str)

}(

main。

fcharstr[81];

charMsgf]=°Inputastring:T,;

intn;

printf(Msg);gftt5(str);puts(atr);fun(str);

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

I,

30.請(qǐng)編一個(gè)函數(shù)intfun(inta),它的功能是:判斷a是否是素?cái)?shù),若a是

素?cái)?shù),返回1;若不是素?cái)?shù),返回0°A的值由主函數(shù)從鍵盤讀入。

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

31.下列給定程序中函數(shù)fun()的功能是:計(jì)算n!。例如,給n輸入5,

則輸出120.000000。

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

doublefun(intn)

{doubleresult=1.0;

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

ifn==0

return1.0;

while(n>l&&n<170)

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

result*=n—

returnresult;

)

main()

{intn;

printf("InputN:");

scanf("%d"&n);

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

)

32.下列給定程序中,函數(shù)fun()的功能是:從字符串s中,刪除所有大

寫字母F。

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

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

試題程序:

#include<stdio.h>

voidfun(char*s)

inti,j;

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

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

if(s[i]!=F)

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

s[j]=s[i];

sU]='\O';

)

main()

chars[80];

printf("\nEnterastring:");

gets(s);

printf("Theoriginalstring:");

puts(s);

fun(s);

printf("Thestringafterdeleted:");

puts(s);

printf("\n\n");

)

33.給定程序中,函數(shù)fun()的功能是:使數(shù)組中的元素的值增加10倍。

改正其中的錯(cuò)誤,使它能得出正確的結(jié)果。

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

試題程序:

#include<stdio.h>

#include<conio.h>

ihtm[10];

voidfun(void)

(

intj;

printf("Insubfuncaftercalling\n");

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

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

printf("%3d",m[j]*10);

)

)

main()

{inti;

printf("Inmainbeforecalling\n");

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

m[i]=i;

printf("%3d",m[i]);

fun();

printf("\nlnmainaftercalling\n");

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

printf("%3d",m[i]);

getch();

)

34.給定程序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>

2finclude〈string.h>

3voidfun()

4(

5inta[3][3]rsum;

6intj;

7

8

9printf("Inputdata:w);

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

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

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

wR

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

14

15for(i,0;i<3;

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

w,t

17printf(Sum-%d\nrsum);

18

19main()

20

21fun();

22

35.給定程序MODII.C中函數(shù)fun的功能是:把主函數(shù)中輸入的3個(gè)

數(shù),最大的放在a中,最小的放在c中,中間的放在b中。

例如,輸入的數(shù)為:551234,輸出結(jié)果應(yīng)當(dāng)是:a=55.0,b=34.0,

c=12.0o

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

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

linclude<stdio.h>

2voidfun(float*arfloat*b#float*c)

3(

4/**********found***?W?*???/

5float*k;

6if(*a<*b)

7{k?*a;*a-*b;*b?k;}

8/*****w****found******w***/

9if(*a>*c)

10{k-*c;*c?wa;*a-k;)

11if(*b<*c)

12{k-wb;*b-*c;*c-k;}

13)

14main()

15{floata,b,c;

16printf("Inputabc:R);scanf

《“mm&br?c);

w

17printf(a-%4.Ifrb-%4.If,c

H

-%4.1f\n\nra,b,c);

18fun(&a,&b,;

19printf(wa=%4.If,b■%4.If,c

-%4.1f\n\n"rarbrc);

20

36.下列給定程序中,函數(shù)fun()的功能是;將s所指字符串中的字母轉(zhuǎn)

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

又O

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

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

試題程序:

#include<stdio.h>

#include<ctype.h>

#include<conio.h>

voidfun(char*s)

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

{while(*s!='@')

{if(*s>='A'&*s<='z'||*s>='a'&&*s<='z')

{if(*s=='Z')*S='A';

elseif(*S=='z')*s-a';

else*s+=l;

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

(*s)++;

)

main()

{chars[80];

clrscr();

printf("\nEnterastringwithlength<80:\n\n");gets(s);

printf("\nThestring:\n\n");puts(s);

fun(s);

printf("\n\nTheCords:\n\n");puts(s);

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

如下公式的值。

V=-----------+------------+------------

lOO?lOO200?200300?300ni'm

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

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

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

1finclude<stdio.h>

/…………found…………

3fun(intm)

4(doubley0,d

5inti;

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

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

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

9yl.0/d;

10

11return(y);

12

13main()

14(intn=2000;

15printf("\nTheresultis%lf\n",

fun(n));

16}

38.以下程序可把輸入的十進(jìn)制數(shù)以十六進(jìn)制數(shù)的形式輸出。

請(qǐng)?jiān)跈M線上填上適當(dāng)?shù)膬?nèi)容并把橫線刪除,使它能得出正確的結(jié)果。

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

試題程序;

main()

charb[17]={"0123456789ABCDEF"};

intc[64],d,i=0,base=16;

longn;

printf("Enteranumberin'');

scanf("%ld",&n);

do{

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

c[i]=;i++;n=n/base;}

while(n!=0);

printf("Transmitenewbase:\n");

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

/***************'^Qurid*******************/

{d=c[i];printf("%c",b..);)

printf("\n");

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

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

floatm[10];

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

intfun(void)

(

intj;

printf("Insubfuncaftercalling\n");

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

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

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

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

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

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

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

4576235時(shí),t中的數(shù)為4725。

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

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

intfun(longS,long*t)

longsi=10;

*tiS%10;

while(s>0)

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

s=s%100;

*t=S%10*Sl+*t;

sl=sl*10;

)

)

main()

(

longS,t;

clrscr();

printf("\nPIeaseenterS:");

scanf("%ld”,&s);

fun(S,&t);

printR'Theresultis:%ld\n",t);

)

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

41.下列給定程序中,函數(shù)ptoc的功能是:利用插入排序法對(duì)字符串

中的字符按從小到大的順序進(jìn)行排序。插入法的基本方法是:先對(duì)字

符串中的頭兩個(gè)元素進(jìn)行排序,然后把第3個(gè)字符插入前兩個(gè)字符

中,插入后前3個(gè)字符依然有序;再把第4個(gè)字符插入前三個(gè)字符

中,待排序的字符串已

在主函數(shù)中賦予。

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

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

構(gòu)。

試題程序:

#include<strin9.h>

#include<stdiO.h>

#defineM80

voidproc(char*arr)

{inti,j,n;charch;

n=strlen(arr):

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

//****found****

{c=arr[i];

j=i-l;

while((j>=o)&&(ch<arr[j]))

(

arr[j+l]=arr[j];

j-;

)

arr[j+l]=ch;

)

)

voidmain

(

chara[Ml="QWERTYUIOPASDFGHJKLMNBVCXZ";

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

proc(a);

printf("Thestringaftersortin9:

%s\n\n",a);

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

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

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

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

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

構(gòu)。

試題程序:

giurludcVcodio.h>

giticludr<sldUKh>

mtprodmtk)

■m-<>?ji

WX(卜>Id

//????found????

k——?

//????????

returnmi

)

voidmmnC>

(

?ynteni(*CLS-)i

pnfid<eMd\ft?.proe《800》>,

六、操作題(2題)

43.下列給定程序的功能是:讀入一個(gè)整數(shù)n(2<=n<=5000),打印

它的所有為素?cái)?shù)的因子。例如,若輸入整數(shù)1234,則應(yīng)輸出:2,

6170

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

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

構(gòu)。

試題程序:

#include<conio.h>

#include<stdio.h>

//****found****

Prime(intm);

(

intj,P;

p=l;

〃****found****

for(j=2;j++)

if!(m%j)

(

p=0;

break;

)

retum(p);

inti,n;

printf("\npleaseenteranintegernumberbetween2

and5000:");

scanf("%d",&n);

printf("\n\nTheprimefactor(s)of%dis(are):",n):

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

if((!(n%i))&&(Prime(i)))

printf("%4d,",i);

printf("\n");

)

44.請(qǐng)編一個(gè)函數(shù)voidproc(intttEM][N],intpp[N]),tt指向一"個(gè)M行

N列的二維數(shù)組,求出二維數(shù)組每行中最大元素,并依次放入pp所指

的一維數(shù)組中。二維數(shù)組中的數(shù)已在主函數(shù)中給出。

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

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

#defineM3

#defineN4

voidproc(intttrM3rN]。intpp[N])

voidmain

intstr[M][Nl={{34,56,84,78},

{23,84,93,12),

{28,38,39,93}};

intp[Nl,i,j,k;

systemC'CLS");

printf("Theriginaldatais:\n");

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

(

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

printf("%6d",str口皿);

printf("\n");

)

proc(str,p);

printf("\nTheresultis:\n");for(k=0:k<M;k++)

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

printfC'n");)

參考答案

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

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

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

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

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

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

的結(jié)果為。1112。

2.數(shù)據(jù)存儲(chǔ)數(shù)據(jù)存儲(chǔ)

3.9292解析:本題的主函數(shù)中首先定義了一個(gè)4行4列的二維數(shù)組,然

后執(zhí)行一個(gè)while循環(huán),該循環(huán)中又嵌套了一個(gè)do-while循環(huán)。先看

while循環(huán),該循環(huán)通過i++的值來判斷是否結(jié)束循環(huán),當(dāng)i++的值為4

的時(shí)候結(jié)束循環(huán),當(dāng)i=0時(shí),執(zhí)行while的循環(huán)體,顯然if語句條件不

滿足不執(zhí)行,接著讓j=0,然后執(zhí)行do-while循環(huán)體,不難看出do-while

循環(huán)的功能是將第i+1行的所有元素加起來,所以這時(shí)s的值為

s=a[l][0]+a[l][l]+a[l][2]+a[l][3]=26^i=j±i+l=2,if后面括號(hào)里的

表達(dá)式的值為真執(zhí)行后面的continue語句,結(jié)束該次循環(huán);當(dāng)i=2時(shí),

i加1變?yōu)?,把第3+1行的所有元素的值加到s上,此時(shí)

s=s+a⑵[0]+a[2][l]+a⑵⑵+a[2][3]=92,當(dāng)i=3時(shí),3+1=4,if后面括號(hào)里

的表達(dá)式的值為真執(zhí)行后面的continue語句,結(jié)束該次循環(huán),當(dāng)i=3時(shí),

if后面括號(hào)里的表達(dá)式的值為真執(zhí)行后面的continue語句,結(jié)束該次循

環(huán)當(dāng)i=4時(shí)while循環(huán)結(jié)束,所以最后輸出的s的值為92o

4.-1*sn-1*sn解析:根據(jù)公式可知,第一處應(yīng)填-1;由于計(jì)算結(jié)果要

通過形參指針sn傳回,所以第二處應(yīng)填*sn。

5.64KB

6.1020010200解析:程序中(a%b<l)||(a/b>1)的運(yùn)算順序?yàn)橄人憷ㄌ?hào)

一算術(shù)運(yùn)算符一關(guān)系運(yùn)算符t邏輯運(yùn)算符。首先計(jì)算a%b=10,a/b=O,

因?yàn)閍%b<l為假(0),a/b>l也為假(0),所以整個(gè)表達(dá)式的結(jié)果為假

(0),最后輸出a,b,c的值為10200。

7.136136解析:程序中定義了一個(gè)遞歸調(diào)用函數(shù)fun。程序運(yùn)行時(shí),

先把實(shí)參6傳給形參。if語句中6/2>0成立,執(zhí)行fun(x/2),即fun(3),

同時(shí)輸出x的值6;再判斷if條件,3/2>0成立,再執(zhí)行fun(x/2),即

fun(l),同時(shí)輸出x的值3;此時(shí)1/2>0不再成立,輸出1。而遞歸調(diào)用

的輸出順序是相反的,故輸出結(jié)果為136。

8.概念設(shè)計(jì)階段(數(shù)據(jù)庫(kù)概念設(shè)計(jì)階段)概念設(shè)計(jì)階段(數(shù)據(jù)庫(kù)概念設(shè)計(jì)階

段)

9.GFEDCB。GFEDCBO解析:開始指針cp指向字符串結(jié)束標(biāo)志,在

循環(huán)中,cp依次向前移動(dòng),當(dāng)打印出第二個(gè)字符后,cp指向第一個(gè)字

符,循環(huán)判斷條件不滿足,退出循環(huán),因此,只打印出第一個(gè)字符以后

的字符的逆序列。

10.關(guān)系或一個(gè)關(guān)系關(guān)系或一個(gè)關(guān)系解析:在關(guān)系數(shù)據(jù)庫(kù)中,把數(shù)據(jù)表

示成二維表,而一個(gè)二維表就是一個(gè)關(guān)系。

11.A

根據(jù)題目中的定義可知,“sizeof(p)”計(jì)算的是數(shù)組p中所有元素所占用

的字節(jié)數(shù),而不是char型數(shù)據(jù)所占的字節(jié)數(shù)。故本題答案為A選項(xiàng)。

12.B

13.B解析:C語言的字符以其ASCII碼的形式存在,所以要確定某個(gè)字

符是大寫字母,只要確定它的ASCII碼在A和Z之間就可以了,選項(xiàng)A)和

C)符合要求。函數(shù)isalpha用來確定一個(gè)字符是否為字母,大寫字母的

ASCII碼值的范圍為65到90,所以如果一個(gè)字母的ASCII碼小于91,那

么就能確定它是大寫字母。

14.B

15.B

[解析]每次內(nèi)循環(huán)只循環(huán)一-次就結(jié)束,第一次外循環(huán)時(shí)t=t+b[][0][]=

l+b[0][0]=1+0=1;第二次外循環(huán)時(shí)t=t+b[l][b[l][l]]=l+b[l][l]=l+l=2;

第三次外循環(huán)時(shí)t=t+b[][2][]=2+b⑵⑵=2+2=40

16.A

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

17.D

18.A

\\n和\\\\分別為轉(zhuǎn)義字符,各占據(jù)一個(gè)字符的位置。

19.A解析:/*與*/之間的信息稱為注釋信息,在C語言中,允許在任何

能夠插入空格符的位置插入注釋,但C語言的注釋不能進(jìn)行嵌套,故選

項(xiàng)A正確:在C語言中,函數(shù)體是從花括號(hào){開始,到花括號(hào)}結(jié)束。但

沒有規(guī)定花括號(hào){和}只能作為函數(shù)體定界符,故選項(xiàng)B錯(cuò)誤;選項(xiàng)C中

前半句是正確的,C程序由一個(gè)或多個(gè)函數(shù)所組成,但不是所有的函數(shù)

都由用戶自己命名,有些函數(shù),比如主函數(shù)main()就不能由用戶來命名,

故選C不正確;在?語言中明確規(guī)定每條語句以分號(hào);結(jié)束,分號(hào)是語

句不可缺少的一部分,故選項(xiàng)D不正確。所以,4個(gè)選項(xiàng)中選項(xiàng)A符合

題意。

20.B

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

int1;

*max=a[0];

*d=0;

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

(

i/f*max<a[i])

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

fun()函數(shù)形參max用來存放最大值,形參d用來存放最大值的下標(biāo)。由

于它們都是指針變量,因此在引用所指向的變量時(shí),要進(jìn)行指針運(yùn)算。

循環(huán)語句用來遍歷數(shù)組元素,找出最大值。條件語句用來判斷該數(shù)組元

素是否最大。

22.1doublefun(intn)

doublesum=0.0;inti;

for(i=21;i<=n;i++)if((i%3==0)&&(i%7==0))sum+=i;

retumsqrt(sum);

本題考查算術(shù)運(yùn)算的算法。首先利用一個(gè)for循環(huán)判斷小于n且能同時(shí)

被3和7整除的整數(shù),并將滿足條件的整數(shù)累加到sum。之后調(diào)用

Sqrt()函數(shù)計(jì)算sum的平方根,并將其作為函數(shù)的返回值返回。

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

{

inti,j=0,n;

n=strlen(s);

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

if((i%2)&&(s[i]%2))

(

t[j++]=s[i];/*將下標(biāo)為奇數(shù)同時(shí)ASCII值為奇數(shù)的字符放入數(shù)組

t中*/

}

中]='\。';/*最后加上字符串結(jié)束標(biāo)志*/

本題要求保留下標(biāo)為奇數(shù)同時(shí)ASCII值也為奇數(shù)的字符,其余的所有字

符都刪除。將S字符串中,滿足條件的字符存放到字符串t中。if的條

件表達(dá)式為:if(i%2!=0&&s[i]%2!=0)o

24.

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

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

中。

25.\n\tvoidproc(intm,int*a,int*n)

\n{

\ninti,j=0;

\nfor(i=l;i<=m;i++)//進(jìn)行m次循環(huán)

\nif(i%7==0||i%U==0)//能被7或11整除的所有整數(shù)

\na[j++]=i;//符合條件的數(shù)放在數(shù)組a中

\n*n=j;//返回這些數(shù)的個(gè)數(shù)

\n}

\n【解析】本題需要先判斷1?m每一個(gè)整數(shù)能否被7或11整除,然

后將符合條件的整數(shù)放在數(shù)組a中,最后將符合條件的數(shù)的個(gè)數(shù)通過

形參n返回主函數(shù)。\n

26.\r\n\tvoidproc(int(*s)[10],int*b,int*n,intmm,intnn)

(

inti,j,k=0;

for(i=0;i<mm;i++)//i是表示其行的下標(biāo)

for(j=0;j<nn;j++)//j是表示其列的下標(biāo)

b[k++]=s[i][j];//把其放到b的一維數(shù)組中

*n=k;//把b數(shù)組的長(zhǎng)度通過形參n傳回到主函數(shù)中

)

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

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

個(gè)元素,并將其放入一維數(shù)組中。最后,將一維數(shù)組的長(zhǎng)度通過形參

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

27.

【解析】按照題目中的要求,刪除一個(gè)字符串中指定下標(biāo)的字符。首先,

將指定下標(biāo)之前的字符放入字符數(shù)組b中,然后將指定下標(biāo)之后的字符

也放入字符數(shù)組b中,最后為新的字符數(shù)組b添加結(jié)束符。

28.

【解析】在fun()函數(shù)中,首先求行字符串的長(zhǎng)度,然后通過循環(huán)進(jìn)行字

符交換。要注意的是,如果字符串長(zhǎng)度是奇數(shù),則最中間的元素在逆置

前后的位置是沒有改變的。

29.[答案]

voidfiin(char?str)

{inti=0;

char*p=?str;

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

.

{

/*如果當(dāng)前元素不為空格*/

即p!二

{??

/*將當(dāng)前元素保存到西中*/

sti(ij=*p;

i++;

)

P++;

}

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

)

[解析]

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

除字符串中的每一個(gè)空格,將非空格字符進(jìn)行重新保存。

30.\n#include"stdio.h"

\nintfun(inta)

\n{intI;

\nif(a==2)return1;1=2;

\nwhile((a%I)!=OI<=sqrt((float)a))

\nl++;

\nif(a%I==O)

\n{printf("%disnotaprime!,5,a);

\nretum0;}

\nprintf(t4%disaprime!,5,a);

\nretum1;}

\nmain

\n{intx;

\nprintf("\\npleaseenteranumber:^^);

\nscanf("%d",&x);

\nprintf("%d\\n”,ftm(x));}

\n

31.(1)錯(cuò)誤:ifn==0正確:if(n==0)⑵錯(cuò)誤:result*=n—正確:result*=n-

-;(1)錯(cuò)誤:ifn==0正確:if(n==0)\r\n(2)錯(cuò)誤:result*=n—正確:result*=n-

-;解析:在做這道題之前,我們首先應(yīng)該明白一個(gè)數(shù)學(xué)上的概念,一

般判卷人員先要執(zhí)行程序,如果結(jié)果正確,得滿分,否則錯(cuò)一個(gè)扣分,

再錯(cuò)再扣,本題考查5!即51=5x4x3x2x1=120,要求輸出double型結(jié)

果。

32.(1)錯(cuò)誤:for(i=j=0;s[i]!='0';i++)正確:for(i=j=0;s[i]!'\0';i++)(2)錯(cuò)誤:

s[j]=s[i]正確:s[j++]=s[i];⑴錯(cuò)誤:for(i=j=0;s[i]!=O升+)正確:

for(i=j=0;s[i]!'\\01;i++)\r\n(2)錯(cuò)誤:s|j]=s[i]正確:s[j++]=s[i];解析:錯(cuò)

誤1:本題考查是否掌握字符串的最后一個(gè)字符是結(jié)束標(biāo)志符錯(cuò)誤

2:在循環(huán)中,新字符串的下標(biāo)也要遞增,這樣最終產(chǎn)生一個(gè)新的字符

串。

33.錯(cuò)誤:printf("%3d"m[j]*10);正確:printf("%3d"m[j]=m[j]*10錯(cuò)誤:

printf('%3d'm[j]*10);正確:printf(%3cf解析:本題考查

全局變量相關(guān)知識(shí)。該題程序中的fun()沒有參數(shù)輸入,但數(shù)組皿⑼為

全局變量,故可在fun()函數(shù)中使用,fun()函數(shù)對(duì)數(shù)組m的操作可以反

映到主函數(shù)的輸出結(jié)果中。

34.(l)sum=0(2)scanfr%d,,&a[i][j]);(l)sum=O(2)scanf(“%d,“,&

a[i][j]);解析:該題中函數(shù)功能是計(jì)算元素的和。從已給定源程序的

main主函數(shù)開始入手,然后通過“fUn();”語句調(diào)用fun函數(shù)的功能。

35.(l)floatk;(2)if(*a<*c)(l)floatk;(2)if(*a<*c)解析:本題中函數(shù)

的功能是把主函數(shù)中輸入的3個(gè)數(shù),最大的放在a中,最小的放在c中。

對(duì)三個(gè)數(shù)進(jìn)行兩兩比較,實(shí)現(xiàn)函數(shù)功能。

36.⑴錯(cuò)誤:whil

溫馨提示

  • 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. 人人文庫(kù)網(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)論