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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

2023年遼寧省遼陽市全國計算機等級考試

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

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

一、2.填空題(10題)

1.定義inta=5,b;,則執(zhí)行表達式b=++a*-a之后,變量b的值為【】。

2.以下程序的功能是:從鍵盤上輸入若干學生的成績,統(tǒng)計計算出平均

成績,并輸出低于平均分的學生成績,用輸入負數(shù)結束輸入。填空。

main()

{floatx[1000],sum,=0.0,avea;

intn=0,i;

printf("Entermark:"\n");scanf("%f,&a);

while(a>=0.0&&n<1000)

{sum+=[];x[n]=[];

n++;scanf("%f',&a);

ave=[]

printf("Output:"\n");

printf("ave=%f'\n",ave);

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

if([])frintf("%f\n",x[i]);

3.以下程序運行后的輸出結果是【】。

#include<stdio.h>

main()

{inta[4][4]={{1,2,3,4},{5'678},{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);

}

pdnff("%d'\n",s);

J

4.Jackson方法是一種面向【】的結構化方法。

5.在計算機軟件系統(tǒng)的體系結構中,數(shù)據(jù)庫管理系統(tǒng)位于用戶和【】

之間。

6.設有定義:intn,*k=&n;以下語句將利用指針變量k讀寫變量n中的

內容,請將語句補充完整。

scanf("%d",[]);

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

7.數(shù)據(jù)獨立性分為邏輯獨立性與物理獨立性。當數(shù)據(jù)的存儲結構改變時,

其邏輯結構可以不變,因此,基于邏輯結構的應用程序不必修改,稱為

[]o

8.設a、b、c為int型變量,且a=10、b=5、c=l,則執(zhí)行完以下語

句,a的值變?yōu)椤尽俊?/p>

a/=10-(++b)-(c--);

9.計算機中網(wǎng)絡通信協(xié)議IP是【】。

10.下面程序的運行結果是【】。

intf(inta[],intn)

{if(n>1)retuma[0]+f(&a[l],n-l);

elsereturna[0];

/

main()

{intaa[3]={l,2,3},s;

s=f(&aa[O],3);

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

二、單選題(10題)

11.下列選項中,當X為大于1的奇數(shù)時,值為0的表達式是()。

A.x%2==0B.x/2C.x%2!=0D.x%2=l

12.在供應關系中,實體供應商和實體零件之間的聯(lián)系是()。

A.多對多B.一對一C.多對一D.一對多

13.下列程序的輸出結果是□main(){charch[2][5]={"6937",

"8254"},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;

i<2;i++)fbr(j=0;p[i][j]>'\0';j+=2)s=10*s+p[i][j]-,0,;printf("%d\n",

s);}

A.69825B.63825C.6385D.693825

17)有以下程序

#include<stdio.h>

main()

{intk=5,n=0;

while(k>0)

{switch(k)

{default:break;

case1:n+=k;

case2:

case3:n+=k;

)

k-;

}

printfT%d\n”,n);

)

程序運行后的輸出結果是

14.A)0B)4C)6D)7

15.有以下程序:

#include<stdio.h>

#defineN8

voidfun(int*x,inti)

{*x=*(x+i);)

main()

{inta[N]={l,2,3,4,5,6,7,8},i;

fun(a,2);

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

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

printff'W");

)

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

A.1313B.2234C.3234D.1234

16.以下選項中可作為C語言合法常量的是o

A.-80B.-080C.-8el.0D.-80.Oe

17.CPU能夠直接訪問的存儲器是

A.軟盤B.硬盤C.RAMD.CD-ROM

18.設R是一個二元關系,S是一個三元關系,則下列運算中正確的是

()。

A.R-SB.RxSC.RASD.RUS

(16)當a=l、b=2、c=3、d=4時,執(zhí)行下面程序段后,x的值是().

if{a<b)

if(c<d)x=l;

else

ifi(a<c)

