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

下載本文檔

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

文檔簡介

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

C語言程序設計模擬考試(含答案)

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

一、2.填空題(10題)

1.最簡單的交換排序方法是_____O

2.沒有chara,b;,若要通過a&b運算屏蔽掉a中的其他位,只保留第2

位和笫8位(右起為第1位),則b的二進制是【】。

3.一個類可以從直接或間接的祖先中繼承所有屬性和方法。采用這個方

法提高了軟件的【】,

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

structNODE

{intk;

structNODE*link;

};

main()

{structNODEm[5],*p=m,*p=m,*q=m+4;

inti=0;

while(p!=q)

{p->k=++i;p++

q->k=i++;q—;

q->k=i;

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

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

ptintf("\nH);

}

5.若給fun函數的形參s傳送字符串“UU6354,abc”(其中U表示空格字

符),則函數的返回值是【】。

longfun(charslJ)

{longn;intsign;

for(;isspace(*s);s++);

sign=(*s==,-,)?-l:l;

if(*S==+||*S=二S++;

for(n=0;isdigit(*s);s++)

n=10*n+(*s-'O');

returnsign*n;

)

6.fun函數的功能是:首先對a所指的N行N列的矩陣,找出各行中的

最大數,再求這N個最大值中的最小的那個數作為函數值返回。請?zhí)?/p>

空______O

#include<stdio.h>

#defineN100

intfun(int(*a)[N])

introw,col,max,min;

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

fbr(max=a[row][0],col=1;col<N;col++)

if()max=alrowJlcol];

if(row==0)min=max;

elseif()min二max;

returnmin;

)

7.以下函數rotate的功能是:將a所指N行N列的二維數組中的最后一

行放至b所指二維數組的第0列中,把a所指二維數組中的第0行放到

b所指二維數組的最后一列中,b所指二維數組中其他數據不變。

#defineN4

voidrotade(inta[][N],intb[J[N])

{inti,j;

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

{b[i][N-l]=[9];[101:a[N-l][i];}}

8.C語言程序的注釋可以出現在程序中的任何地方,一個注釋以【】分

別作為開始和結束。

9.下面程序的功能是輸出數組s中最大元素的下標,請?zhí)羁铡?/p>

main()

{intk.p,s[]={l,-9,7.2,-10.3);

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])[]