if(b<d)x=2;

elsex=3;

elsex=6;

elsex=7;

19.A)1B)6C)3D)2

20.設有定義:

inta=l,b=2,C=3;

以下語句中執(zhí)行效果與其他三個不同的是()。

A.if(a>B.C=a,a=b,b=C;

B.if(a>B.{C=a,a=b,b=C;}

C.if(a>B.C=a;a=b;b=c;

D.if(a>B.{C=a;a=b;b=c;}

三、程序設計題(10題)

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

刪除字符串中所有的*號。編寫函數(shù)時,不得使用C語言提供的字符串

函數(shù)。

例如,字符串中的內容為“****A*BC*DEF*G****“,刪除后,字符串

中的內容應當是“ABCDEFG”o

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

請勿改動maini)函數(shù)和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號

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

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(chara)

(

voidmain

(

chars[81];

print{("Enterastring:\n");

gets(s):

fun(S);

printf("Thestringafterdeleted:\n");

puts(s);

)

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

的項目中包含一個源程序文件progl.c。在此程序中,規(guī)定輸入的字符串

中只包含字母和*號。請編寫函數(shù)其功能是使字符串中尾部的*

號不多于n個,若多于n個,則刪除多余的*號;若少于或等于n個,

則不做任何操作,字符串中間和前面的*號不刪除。

例如,字符串中的內容為“****A*BC*DEF*G********,若n的值為

4,刪除后,字符串中的內容應為“****A*BC*DEF*G****”;若n的值

為7,則字符串中的內容仍為“****A*BC*DEF*G*******”。n的值在

主函數(shù)中輸入。編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。

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

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

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

試題程序:

#include<stdio.h>

voidfun(char*a,intn)

(

)

main()

{chars[81];intn;

printf("Enterastring:\rT);

gets(s);

printf("Enter

scanf("%d”,&n);

fun(s,n);

printf(''Thestringafterdeleted:\n,,);

puts(s);

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

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

函數(shù)fun(),它的功能是將ss所指字符串中所有下標為奇數(shù)的字母轉換

為大寫字母(若該位置上不是字母,則不轉換)。

例如,若輸入“abc4E魚”,則應輸出“aBc4EFg”。

注意:部分源程序在文件progl.c中。請勿改動主函數(shù)main()和其他函

數(shù)中的任何內容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。

試題程序:

I#include<conio.h>

2#include<stdio.h>

3tinclude<string.h>

4linclude<stdlib.h>

5voidfun(char*ss)

6{

7

8}

9voidmain()

10{

11FILE*wf;

nM

12chartt[81]zs[81]=abc4Efg;

13system(nCLSM);

14printf("\nPleaseenteranstring

within80characters:\nM);

15gets(tt);

16printf(n\n\nAfterchanging,

thestringVntt);

17fun(tt);

18printf(M\nbecomes\n

19//

MMM

20wf=fopen("out.datrw);

21fun(s);

22fprintf(wf,w%sw,s);

23fclose(wf);

24//

251

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

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

值返回。

例如,若學生的成績是:8576698591726487,則平均分應當是:

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

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

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

tinclude<stdio.h>

#include<Btdlib.h>

#defineN8

atwdalist

Idoubles;

ftnicttlist?next;

11

typcdcfstructslislSTREC:

doublefiin(STREC'h)

STREC?cre?t(double?0)

|STREC?h,?p,?q;inti=0;

h*p*(STREC?)malloc(sixeof(STREC));p->?=0;

while(i<N)

|q=(STREC?)malloc(iizeof(STREC));

q工.[i];i++;p->next=q;p=q;

I

p->next=0;

returnh;

I

outlist(STREC?h)

|STREC?p;

p=h->next;printf("head");

do

|printf(**->%4.If*,p->?);p=p->next;|

while(p!?0);

printf("\n\n");

I

main()

|doubles[N]=[85,76,69,85,91,72,64.87|..ve;

voidNONO();

STREC?

hscreat(?)ioutliBt(h);

ave匚fiin(h);

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

NONO();

I

voidNONO()

1/?本南敷用于打開文件.輸入數(shù)據(jù).調用函數(shù),*出數(shù)據(jù),關閉文件。?)

FILE?in,?out;

intij;double?[N],ave;

STREC;

in=fbpen("in.dat*.*r");

outsfopen("out.chi"/w");

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

I

for(jx0;j<N;j++)fscanf(in.

h=creit(*)x

ave=fun(h);

w

fprint£(outv-%6.31An,ave);

I

fcloee(in);

fclote(out);

25.請編一個函數(shù)fim(char*str),該函數(shù)的功能是把字符串中的內容逆

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

內容為gfdsa。請勿改動main()函數(shù)和其他函數(shù)中的任何內容,僅在

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

?mriudt<stnag.

■MtcItMlr

■ificlwfe<stAah>

*defineN100

vxxdfun<char?MT>

WMdHM.()

diet?N]?

FILE

pnntf<#Eater?znaig.">>

ge?B<A)l

petadceTlb?oncwUMU.>I

pWt>(A)|

pnMf<*TWnmgUtce>>1

?irrpyi??sWeieMM!*1?

oml,iopB*,dMe?*vel(

(ciOM<(Mfl)(

26.輸出1—100之間不能被12整除的數(shù)。

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

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

指字符串中的內容為ABCDEFGHIJK(輸入完成以空格、Tab或者Enter

鍵加任意非空格、Tab或者Enter鍵的一個字符作為輸入結束標志),則

在t所指數(shù)組中的內容應是BDFHJ。注意:部分源程序給出如下。請

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

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

=tneluiltVstdbK

隹mcludeVcomo.h>

*includeVBUBCIII>

Urneludc<Mrtn<>h>

voidpruc<char??tr?chart£]>

midmAin(I

tfMi*11

char?tr£100]*t[100](

'CIF>i

pnrM((v\nPle?M?mier?mngStri?

*<***?%Ani

pror<scir?l)i

pnnif<*\nTheIB:KAn-?t><

28.請編寫函數(shù)proc,該函數(shù)的功能是:將放在字符串數(shù)組中的M個字

符串(每串的長度

不超過N),按順序合并組成一個新的字符串。

例如,若字符串數(shù)組中的M個字符串為:

ABCD

BCDEFG

CDEFGHI

則合并后的字符串內容應該是ABCDBCDEFGCDEFGH10

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

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

#defineM3

#defineN20

voidproc(chararr[M][N],char*b)

(

)

voidmain

(

charstr[M][Nl={"ABCD","BCDEFG","CDEFGH1"),i;

chararr[100]={"##################"};

printf("Thestrin9:kn");

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

puts(str[i]);

printf("\n");

proc(str,arr);

printf("TheAstring:\n");

printf("%S",arr);

printf("\n\n");

)

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

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

其功能是將放在字符串數(shù)組中的M個字符串(每個字符串的長度不超過

N),按順序合并成一個新的字符串。

例如,若字符串數(shù)組中的M個字符串為|“AAAA”,“BBBBBBB”,

“CC”|,則合并后的字符串內容應該是“AAAABBBBBBBCC”。

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

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

#defineM3

#defineN20

voidfun(chara[M][N],char*b)

(

)

voidmain()

(

charw[M][N]={“AAAA”,“BBBBBBB”,“CC”};

chara[100]=,"##################"};

inti;

printfC'Thestring:\n^^);

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

puts(w[i]);

printf("\n");

fun(w,a);

printf("TheAstring:\n^^);

printf("%s”,a);

printf("\n\n");

30.

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

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

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

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

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

除后,字符串中的內容則應當是a*bc*de儼g。注意:部分源程序給出如

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

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

Mtndud*V.tdso.

9indude<?como.h>

voedprocCciwu?a?mtin?itsth?inte>

WM!nutii()

char481]?

mtm?0.t??0?h>-0?

pnnil("Emer??inngt\nv)i

[-I―九

whik<?O

<1**+tin4--r11'/tn*宇R*的長度

t一一?,掂ttt相向字件電尾瓢

41——?!鍪?/p>

/指鐘,■網(wǎng)■聽?個字母.sent齷郵?'的

個教

wtult<)

*ifn>?.)

?Ittt(■網(wǎng)事一個字號」?統(tǒng)卅?9'」,個教

proc(■?m.fn.tn>?

print"'The*tnti<therdeletedt\n*>i

I

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

31.給定程序M0D11.C中函數(shù)fun的功能是:求整數(shù)x的y次方的低

3位值。例如,整數(shù)5的6次方為15625,此值的低3位值為625。

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

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

1linclude<stdio.h>

2longfun(intinty,long*p)

3{inti;

4longt-1;

5/…………Found……?……/

6for(i-l;i<y;—

7

8*p-t;

9/?…………found…………?/

10t-t/1000;

returnt;

12?}

13main()

14{longtrr;intxry;

15printf(w\nlnputxandy:M);

ww

scanf(%ld%ld/&x,&y);

16t>fun(x,y,&r);

w

17printf(\n\nx?%dry-%drr-%ld#

w

last?%ld\n\nrxry,r,t);

18

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

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

例如,輸入的數(shù)為:551234,輸出結果應當是:a=55.0,b=34.0,

c=12.0o

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

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

*include<stdio.h>

2voidfun(float*arfloat*brfloat*c)

3(

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

5float*k;

6if(*a<*b)

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

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

9if(*a>*c)

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

11if(*b<*c)

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

13)

14main()

15{floata,b,c;

16printf("Inputabc:R);scanf

R

17printf(a-%4.If,b-%4.Ifrc

H

■%4.lf\n\nra,brc);

18fun(&a,&b,&c);

w

19printf(a,%4.Ifrb■%4.Ifrc

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

20

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

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

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

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

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

1*include<stdio.h>

2linclude<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]-*p;

12i++;

13)

14found………★?/

15while(*p++)

16a(i]-0;

17strcpy(sra);

18

19main()

20{intn;chars[80];

21printf(w\nEnterastring:n);

gets(s);

22printf(w\nThestring

23printf(w\nEntern(numberof*):

wH

");scanf(%dr&n);

24fun(s,n);

25printf("\nThestringafterinsert:

\w%s\w\nw,s);

26

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

如下公式的值。

.1111

y=1+-----?—?—+…+—

2”3/34,4

例如,若m中的值為:5,則應輸出:1.46361lo

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

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

tinclude<stdio.h>

2doublefun(intm)

3{doubley-1.0;

4inti;

5

6for(i-2;i<m;i++)

7/…………Found…………〃

8y1/(i*i);

9return(y);

10)

11main()

12{intn■5;

13printf(R\nTheresultis%lf\nw,

fun(n));

14

35.給定程序中函數(shù)fun的功能是:從低位開始取出長整型變量S中偶

數(shù)位上的數(shù),依次構成一個新數(shù)放在t中。高位仍在高位,低位仍在低

位。

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

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

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

[試題源程序]

#include<stdio.h>

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

voidfiin(longs,longt)

longsl=10;

s/=10;

*t=s%10;

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

while(s<0)

s=s/100;

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

sl=sl*10;

msin()

(

longs,t;

printf("\nPleaseenters:");

scanf("%ld",&s);

fun(s,&t);

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

}

36.給定程序MOD11.C中函數(shù)fim的功能是:統(tǒng)計一個無符號整數(shù)中

各位數(shù)字值為零的個數(shù),通過形參傳回主函數(shù);并把該整數(shù)中各位上最

大的數(shù)字值作為函數(shù)值返回。例如,若輸入無符號整數(shù)30800,則數(shù)字

值為零的個數(shù)為3,各位上數(shù)字值最大的是8。

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

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

1linclude<stdio.h>

2intfun(unsignedn,int*zero)

3{intcount?0/max=0rt;

4do

5{t-n%10;

6/…………*found?…………/

7if(t-0)

8count”;

9if(max<t)max-t;

10n?n/10;

11}while(n);

12

13zero?count;

14returnmax;

15}

16main()

17{unsignedn;intzero,max;

18printf(°\nlnputn(unsigned):M);

scanfL%d",&n);

19max?fun(nrfczero);

20printf(w\nTheresult:max?%dzero35

*d\n”,max,zero);

21

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

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

該數(shù)列前n項的和sum。n的值通過形參傳入。例如,當n=10時,程序

的輸出結果應為96.000000o

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

doublefun(intn)

(

doublesum,SO,SI,S2,S;

intk;

sum=1.0;

if(n<=2)

sum=0.0;

s0=0.0;

sl=0.0;

s2=1.0;

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

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

S=S0+Sl+s2;

Sum+=s;

S0=sl;

Sl=s2;

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

S2=S;

returnsum;

}

main()

(

intn;

clrscr();

printf("InputN=");

scanf("%d",&n);

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

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

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

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

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

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

注意;不要改動main函數(shù),不得增行或刪行,也不得更改程序的結構.

試題程序:

#include<conio.h>

#include<stdio.h>

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

doublefun(doubleq)

{intn;doubles,t;

n=2;

s=2.0;

while(s<=q)

t=s

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

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

n++;

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

/************found***************!

returns;

)

main()

{clrscr();

printf("%f\n",fiin(50));

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

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

低位仍在低位。

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

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

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

iinclude<stdio.h>

2/…………found…………/

3voidfun(longs,longt)

4{longsl-10;

5s/?10;

6*t?s%10;

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

8while(s<0)

9{s■s/100;

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

11si-si*10;

12

13

14main()

15(longs,t;

16printf(n\nPleaseenters:H);scanf

("Id-,

17fun(s,&t);

Mw

18printf(Theresultis:%ld\nrt);

19

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

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

例如,當s所指字符串為:“ABCD”時,貝h所指字符串中的內容應為:

“ABCDDCBA”。

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

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

*include<stdio.h>

2*include<string.h>

3/…………found?………??/

4voidfun(chars,chart)

5

6int1,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]-,\0’;

12

13main()

14(

15chars(100),t[100];

16printf(w\nPleaseenterstringS:w);

R

scanf(%s"/s);

17fun(srt);

ww

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

19

五、程序改錯題(2題)

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

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

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

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

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

構。

試題程序:

Sjfidudc<cocito.h>

inrludc<BldkK.k>

mtproHmtk)

(

mtm,O.mc-O?ji

whil^l<lr\八K八fIrti1

/'/????found>■■■

i(<(kKl5?0>ll<liXlB?0>)

|

m-wi+luiBc—?“

k——i

//????found????

rvturami

)

roidmain(>

(

*y*tem(*CLS")i

pntid<*KA?*?proc<SOO)>:

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

大寫字母F。

請修改程序中的錯誤,使它能得到正確結果。

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

構。

試題程序:

Uinclud*Vadg.h>

voidproc<char?*tr>

IIMi?h

//????(ovnd????

ifCstrfiJ}?*Fr>

???found??

r.T

voidtwain(>

rhiiri

pnnl((s\Bl>>iefaMnnct")!

sir>i

pnfii(<*TWort|nn?l?tn.ngi*)i

proc<wir>i

*ThrMrmgafterddrtrdt*)t

put?(?tr)i

tknatfC**)x1

六、操作題(2題)

43.下列程序段的運行結果是o

intx=0,y=0;

while(x<15)y++,x+=++y;

printf("%d,%d",y,x);

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

voiddele(char*s)

t

intn=0,i;

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

if([1)

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

s[n]=[];

參考答案

1.2525解析:#NAME?

2.aasum/n或sum/(float)n或sum/(double)nx[i]<sve或!(x[i]>=sve)或

sve>x[i]a\r\na\r\nsum/n或sum/(float)n或sum/(double)n\r\nx[i]<sve

或!(x[i]>=sve)或sve>x[i]

3.9292解析:本題考查循環(huán)的嵌套。

①當i=0時執(zhí)行while語句,i++<4成立,這時i=l,不執(zhí)行continue語

句,繼續(xù)執(zhí)行j=0;然后執(zhí)行do-while語句,共循環(huán)4次:

a)j=O時,s=0+a[l][0]=5,j=j+l=lo

b)j=l時,s=5+a[l][l]=5+6=ll,j弓+1=2。

c)j=2時,s=ll+a[l][2]=ll+7=18,j=j+l=3o

d)j=3時,s=18+a[l][3]=18+8=26,j=j+l=4。終止循環(huán)。

②當i=l時執(zhí)行while語句,i++<4成立,這時i=2,執(zhí)行continue語

句,結束本次循環(huán)。

③當i=2時執(zhí)行while語句,i++<4成立,這時i=3,不執(zhí)行continue語

句,繼續(xù)執(zhí)行j=0;然后執(zhí)行do-while語句,共循環(huán)4次:

a)s=26+a[3][0]=26+l5=41,j+l=lo

b)s=41+a[3][l]=41+16=57,j+l=2°

c)s=57+a[3][2]=57+17=74,j+l=3。

d)s=74+a[3][3]=74+18=92,j+l=4°終止循環(huán)。

④i=3時,執(zhí)行while語句,i++<4成立,這時i=4,執(zhí)行continue語句,

結束本次循環(huán)。

⑤當i=4時,執(zhí)行while語句,i++<4不成立,結束while循環(huán)。輸出s

的結果920

4.數(shù)據(jù)結構數(shù)據(jù)結構解析:Jackson方法是一,種面向數(shù)據(jù)結構的結構化

方法。

5.操作系統(tǒng)或OS操作系統(tǒng)或OS解析:數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫的

機構,它是一種系統(tǒng)軟件,負責數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)

維護、控制及保護和數(shù)據(jù)服務。位于用戶和操作系統(tǒng)之間。

6.k*kk\r\n*k解析:scanf()函數(shù)有兩個參數(shù),第一個參數(shù)是格式控制部

分(格式控制部分是字符串,主要由%號和格式字符組成)第二個參數(shù)是

一地址列表(地址列表是由多個地址組成,可以是變量的地址,也可以是

字符串的首地址)。而第一個空位于scanf()函數(shù)的第二個參數(shù)處,所以,

第一個空應該填地址koprintf()函數(shù)有兩個參數(shù),第一個參數(shù)是輸出格

式字符串(輸出格式字符串是由控制輸出格式的字符和非格式字符組成,

通常是字符常量。非格式字符作為輸出數(shù)據(jù)的間隔,輸出時原樣輸出)第

二個參數(shù)為一輸出表達式表(輸出表達式表是由若干個需要計算和輸出

的表達式組成的,表達式之間用逗號分隔開)。而第二個空位于printf()

函數(shù)的第二個參數(shù)處,所以應該填*k。

7.物理獨立性物理獨立性解析數(shù)據(jù)獨立性分為邏輯獨立性與物理獨立

性。當數(shù)據(jù)的存儲結構改變時,其邏輯結構可以不變,因此,基于邏輯

結構的應用程序不必修改,稱為物理獨立性。

8.3

9.網(wǎng)際協(xié)議網(wǎng)際協(xié)議

10.66解析:經(jīng)過分析將遞歸函數(shù)寫成其數(shù)學表達式如下:

本題中定義了一個長度為3的數(shù)組aa并初始化。接著調用遞歸函數(shù)f,

由上面的數(shù)學表達式以計算其返回值s=l+2+3=6,所以空格處應該填6。

11.A算術運算符的優(yōu)先級高于關系運算符的優(yōu)先級。所以當x為大于1

的奇數(shù)時,A選項的值為假,即0°B選項的值為不定值,但絕對不是

0oC選項的值為真,即1。0選項的值為真,即1。故本題答案為A選

項。

12.A一家供應商可提供多種零件,一種零件也可被多家供應商提供。所

以實體供應商和實體零件之間的聯(lián)系是多對多。本題答案為A選項。

13.C

14.D

15.C

本題考查了宏定義與局部變量的區(qū)別,宏定義的作用范圍為整個程

序,而變量的作用范圍只在定義它的函數(shù)體的部分,因此,主函數(shù)中

定義的i與fun中的i互不相干。

16.A

解析?:C語言的常量分為整型常量、實型常量和字符型常量。選項A

屬于實型常量中的十進制小數(shù)形式的表示法,是合法的。

17.C解析:CPU讀取和寫人數(shù)據(jù)都是通過內存來完成的。

18.B

Bo【解析】關系的交⑺)、并(U)和差(-)運算要求兩個關系是同元的,

顯然作為二元的R和三元的S只能做笛卡兒積運算。

19.A

20.C

由于a小于b,所以所有選項中的條件都為假,c選項中實際執(zhí)行了

a=b;b=c;兩個操作。而A、B、D選項由于條件不成立,所以什么也

沒有做,所以選擇c選項。

21.voidfun(char*a)

(

inti,j=0;

for(i=0;a[i]!=\0;i++)

if(a[i]!=*)

aU++]=a[i];//若不是要刪除的字符*則保留

a[j]=\O;//最后加上字符串結束符\0

)

【解析】此題是刪除字符串中的星號。思路是通過for循環(huán)完成對字

符串的遍歷,通過if判斷,找到不是“*”的字符,將其賦值到數(shù)組a中

星號前的位置,“if(a[i]!=*)”“a[i++]=a[i/,最后返回主函數(shù)將刪除*后

的字符串輸出即可。

22.voidfun(char*a,intn)

(

inti=0,k=0;

char*p,*t;

p=t=a;

/*將指針移動到字符串末尾*/

while(*t)

t++;

/*從后往前如果是*則使k自增1,找到最后一個*所在的位置,并記錄

*的個數(shù)*/

while(*t='*')

/*指針t指向前一個,同時標量k自增1*/

{k++;t-;}

/*如果最后*的個數(shù)大于允許的個數(shù)*/

if(k>n)

/*循環(huán)次數(shù)不大于前面的字符與最大允許*的個數(shù)之和*/

{while(*p&&p<t+n+l)<p=""x/t+n+l)<>

/*把字符保存到數(shù)組a中*/

{a[i]=*p;

i++;p++;

)

a[i]=t\O,;

)

)

字符串中尾部*號不能多于n個,多余的要刪除。首先需要通過while循

環(huán)統(tǒng)計字符串尾部*號,然后通過if條件語句完成尾部*號數(shù)和n的比

較,若尾部*號數(shù)多于n個,則需要把n個*號和其余字符重新保存。

23.1voidfun(char*ss)

2{

3inti;

4for(i=0;ss[il!='\\0';i++)/*將ss所指字符串中所有下標為奇數(shù)的字母

轉換為大寫字母*/

5if(i%2==l&&ss[i]>='a'&&ss[i]<='z')

6ss[i]=ss[i]-32;

7}

本題要求將給定字符串ss中下標為奇數(shù)的字母轉換為大寫字母。需要

先判斷下標為奇數(shù)的字母是否是小寫字母,如果是再通過其轉換方法

進行轉換。從C語言的學習中知道,只要將小寫字母減去32即轉換成

大寫宇母,將大寫字母加上32即換轉成小寫字母。本程序用if語句實

現(xiàn)轉換功能。

24.

【考點分析】

本題考查:鏈表的操作,對鏈表的主要操作有以下幾種:建立鏈表、

結構的查找與輸出、插入一個結點、刪除一個結點。

【解題思路】

題目要求求鏈表中數(shù)據(jù)域的平均值,應首先使用循環(huán)語句遍歷鏈表,

求各結點數(shù)據(jù)域中數(shù)值的和,再對和求平均分。遍歷鏈表時應定義一

個指向結點的指針P,因為“頭結點”中沒有數(shù)值,所以程序中讓P直接

指向“頭結點”的下一個結點,使用語句STREC+P=h-nexto

25.

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

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

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

26.\n#include'stdio.h'

\nmain

\n{inti;

\nfbr(i=l;i<=100;i++)

\n{if(i=0)

\ncontinue;

\nprintf('%d',i);

\n}

\n

27.

【解析】按照題目中要求,將str所指字符串中下標為偶數(shù)的字符刪除。

串中剩余字符形成的新串放在t所指數(shù)組中。可以通過將字符串str中

下標為奇數(shù)的字符放到字符串t中,對字符串str中的其余字符不予處

理。最后為新的字符串數(shù)組添加結束符。

28.voidproc(chararrfM][N],char*b)

{

inti,j,k=0;

for(i=0;i++)//i表示其行下標

for(j=0;arr口皿!=\0;j++)//由于每行的個數(shù)不等,因此用a[i][j]!=

'。來作為循環(huán)結束

的條件

b[k++]=arr[i][j];//把二維數(shù)組中的元素放到b的一維數(shù)組中,

b[k]=\O;//最后把b賦\0作為字符串結束的標志

)

【解析】字符串數(shù)組中每一行都是一個一個完整的字符串,其結束標

志為\0。因此通過字符串的結束標志來判斷每一個字符串是否結

束,將字符串數(shù)組中的所有字符串均賦值新的一維數(shù)組b來完成字符

串的合并。

29.voidfun(chara[M][Nl,char*b)

(

inti,j,k=O;

for(i=0;i/*將字符串數(shù)組中的M個字符串,按順序存入一個新的

字符串*/

for(j=O;a[i][j]!='V),;j++)

b[k++]=a[i]U];

b[k]=t\0,;/*在字符串最后加上字符串結束標志*/

)

該題考核的是字符串連接操作。字符串數(shù)組相當于二維字符數(shù)組。字符

數(shù)組a是M行N列的二維數(shù)組。通過兩層for循環(huán)遍歷數(shù)組a,將數(shù)組

a中的元素保存到數(shù)組b中。在數(shù)組b的最后一個元素后添加字符串結

束標志\\(r。

30.

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

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

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

到a數(shù)組中,最后用‘\0’來作為字符串結束的標志。

31.(l)for(i=1;i<=y;i++)(2)t=t%1000;

(l)for(i=l;i<=y;i++)⑵t=t%1000;解析:本題中函數(shù)的功能是

求整數(shù)x的y次方的低3位值。本題解題過程首先是求y次方,然后

對結果進行截取。

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

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

對三個數(shù)進行兩兩比較,實現(xiàn)函數(shù)功能。

33.(l)p=s;(2)while(*p++);(l)p=s;(2)while(*p++);解析:在字符串

的最前端加入n個“*”號,形成新串,并且覆蓋原串。然后通過“printf("

\nThestringatlerinsert:\\"%s\\"sn",s)函數(shù)直接輸出結果。

34.(1)fbr(i=2;i<=m;i++)(2)y+=l,0/(i*i);(l)fdr(i=2;i<=m;

i++)(2)y+=l,0/(i*i);解析:該題中函數(shù)功能是計算公式的值。其中

溫馨提示

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

評論

0/150

提交評論