printf(n%d\n,',k);)

10.若a=l,b=2,則表達式!(x=A)II(y=B)&&0的值是

二、單選題(10題)

11.若有定義“a[]={123,4,5,6,7,8,9,10}”則“a[a[5]『的值是()。

A.2B,4C.3D.10

12.若有定義:

typedefint*(*T[10])[10];

Tb;

則以下選項中所定義的a與上述定義中的b,其類型完全相同的是

()O

A.int*(*a[10][10]);

B.int**a[10][10];

C.int*(a[10])[10];

D.int*(*a[10])[10];

13.有三個關系R、S和T如下:

由關系R和S得到關系T的操作是()。

A.自然連接B.交C.除D.并

14.最小堆[0,3,2,574,6,8],在刪除堆頂元素0之后,其結果是0

A.[3,2,5,7,4,6,8]

B.[2,3,5,7,4,6,8]

C.[2,3,4,5,7,8,6]

D.[2,3,4,5,6,7,8]

15.在單鏈表指針為p的結點之后插入指針為s的結點,正確的操作是

()。

A.p->next=s;s->next=p->next;

B.s->next=p->next;p->next=s;

C.p->next=s;p->next=s->next;

D.p->next=s->next;p->next=s;

16.軟件生命周期是指()o

A.軟件產品從提出、實現、使用維護到停止使用退役的過程

B.軟件從需求分析、設計、實現到測試完成的過程

C.軟件的開發(fā)過程

D.軟件的運行維護過程

17.若有定義:

typedefint*INTEGER;

INTEGERp,*q;

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

A.q是基類型為im的指針變量

B.p是int型變量

C.p是基類型為int的指針變量

D.程序中可用INTEGER代替類型名int

18.若某二叉樹的前序遍歷訪問順序是abdgceC,中序遍歷訪問順序是

dgbaechf,則其后序遍歷的結點訪問順序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

19.最大容量為n的循環(huán)隊列,隊尾指針是rear,隊頭是front,則隊空的

條件是0。

A.(rear+1)MODn=front

B.rear二front

C.rear+l=front

D.(rear-l)MODn=front

20.設a,b,c,d,m和n均為int型變量,且a=5,b=6,c=7,d=

m=2,n=2,則邏輯表達式(m=a>b)&&(n=c>d)運算后,n的值為

()

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

三、程序設計題(10題)

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

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

中只包含字母和*號°請編寫函數其功能是使字符串的前導*號不得多于

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

理。字符串中間和尾部的*號不刪除。

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

4,刪除后,字符串中的內容應當是“****A*BC*DEF*G****";若n

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

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

數。

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

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

voidfun(char*a,intn)

(

}

voidmain()

(

chars[81];intn;

printff'Enterastring:\n^^);

gets(s);

printff'Entcrn:");

scanf("%d",&n);

fun(s,n);

printf(t4Thestringafterdeleted:\n^^);

puts(s);

22.編寫fun()函數,它的功能是:利用以下所示的簡單迭代方法求方程

cos(y)-y=0的一個實根。

yn+l=cos(yn)

迭代步驟如下:

⑴取yl初值為0.0;

(2)y0=yl,把yl的值賦給y0;

(3)yl=cos(yO),求出一個新的yl;

(4)若yO二yl的絕對值小于0.000001,則執(zhí)行步驟

(5),否則執(zhí)行步驟(2);

(5)所求yl就是方程COS(y)-y=0的一個實根,作為函數值返回。

程序將輸出結果Result=O.739085c

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

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

部分源程序給出如下。

試題程序:

WmdudrVcofMkh>

iinrlude<math.h>

includeVadso.h>

floatfan(>

voidmainC>

FILE?。皿

flcMt).

pntitf(aReMih?>Ml\netco?)i

out-ao?t(ilcd*f*.*w*)i

fpnnt((ovl?aKr.ro?)?

fdo?e(oui)4

23.n個人的成績存放在score數組中,請編寫函數proc(),它的功能是

將低于平均分的人數作為函數值返回,將低于平均分的分數放在down

所指的數組中。例如,當score數組中的數據為{99,80,40,56.59,

84,60,76,100}時,函數返回的人數應該是4.down中的數據應為

40565960o注意:部分源程序給出如下。請勿改動main()函數和其

他函數中的任何內容,僅在函數proc()的花括號中填入所編寫的若干

語句。試題程序:

9ineiudv<?t<Uib.h2>

9incitMk<conio.b>

9inrludc<C?td*(K

9include<?trtn?.h>

inipror(MM*coer[j.mi??midowtx]>

voidnuiaC)

(

intIen.dowti[9]i

mt?corr(9]—《”?iO?4O.S4?59?S4?

?0.?6.|00||

n?ptoc(M<or?.9.down>i

pnntK*\ndowniotheaveraffcMore?re,")g

k>〃i,0iY4->

pnnrt(*%d..downCi:"

prtntfC-\D*)I

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

符串(每串的長度

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

例如,若字符串數組中的M個字符串為:

ABCD

BCDEFG

CDEFGHI

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

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

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

#defineM3

#defineN20

voidproc(chararrlM][NJ,char*b)

(

)

voidmain

(

charstrlMJ[NJ={nABCDn,“BCDEFG”,“CDEFGH1"),i;

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

printff'Thestrin9:krT);

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

puts(str[i]);

printf(H\nM):

proc(str,an-);

printf("TheAstring:\n");

printf("%Su,arr);

printf("\n\nn);

)

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

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

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

k所指向的存儲單元中。

例如,輸入如下整數:

876675896101301401980431451777則輸出結果為6,980。

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

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

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

1#include<conio.h>

2tinclude<stdio.h>

3*include<stdlib.h>

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

Ui1

6

H}

8voidmain()

I-

10FILE*wf;

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

301r401r980,431,451,777k;

12system("CLS'1);

13fun(af10,&k);

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

15/?*???*?**????????/

16wf=fopen(nout.datM,"w");

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

*r

18fclose(wf);

19/??*??????????**?*/

20}

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

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

fun(),該函數的功能是統(tǒng)計各年齡段的人數。N個年齡通過調用隨機

函數獲得,并放入主函數的age數組中。要求函數把0?9歲的人數存

放在d[0]中,把10~19歲的人數存放在仇1]中,把20?29歲的人數存

放在仇2]中,依此類推,把100歲(含100歲)以上年齡的人數都存放在

d[10J中。結果在主函數中輸出。

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

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

試題程序:

1tinclude<stdio.h>

2?defineN50

3tdefineM11

4voidfun(int*a,int*b)

5

6

7

8doublernd()

91(

10statict-29,c-217,m-1024,r,0;

11r=(r?t+c)%m;

12return((double)r/m);

13]

14voidmain<)

15(

16FILE?wf;

17intage[Nj,i,d[M];

18intb[N]-{32,45,15,12,86,49,

97,3,44,52,1*7,95,63);

for(i-0;i<N;i??)

20age[i]-(int)(115*rnd());

/?產生一個隨機的年齡數組*/

21printf(**Theoriginaldata

22for(i-0;i<N;i)

23printf((i+1)*1。-0?

4d",age[ij);/?縱K出10Mt?/

24printf(w\n\nM);

25fun(age,d);

26for(i-0;i<10;i++)

)27printf(H%4d■—%4d:%4d\n",

i*10,i*10*9,d[i]);

printf("Over100:%4d\nw,d[10]);

/******?******?***/

wf-fopen(Mout.datH,Mww);

fun(brd);

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

fprintfMf,n4d-14d:%4d\nM,i

?10,i*10+9,d[i]);

34fprintf(wfrnOver100:%4d"#d[10]);

35fclose(wf);

36

27.編寫函數fun,其功能是:求ss所指字符串中指定字符的個數,并返

回此值。例如,若輸入字符串123412132,輸入字符為1,則輸出3。

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

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

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

?include<stdio.h>

tincluck<Mring.h>

MdineM81

in!fun(char?ss,charc)

main()

Ichar?[M],ch;

voidNONO();

printf("\nPleAMenterasiring:**)?gets(a);

printf("VnPleaseenterachar:");ch=ge<char();

printf(**\nThenumberoftherharis:%d\n",fun(a,ch));

NONO();

I

voidNONO()

!/?本函數用于打開文件,齡人測試數據,調用fun函數,輸出數據,關閉文件。?/

inti;

FILE?rf.?wf;

chara[M],b[M],ch;

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

wf=fopen("out.dat",**w");

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

I

fik:anf(rf,a);

fecanf(rf."%?*.b);

ch=?b;

fprintf(wf."%c?%d\n",ch,fun(a,ch));

I

fcJoee(rf);

fcioee(wf):

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

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

其功能是根據以下公式計算S,并將計算結果作為函數值返回,通過形

參傳入。

5=1+-——+----------+…+----------------------

1+21+2+31+2+3+,??+〃

例如,若n的值為11時,函數的值為1.833333。

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

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

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

試題程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#include<string.h>

floatfun(intn)

(

)

voidmain()

(

intn;

floats;

system(“CLS”);

printf(€t\nPlcascenterN:");

scanf("%d'',&n);

s=fun(n);

printf(44Theresultis:%f\n",s);

)

29.假定輸入的字符串中只包含字母和*號。請編寫函數proc,它的功

能是:將字符串中的前導*號全部刪除,中間和后面的*號不刪除。

例如,若字符串中的內容為****a*bc*de伴g****,刪除后,字符串中

的內容則應當是a*bc*def*g**

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

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

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

試題程序:

#include<stdio.h=:{>

#include<conio.h>

woidproc(char*str)

(

)

voidmain

charstr[81];

printf("Enterastring:\nu);

gets(str);

proc(str):

printf("Thestringafterdeleted:\n");

puts(str);}

30.請編寫函數proc(),它的功能是:求出str所指字符串中指定字符的

個數,并返回此值。例如,若輸入字符串12341234123,輸入字符4,

則輸出2。注意:部分源程序給出如下。請勿改動main()函數和其

他函數中的任何內容,僅在函數proc()的花括號中填入所編寫的若干

語句。試題程序:

0tnelud<Vntdlib,k>

3include<conio.h>

SincludeV.tdxk

?defiMNSI

>ntprocCchar?Mr.rharc)

voidmain()

(duirA(N]?chi

?y?te?n("CLS0)?

pn?tf(*\nPleMeEQrr?wirmgc*>i

fetji(a)i

print((-\nPl??Rermer■chart*)i

ch-geicM)i

pnntf(*\nTh?numberclthecharuii%d

\o".proc<??ch))i

)

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

31.下列給定程序中,函數fun()的功能是:從n個學生的成績中統(tǒng)計出

低于平均分的學生人數,此人數由函數值返回,平均分存放在形參aver

所指的存儲單元中。例如輸入8名學生的成績:

80.5607290.59851.58864

則低于平均分的學生人數為4(平均分為75.5625)。

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

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

試題程序:

#include<stdio.h>

#include<conio.h>

#defineN20

intfun(float*s,ihtn,float*aver)

{floatave,t=0.0;

intcount=0,k,i;

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

/*!**!*fl/

/小小小小小小不不不不不不不T/~\Iind不不小小不不不不不小不不小小/

t=s[k];

ave=t/n;

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

if(s[i]<ave)count++;

/*1**1<*1**1**1**1**1**1**1*C1*1**1*-b/

/*T**t**t**T**T**T**T**T**j**t**T**i**i*T/~\l個個個個個個個個個個個個個個/

*aver=&ave;

returncount;

main()

{floatsL30J,aver;

intm,i;

clrscr();

printf(n\nPleaseenterm:");scanf

(“%d”,&m);

printf("\nPlcascenter%dmark:\n",m);

for(i=0;iprintf(n\nThenumberofstudents:

%d\nn,fun(s,m,&aver));

printf("Ave=%f\nn,aver);

)

32.下列給定程序中,函數fun()的功能是:將字符串p中所有字符復制

到字符串b中,要求每復制3個字符之后插入一個空格。例如,在調用

fun()函數之前給字符串a輸入ABCDEFGHIJK,調用函數之后,字符串

b中的內容則為ABCDEFGHIJKO

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

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

試題程序:

#include<stdio.h>

voidfun(char*p,char*b)

{inti,k=0;

while(*p)

f?1??1?/*i/

/不不不不不不不不不不不不不un°不小不不不不不不不不不不不不不/

while(i<3||*P)

b[k]=*p;

k++;p++;i++;

if(*p)

/、!?、!?、!,、!,*!,*!**!*1*!,*2*\J*“■”■”■*?**?**?*/

/不不不不不不不不不不不不不tm]不不不不不不不不不不不不不不不/

{b[k]='';}

)

b[k]='\0';

)

main()

{charal80J,bl80];

printf("Enterastring:*');gets(a);

printf("Theoriginalstring:");

puts(a);

fun(a,b);

printf("\nThestringafterinsert

space:");puts(b);printf(n\n\nM);

)

33.已知一個數列從。項開始的前3項:0.0.1,以后的各項都是其相

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

該數列前。項的平方根之和sum。n的值通過形參傳入。例如,當"10

時,程序的輸出結果應為23.197745。

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

注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構.

試題程序:

#include<conio.h>

#include<stdio.h>

#include<math.h>

/*1**1*1?1??!??1?*1**1**1**1**!**1*q,*1*/

/小小小小小小不不不不不不小不小tm]nd"、'、不不不不不不不不不不不小小小小小不/

fun(intn)

{doublesum,sO,s1,s2,s;intk;

sum=1.0;

if(n<=2)sum=O.O;

sO=O.O;sl=O.O;s2=1.0;

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

{s=s0+sl+s2;

sum+=sqrt(s);

sO=s1;sl=s2;s2=s;

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

returnsum

)

main()

{intn;

clrscr();

printf(HInputN=n);

scanf(M%dn,&n);

printf(H%f\nn,fun(n));

)

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

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

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

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

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

1?include<stdio.h>

2#include<string.h>

3voidfun(chars[],intn)

4

5chara[80],*p;

6inti;

7/**********found**1

8s-p;

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

10do

11{a(i]-*p;

12

13)

14/*………found*

15while(*p++)

16a[i)-0;

17strcpy(s,a);

18}

19main()

20{intn;chars[80];

21printf("\nEnterastring:");

gets(s);

Hn

22printf(\nThestring\"%sV\nrs);

23printf(M\nEntern(numberof*):

www

);scanf(%dr&n);

24fun(s,n);

25printf(w\nThestringafterinsert:

\w%s\"\nM,s);

26

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

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

位。

例如,當s中的數為7654321時,t中的數為642。

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

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

[試題源程序]

#include<stdio.h>

r_1*S**1**2*/

/不不不不不不不不不不不小tci1n(1不不不不不不不不不不不/

voidfun(longs,longt)

(

longsi=10;

s/=10;

*t=s%10;

f?1??£?*1**1**1**1*/*1/

/不不不不不不不不不不不不t()Lind**??、?.、???????????????不舉不/

while(s<0)

(

s=s/l00;

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

sl=sl*10;

)

)

msin()

(

longs,t;

printf("\nPleaseenters:");

scanf(n%ldM,&s);

fun(s,&t);

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

)

36.下列給定程序中,函數fun()的功能是:在字符串的最前端加入n個

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

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

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

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

試題程序;

#include<stdio.h>

#include<strzng.h>

#include<conio.h>

/^*<1>?1><1^^1#^1#<1**1*/*J<1^<1^<1^*£**2**£**2*?£*?£*<1^<1^/

/不不不不不不不不不不不小可、不小4、不tci]n([不不不不不不不不不不不不不不不/

voidfun(chars[],intn)

chara[80],*p;

inti;

ft

/不不不*X不*?X不*不不不不不不不不不不不不[cun1a?f>不小不不不不不不不不不不不不不/

S=p;

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

do

{a[i]二*p;

tZ*[*1^*X^*i^*i^*2^*i^*2^*X**X*/

/個個不小不不不不不不不不不不小小小re1]nn不不不不不不不不不不不不不不不/

i++;

}while(*p);

a[i]=0;

strcpy(s,a);

)

main()

{intn;chars[801;

clrscr();

printf(n\nEnterastring:");gets(s);

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

printf("\nEntern(numberof*):H);scanf("%d",&n);

fun(s,n);

H

printf(\nThestringafterinster:\%s\n",s);

37.下列給定程序中,函數fun()的功能是:在字符串str中找出ASCII

碼值最小的字符,將其放在第一個位置上,并將該字符前的原字符向后

順序移動。例如,調用fun()函數之前給字符串輸入fagAgBDh,調用后

寧符串中的內容為AfaggBDh。

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

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

試題程序:

#include<stdio.h>

/*************8und************/

voidfun(charp)

charmin,*q

inti=0;

min=p[i];

while(p[i]!=0)

if(min>p[i])

/本市木木木木木木木木木木木found本本小本木木木木木木木不本/

p=q+i;

min=p[i];

)

i++;

)

while(q>p)

{*q=*(q-l);

q-/

p[0]=min;

main()

(

charstr[80];

printf(HEntcrastring:");

gets(str);

printf("\nTheoriginalstring:");

puts(str);

fun(str);

printf("\nThestringaftermoving:");

puts(str);

printf("\n\nn);

)

38.給定程序MODH.C的功能是:讀入一個英文文本行,將其中每個

單詞的第一個字母改成大寫,然后輸出此文本行(這里的“單詞”是指由空

格隔開的字符串)。

例如,若輸入;Iamastudenttotaketheexamination則應輸出:lAmA

StudentToTakeTheExamination.o

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

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

1?include<ctype.h>

2finclude<string.h>

3/*………**found*****

4include<stdio.h>

5/***………found******……/

6upfst(charp)

7{intk?0;

8for(;*p;p++)

9if(k)

10{if(*p-?k-0;)

11elseif(*p1,)

12(k-1;*p-toupper(*p);}

13}

14main()

15(charchrstr(81);

16printf("\nPleaseenteranEnglish

textline:");gets(chrstr);

17printf("\n\nBeforechanging:\n

%s",chrstr);

18upfst(chrstr);

19printf(M\nAfterchanging:\n%s\n”,

chrstr);

20

39.給定程序MOD11.C中函數fun的功能是:用下面的公式求兀的近

似值,直到最后一項的絕對值小于指定的數(參數num)為止:

Kt111

4357

例如,程序運行后,輸入0.0001,則程序輸出3.1414。

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

注意:不要改動smain函數,不得增行或刪行,也不得更改程序的結構!

finclude<math.h>

,include<stdio.h>

floatfun(floatnum)

4{ints;

floatn,t,pi;

6t-l;pi-0;n-l;s

7/…………"ound………

8while(t>=num)

9

10

11

12s--s;

13

14

15

16pi-pi*4;

17returnpi;

18

19main()

20{floatnl,n2;

21printf("Enterafloatnumber:");

22scanf("%f&nl);

23n2-fun(nl);

24printf(H%6.4f\nw,n2);

25

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

寫字母七二

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

注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構.

試題程序:

#include<stdio.h>

voidfun(char*s)

{intij;

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

if(sill!='c')

/*!**1**1*?!?*1**1**1**1*/

I*T、*1、*1*"、*5、*1、*7**T**7?*.?*.?*??*.**1、4、4、J

SLil=s[i];

/不不不不不不不不不不不小可、不if_)]in(1不不不不不不*不£**不1**不2**不1*不不不/

s[i]='\0,;

main()

{chars[80];

printf(u\nEnterastring:");

gets(s);

printf("Theoriginalstring:")

puts(s);

fun(s);

printf(HThestringafterdeleted:");

puts(s);printf(u\n\n'*):

五、程序改錯題(2題)

41.

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

直到最后一項的絕對值小于指定的數(參數num)為止。兀/4=1-1/

3+1/5-1/7+…例如,程序運行后,輸入00001,則程序輸出314140

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

()函數,不得增行或刪行,也不得更改程序的結構。試題程序:

「include<5tdlib.h>

匚include<math.h>

「include<stdio.h>

floatproc(floatnum)

{

ints:

floatn.t.pi:

t1?pi=01n;111

//????found*???

while(t>—num)

n=n+2;

x=-?|

//????found????

t=s%n?

pi=pi?4i

returnpit

]

voidmAin(>

[

floatn!(n2;

sy5tem("CI.S',);

printf("Enterafloatnumber:*>t

n2-proc(nl)i

print""%6.4f\n".n2>?

42.下列給定程序中,函數proc()的功能是:在字符串str中找出ASCH

碼值最大的字符,將其放在第一個位置上,并將該字符前的原字符向

后順序移動。例如,調用proc()函數之前給字符串輸入DcybkdGT,調

用后字符串中的內容為yDebkdOT。

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

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

構。

試題程序:

stinclude<?tdio.h>

//????found????

voidproc(chart>

(

charmax.■qiinti=0j

max—/]:

while(t[i]!?0)

{

if(max<t[i]>

(

//????found????

t=q+iimax。l[i]i

i++,

)

while(q>t>

{

?q??(q-1)?

q一—I

)

t[0]=maxi

}

voidmain()

charstr[80]i

printf("Enterastring!")?gcts(5ir);

printf("\nTheoriginalsiring:*)(

put!((str):

proc(str)(

printf("\nThestringaftermoving:")i

putH(5tr)iprint(C\n\n")?

}

六、操作題(2題)

43.以下fun函數的功能是在N行M列的整型二維數組中,選出一個

最大值作為函數值返回,請?zhí)羁铡?設M,N已定義)

intfun(inta[N][M])

{inti,j,row=0,col=0;

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

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

if(a[i][j]>a[row][col])(row=i;col=j;)

return();

)

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

案的項目中包含一個源程序文件blankl.c。在此程序中,函數fun()的功

能是在形參s所指宇符串中尋找與參數c相同的字符,并在其后插入一

個與之相同的字符,若找不到相同的字符則不做任何處理。

例如,若s所指字符串為"baacda”,c中的字符為a,執(zhí)行后s所指字

符串為"baaaacdaa”。

請在程序的下劃線史填入正確的內容并將下劃線刪除,使程序得出正

確的結果。

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

不得增行或刪行,也不得更改程序的結構!

試題程序:

#include<stdio.h>

voidfun(char*s,charc)

{inti,j,n;

?£?一1??1/

/不不不不不不不不不tcund4不小小小小小小小/

for(i=0;s[i]!=[1];i++)

if(sli]==c)

(

/*T**?**T**T**T**T**T**T**T*£|"*1fl1個個個個個個個個個//

n=[2];

while(s[i+l+n]!='\0')

n++;

for(j=i+n+1;j>i;j--)

s[j+l]=s[j];

/??kt??£*“?“??f?/

/不拳拳不不不不不不roiind不不小不不不不不不/

s[j+l]=[3];

i=i+l;

)

main()

{chars[80]=,,baacda\c;

printf(€t\nThestring:%s\n'Vs);

printf(M\nlnputacharacter:^^);

scanf(t€%c”,&c);

fun(s,c);

printf(n\nTheresultis:%s\n”,s);

參^i-x考-+?合Xh案lI

1.冒泡排序冒泡排序解析:交換排序是指借助數據元素之間的互相交換

進行排序的一種方法。冒泡排序是一種最簡單的交換排序方法,它是通

過相鄰元素之間的相互交換逐步將線性表變成有序。

2.1000001010000010解析:運算的規(guī)則是只有當兩個相應的二進制

位都為1時,該位的結果才為lo要保留第2、8位,只要將其與二進制

數10000010相與。

3.可重用性繼承的優(yōu)點:相似的對象可以共享程序代碼和數據結構,從

而大大減少了程序中的冗余,提高軟件的可重用性。

4.1343113431解析:程序首先定義了一個結構體NODE,在主函數中聲

明了一個該結構體的數組m⑸和兩個結構體指針p和q,并分別初始化

P指向m(指向數組的第一個元素):q指向m+4(指向數組的最后一個元

素)。接下來定義并初始化一個整型變量i為O0然后用一個while循環(huán),

在P和q不相等的時候執(zhí)行循環(huán)體:讓p所指結構體的成員k等于++i

的值,然后讓p指向下一個結構體;讓q所指結構體的成員k等十i++

的值,然后讓q指向前一個結構體。i從0開始交替調用++i和i++,兩

個表達式的值依次分別為1和1、3和3……。所以當p==q循環(huán)結束時,

實際循環(huán)了兩次,P和q都指向m數組的中間位置mL2],i自增了4次,

所以q->k=i;就是讓m[2]k=4。所以程序最后輸出為:13431。

5.63546354解析:函數fun的第一個for循環(huán)跳過字符串的前導空白符,

接著判斷第一個非空白符是否是負號,若是,則置變量sign為-1活則,

置變量sign為lo接著的if語句在第一個非空白字符是負號或正號時,

跳過該字符。以后的for循環(huán)將后面的數字符當作十進制數的各位數字

轉換為一個長整數兒當遇字符a時,結束循環(huán)。最后,函數返回sign

與n的乘積。所以若調用函數時提供的實參是“UU6354abc",則函數的

返回值是6354。

6.afiowl[col]>max或a[row]fcoll>=max或max<=a[row]|col]或max

<a[iow][collmax<min或min>maX或max<=min或min>

=maxa[iow][col]>max或a[row][col]>二max或max<=a[row][col]

max<a[iow][col]\r\nmax<min或min>maX或max<=min或min>

二max解析:本題有兩層for循環(huán),主函數中定義了整型變量iow、col、

max和min,其中row用來存放外循環(huán)中的循環(huán)次數,col用來存放內

循環(huán)中的次數,max記錄每行中的最大值?,min記錄所有行中最大值中

的最小值。在內循環(huán)中,首先給max賦初值為每行的第0列元素值.然

后從第一列開始依次與max進行比較。如果大于max則將其值賦給max,

當每一行循環(huán)結束,max記錄了每一行的最大值。所以第一個空應該填

a[row][col]>max或a[row][col]=max.退出內循環(huán),在第一次退出內循

環(huán)時,將min賦初值為第。行的max,然后在每次退出內循環(huán)時,將

min和每行的max比較,如果大于max,則將max值賦min,所以第二

個空應該填max<min或min>max,當退出外循環(huán)時,min為所有行

中的最大值的最小值。

7.

b[i][N?l];實現把a所指二維數組中的第0行放到b所指二維數

組的最后一列中,b[i]fO]=a[N-l][i]門實現將a所指N行N列的二維數

組中的最后一行放到b所指二維數組中的第0歹人

\r\n

\r\n

8./**〃**/解析:C語言程序的注釋可以出現在程序基本單詞之間的任

何地方,C語言程序的注釋以"/*”作為開始標記,并以“*尸作為結束標記。

9.k=p;k=p;解析:為要尋找數組中的最大元素的下標,需先預設1個

臨時最大元素的下標,并順序逐一考查數組的元素,當發(fā)現當前元素比

臨時最大元素更大時,就用當前元素的下標更新臨時最大元素下標。直

至考查了數組的全部元素后,這臨時最大元素下標就是數組的最大元素

下標。通常預設的最大元素下標是數組的首元素下標,考查是從首元素

開始順序向后繼元素考查。程序中,存儲臨時最大元素下標的變量是k,

變量P控制順序考查的循環(huán)控制變量。當發(fā)現當前元素S[p]比臨時最大

元素S[k)更大時,應該用p更新ko所以在空框處應填入代碼“k=p二。

10.00解析根據運算符的運算順序可知,該表達式最后運算的是與(&&)

運算,而任何表達式與“0”進行“與”運算,結果都為0。

ll.c題干中,數組a包含10個元素。其中a[5]為6,a[7]為8,a[l]為

2,所以表達式“a[a[5]?a[7]/a[l]「等價于"a[6.8/2『,等價于a⑵,即3。

故本題答案為C選項。

12.D-typcdefint使用typedef定義一種新類型名T,T的

類型是二維數組指針,指向10個元素的數組。其中數組元素類型為int

*[10],即數組的每個元素又是包含10個元素的數組,數組的元素是整

型指針類型。故本題答案為D選項。

13.C

由圖所知,其中,C中只有一個屬性,是除操作。

14.C

15.B

16.A通常,將軟件產品從提出、實現、使用維護到停止使用退役的過程

稱為軟件生命周期。也就是說,軟件產品從考慮其概念開始,到該軟件

產品不能使用為止的整個時期都屬于軟件生命周期。

17.C題干中使用typedef定義新類型名INTEGER,它代表int*類型"吏

用INTEGER定義p相當于int*p。使用INTEGER定義*q,相當于int

**q。所以P是基類型為int的指針變量,q是基類型為int*的指針變量,

選項A、B、D錯誤。故本題答案為C選項。

18.D解析:中序遍歷的遞歸算法定義

溫馨提示

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

評論

0/150

提交評論