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頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2022年遼寧省阜新市全國計算機(jī)等級考試

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

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

一、2.填空題(10題)

1.能把計算機(jī)處理好的結(jié)果轉(zhuǎn)換成為文本、圖形、圖像或聲音等形式并

輸送出來的設(shè)備稱為【】設(shè)備。

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

voidreverse(inta[],intn)

{inti,t;

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

{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}

)

main()

{intb[10]={1,2,3,4,5,6,7,8,9,10);inti,s=0;

reverse(b,8);

for(i=6;i<10;i++)s+=b[i];

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

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

4.下述函數(shù)用于統(tǒng)計一行字符中的單詞個數(shù),單詞之間用空格分隔。

word_num(str)

charstr[];

{int,num=O,word=O;

for(i=0;str[i]!=[];i++)

if([]=")wprd=0

elseif(word=O)

word=l:

[];

)

return(num);

)

5.關(guān)系模型的完整性規(guī)則是對關(guān)系的某種約束條件,包括實體完整性、

和自定義完整性。

6.用下面語句調(diào)用庫函數(shù)malloc,使單精度型指針p指向具有40個字

節(jié)的動態(tài)存儲空間,請?zhí)羁铡?/p>

p=(float*)【];

7.如下語句printf("%c\n",B+40);在執(zhí)行后的輸出結(jié)果是【】。

8.數(shù)據(jù)的邏輯結(jié)構(gòu)有線性結(jié)構(gòu)和兩大類。

9.若輸入thistestterminal,以下程序的輸出結(jié)果為:tenninaltestthiso

請?zhí)羁铡?/p>

#defineMAXLINE20

【】

{inti;

char*pstr[3],str[3][MAXLINE];

for(i=0;i<3;++)pstr[i]=str[i];

for(i=0;i<3;i++)scanf("%s",pstr[l]);

sort(pstr);

for(i=0;i<3;i++)prntf("%s",pstr[i]);

)

sort([])

char*pstr[3];

{inti,j;

char*p;

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

for(j=i+l;j<3;j++)

if(strcmp(*(pstr+i,*(pstr+j)>0

{p=*(pstr+i);

*(pstr+i=[1

*(pstr+j)=p;

)

1O.\13農(nóng)內(nèi)存中占1個字節(jié),”\12”在內(nèi)存中占_____個字節(jié)。

二、單選題(10題)

11.有以下程序段:

intx=3;

do

{printf("%d",x-=2);)

while(!(-x));

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

A.lB.30c.i-2D.死循環(huán)

12.已知a、b、c為整型變量,若從鍵盤輸入5〈空格>6(空格>7<

回車〉,使a的值為5,b的值為6,c的值為7,則下列選項中正確的

輸入語句是()o

A.scanf("%3d%3d%3d",a,b,C);

B.scanf("%d%d%d",a,b,C);

C.scanf("%d%d%d",&a,&b,&c);

D.scanf("%d%d%d",&a,&b,&c);

13.有以下程序

#include<stdio.h>

main()

{charcLc2;

cl=A+8-4

c2=A+8-5;

printf("%C,%d\n”,cl,c2);

)

已知字母A的ASCII碼為65,程序運行后的輸出結(jié)果是()OA.E,69B.D,69C.E,

DD.輸出無定值

14.以下敘述中錯誤的是()。

A.形參可以是常量、變量或表達(dá)式

B.實參可以是常量、變量或表達(dá)式

C.實參的類型應(yīng)與形參的類型賦值兼容

D.實參的個數(shù)應(yīng)與形參的個數(shù)一致

15.排序方法中,從未排序序列中依次取出元素與已排序序列中的元素進(jìn)

行比較,將其放入已排序序列的正確位置上的方法,稱為0。

A.希爾排序B.冒泡排序C.插入排序D.選擇排序

16.下列敘述中錯誤的是()。

A.C語言程序必須由一個或一個以上的函數(shù)組成

B.函數(shù)調(diào)用可以作為一個獨立的語句存在

C.若函數(shù)有返回值,必須通過return語句返回

D.函數(shù)形參的值也可以傳回給對應(yīng)的實參

17.設(shè)有以下語句:charstrl[]="string"mstr2[8],*str3,*str4=="string";

則不是對庫函數(shù)的正確調(diào)用。

A.strcpy(strl,"HELL01");

B.strcpy(str2,"HELLO2");

C.strcpy(str3,"HELLO3");

D.strcpy(str4,"HELLO4");

18.若主調(diào)用函數(shù)類型為double,被調(diào)用函數(shù)定義中沒有進(jìn)行函數(shù)類型說

明,而return語句中的表達(dá)式類型為float型,則被調(diào)函數(shù)返回值的類型

是0。

A.int型Bfoat型C.double型D.由系統(tǒng)當(dāng)時的情況而定

19.依次插入序列(50,72,43,85,75,20,34,45,65,30)后建立的二叉搜索樹中,

查找元素30要進(jìn)行()次元素間的比較。

A.4B.5C.7D.10

20.若有定義語句“doublea,*p=&a;",下列敘述中錯誤的是()。

A.定義語句中的“*”是一個間址運算符

B.定義語句中的“*”是一個說明符

C.定義語句中的“p”只能存放double類型變量的地址

D.定義語句中*p=&a”把變量a的地址作為初值賦給指針變量p

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

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

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

不得使用c語言提供的字符串函數(shù)。

例如,字符串中的內(nèi)容為:****A*BC*DEF*G*******,刪除后,字符

串中的內(nèi)容應(yīng)當(dāng)是:

****ABCDEFG。

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

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

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

#include<stdin,h>

voidfun(rhjir?■)

main()

Ichar481),voidNONO();

printff*Enterasiring:\nN);getn(B);

fun(w)3

printf("Thesiringafterdeleted:\n");puts(?);

NONO()?

voidNONO<)

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

FILE?in,?oul;

inti;chars[81Jj

in=fopen(*in.dat*rM);

outxfopcn("out.dat";

M>=01i<10

(?canftin.■);

fun(i)i

fpnnlf(out.H%?\nw.f);

(cloec(in);

lcloBe(oul);

22.請編寫函數(shù)proc(),函數(shù)的功能是求出二維數(shù)組周邊元素之和,作

為函數(shù)值返回。二維數(shù)組中的值在主函數(shù)中賦予。

利■.&二中的■力.

01234

597<S

4383G

1S<■7

則函數(shù)值為59o

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

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

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

試題程序:

3torludwVM&ihh>

sindudeVCOCIMX.b>

8in>:ludeV.UIK).h>

SdefineM4

■drfineNS

innpfuc(mia

voidIBMH(》

iftlMvM](N]■■(IO.L].3,4)?($?9?T.4.5》,

<4」.8?3?6〉.(S.)

"CI*S>>i

pfimtf(-ThrUCXIMMU<Uu0八ft*)i

(oHimOi?*Mil-?)

Clot(J-0jjVN.j++1

pvintlC*K6dt

prind<*\ne)i

ywproc(M)1

pniuK*\nTheAMA:*.y)i

pnntf<*\n*>■

23.

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

是:將字符串中的前導(dǎo)*號全部刪除,中間和后面的*號不刪除。例如,

若字符串中的內(nèi)容為****a*bc*def*g****,刪除后,字符串中的內(nèi)容則

應(yīng)當(dāng)是a*bc*def*g****。注意:部分源程序給出如下。請勿改動main

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

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

FmcludcVadio.h>

&iocludrVcotioo*h>

voidproc<ciMir??lr>

voidnuiin()

rtuif;i

prmd<*Enter■string

g?M<Mr>a

proc<Mr>i

pnntR*TlwRtrtncaiicrd<Wiedt\nk);

&Ut><Mf11]

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

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

例如,當(dāng)str所指字符串中的內(nèi)容為abcdefg,則在t所指數(shù)組中的內(nèi)容

應(yīng)是bdfo

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

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

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

試題程序:

iorlude”nt<fiib.h'a

stnciudkVcooio*

=inclu3rV>idioi

sinclude<,tnn*?

voidpf<ocXciwif?*tr?ciuivd])

VOfedIVMItfll)

clwr>tr{loo]?i[lOO]?

*€*!*?(*】i

pnntf<*\nPle?M*enter?tr%n<Mr*")i

?CMI"°V■"?Mr).

proc(wlf

pruxf(*\nTberesult*?t)t

25.請編寫一"個函數(shù)voidproc(char*tt,intpp[]),統(tǒng)計在tt字符串中"a”

到“z”26個字母各自出現(xiàn)的次數(shù),并依次放在pp所指數(shù)組中。例如,

當(dāng)輸入字符串a(chǎn)bcdefghxyzabcde“e后,程序的輸出結(jié)果應(yīng)該是:

222233110000000000000000111o注意:部分源程序給出如下。請勿改

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

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

/include<comio.

fiincludeVstdio.h2>

#ihdudeVzdlibcb>

voidprac<char?tt?mipp[])

voedMMitfiiI

char

tntbb(M.?ki

?yutetnCi

pnntf(w\nPWe*center?charMrtagti

?can”?%,??&ir).

proc<?ir?bl>>i

lor(kw0ik<2<i-)

pnnlf(sKd-?bbc1lj)i

prmi((*\n*)i

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

案的項目中包含一個源程序文件progl.Co程序中將m個人的成績存放

在score數(shù)組中,請編寫函數(shù)fun(),它的功能是將低于平均分的人數(shù)

作為函數(shù)值返回,將低于平均分的分?jǐn)?shù)放在below所指的數(shù)組中。

例如,當(dāng)score數(shù)組中的數(shù)據(jù)為10、20、30、40、50、60、70、80、

90時,函數(shù)返回的人數(shù)應(yīng)該是4,below中的數(shù)據(jù)應(yīng)為10、20、30、

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

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

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

試題程序:

1#include<conio.h>

2finclude<stdio.h>

3#include<string.h>

4#include<stdlib-h>

5intfun(intscore[],intm,int

belowf])

6{

7

8}

9voidmain()

W(

11FILE*wf;

12int1,n,below[9];

13intscore[9]={10,20,30,40,

50,60,70,80,90};

14system(MCLSM);

15n-fun(score,9,below);

16printf(M\nBelowtheaverage

scoreare:w);

17for(i=0;i<n;i4-+)

18printf(M%dbelow[i]);

19/*************"**/

20wf=fopenCout.dat;

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

Wn

22fprintf(wfz%dzbelow[i]);

23fclose(wf);

24/*****************/

25)

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

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

符串函數(shù)。

例如,字符串中的內(nèi)容為“****A*BC*DEF*G****",刪除后,字符串

中的內(nèi)容應(yīng)當(dāng)是“ABCDEFG”。

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

請勿改動maini)函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(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);

)

28.

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

體數(shù)組stu中,請編寫函數(shù)proc(),其功能是:按分?jǐn)?shù)的高低排列學(xué)生

的記錄,高分在前。注意:部分源程序給m如下。請勿改動main。

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

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

的ioclmlrVadtckh'?>

/drluM1M1(

fetrurt

rharnutnclOji

ttil

STRKf.

wedprociSTKEV?[])

mi

STRECti

forG-hYM“++)/?州■通法技

樽岸“

fcx(j?O“VM-I“??》

11(101八接分散的育伍林**4

立記立?鼻分在■?/

<—必].山]■山?1].?[>+1]-Z

voidmain<)

STREl*MMLM]-(<aGA005*?a5I.{*GA003

7??

(;A0024?^l?<eGAo04e?S5)?(*GAoor?9l

?GAOO7F2GA00B*.61)?(*GA0(MM.B71?

s9M

GAoi$.as<;A013*t>lh(*GA0l2.64l.

*GA0Ua.9lGAOirJSGAO|7M,64I.

?GAOIL.64GAO16e.72)h

ifilii

pcoc(?tn>?

pnfM(("Tbe<UitaiirrMinY、1),

for<i**0iYM*i++)

ilCiKl32*0)

〃與行■出4個?生id0

printfC*\ns>?

pnni(<*H?Kid*?*tu(iXnum??iw(i]v?)?

pn>M(<

29.編寫函數(shù)fun,其功能是:將所有大于1小于整數(shù)m的非素數(shù)存入xx

所指數(shù)組中,非素數(shù)的個數(shù)通過k返回。

例如,若輸入17,則應(yīng)輸出:46891012141516。

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

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

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

#int*!tidr<etdin.h>

voidfun(intm.int*k.int>x[])

main()

inttn.n.w;100];

voidNONO();

printf(*\nPleasrenteranintegernumltrrbrtwrrn10AFMI100:*);

H%dw.&n);

fun(n.Am,zz);

printf(,w\n\nTl>erearf%(I110n-printrnumberslr?sthan%rl;",m.n);

f?<(n?0;n<rn:n-?-*)

pnntff"\n%4<l".a[n');

N()NO();

NOXO()

八請在此函數(shù)內(nèi)打開文件.輸入測試數(shù)據(jù).凋畝Gm函數(shù).

輸出故據(jù).關(guān)閉文件.?/

inim,ntm100J;

FILE?rf.?wf;

M

rf-fi>prn(in.<iul"f**r");

wf=fopcn(**(Hit.<lutMw")

f^nnfCff,"%d".&n);

fun(n.&m.zz)?

MM

fpnntf(wfa%d\n%d\ntm

fer(n=0;n<m:n??1

fprintf(wf,u[n])t

fcl<?c(rf);

fc!ose(wf);

30.

請編寫一個函數(shù)proc(),它的功能是:求出一個4xN整型二維數(shù)組中

最大元素的值,并將此值返回調(diào)用函數(shù)。注意:部分源程序給出如下。

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

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

=N4

sincludeli>

mtpfoc<mi*[]]、」)

voidm*in()

mt?rrU][N[-{L37J1.5.S3?2?<2.-32?9?

81??於

printf(9nujt*%d\n*?proc<arr))i

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

31.下列給定程序中,函數(shù)fun()的功能是找出100?n(n不大于1000)之

間百位數(shù)字加十位數(shù)字等于個位數(shù)字的所有整數(shù),把這些整數(shù)放在s所

指的數(shù)組中,個數(shù)作為函數(shù)值返回。

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

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

試題程序:

#include<stdio.h>

#defineN100

intfun(int*s,intn)

inti,j,k,a,b,c;

j=0;

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

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

k=n;

a=k%10;

k/=10;

b=k%10;

c=k/10;

if(a==b+c)

/************found***'

s[j]=i;

)

returnj;

)

main()

(

inta[N],n,num=0,i;

do

printf("\nEntern(<=1000):”);

scanf("%d",&n);

while(n>1000);

num=fun(a,n);

printf("\n\nTheresult:\n");

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

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

printf("\n\n");

)

32.下列給定程序中,函數(shù)fun()的功能是:將m(lSmS10)個字符串反著

連接起來,組成一個新串,放入pt所指字符串中,例如把3個串DEG,

ac,df反著串聯(lián)起來,結(jié)果是dfacDEG。

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

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

構(gòu)!

試題程序:

#include<conio.h>

#include<string.h>

#include<stdio.h>

voidfun(charstr[][10],intm,char*pt)

intk,q,i,j=0;

for(k=m;k>0;k—)

q=strlen(str[k]);

j+=q;

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

pt[i]=str[k][i];

Pt+=q;

pt[O]=O;

}

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

pt=j;

)

main()

{intm,h;

chars[10][10],p[120];

clrscr();

printf("\nPleaseenterm:");

scanf("%d",&m);

printf("\nPleaseenter%dstring:\n",m);

gets(s[O]);

for(h=0;h<m;h++)

gets(s[h]);

fun(S,m,p);

printf("/nTheresultiS:%s\n",p);

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

則輸出120.000000。

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

注意:不要改動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!=%lAn\n",n,fun(n));

)

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

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

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

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

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

試題程序:

#include<math,h>

intfun(inta,intb,intc)

{if(a+b>c&&b+c>a&&a+c>b)

{if(a==b&&b==c)

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

return1;

elseif(a==b||b==c||a==c)

return2;

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

elsereturn3;

)

elsereturn0;

)

main()

{inta,b,c,shape;

printf("\nlnputa,b,c:");

scanf("%d%d%d",&a,&b,&c);

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

shape=fun(a,b,c);

printf("\n\nTheshape:%d\n",shape);

35.下列給定程序中,函數(shù)fun()的功能是:先從鍵盤上輸入一個3行3

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

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

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

試題程序:

#include<stdio.h>

intfun()

(

inta[3][3],mul;

inti,j;

mu1=1;

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

(

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

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

scanf("%d”,&a[i][j]);

)

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

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

mul=mul*a[i][j];

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

)

main()

(

fun();

)

36.N個有序整數(shù)數(shù)列已放在一維數(shù)組中,給定下列程序中,函數(shù)fun()

的功能是:利用折半查找算法查找整數(shù)m在數(shù)組中的位置。若找到,則

返回其下標(biāo)值:反之,則返回-1。

折半查找的基本算法是:每次查找前先確定數(shù)組中待查的范圍:low和

high(low<high),然后把m與中間位置(mid)中元素的值進(jìn)行比較。如果

m的值大于中間位置元素中的值,則下一次的查找范圍放在中間位置之

后的元素中;反之,下次查找范圍落在中間位置之前的元素中。直到low

>high,查找結(jié)束。

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

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

試題程序:

#include<stdio.h>

#defineN10

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

voidfun(inta[],intm)

{intlow—0,high=N-l,mid;

while(low<=high)

{mid=(low+high)/2;

if(m<a[mid])

high=mid-1;

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

elseif(m>=a[mid])

low=mid+l;

elsereturn(mid);

}

return(-l);

)

main()

{inti,a[N]={-3,4,7,9,13,24,67,89,100,180},k,m;

printf("a數(shù)組中的數(shù)據(jù)如下:");

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

printf("Enterm:");scanf("%d",&m);

k=fun(a,m);

if(k>=0)printf("m=%d,index=%d\n",m,k);

elseprintf("Notbefound!\n");

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

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

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

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

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

99cd99f99。

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

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

試題程序:

#include<conio.h>

#include<stdio.h>

#include<string.h>

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

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

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

strcpy(w,s);

while(*w)

{p=w;r=tl;

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

while(r)

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

elsebreak;

if(*r=='\0')

{a=w;r=t2;

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

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

}

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

)

38.給定程序M0D11.c中函數(shù)fun的功能是;由形參給定n個實數(shù),

輸出平均值,并統(tǒng)計在平均值以上(含平均值)的實數(shù)個數(shù)。

例如,n=8時,輸入:193,199,195,673,195,757,196,051,196,092,

196,596,196,579,196.763

所得平均值為:195.838745,在平均值以上的實數(shù)個數(shù)應(yīng)為:5

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

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

1Ifinclude<stdio.h>

2?intfun(doublex(],intn)

4;/…………found…?……

5;intj.doublexa-0.0;

6;for(j?0;j<n;

7!xa?,x(j)/n;

8;printf(wave-%f\nw,xa);

9;for(j?0;j<n;j4+)

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

11;if(x[j]■>xa)

12IC++;

13ireturnc;

14

15main()

(doublex(100)-(193.199,195.673,

195.757,196.051.196.092,196.596.

196.579,196.763};

HR

printf(%d\nrfun(x,8));

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

字符按逆序存放到t所指字符串中,然后把s所指串中的字符按正序連

接到t所指串的后面。

例如:當(dāng)S所指的字符串為:“ABCDE”時,則t所指的字符串應(yīng)為:

“EDCBAABCDE”。

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

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

*include<stdio.h>

2?include<string.h>

3voidfun(char*srchar*t)

4(

5/?**??***??**found***??**????*/

6int1;

7si?strlen(s);

8for(i-0;i<sl;i++)

9/…………"und…………/

10t[i]?s(sl-i];

11for(i-0;i<sl;i++)

12t■s[i];

13t[2*sl]-^O1;

14)

15main()

16{chars[100],t[100];

17printf("\nPleaseenterstring

Mw

s:);scanf(%s°rs);

18fun(srt);

19printf("Theresult

20

40.給定程序MOD11.C中函數(shù)fun的功能是:找出100至n(不大于

1000)之間三位數(shù)字相等的所有整數(shù),把這些整數(shù)放在s所指數(shù)組中,個

數(shù)作為函數(shù)值返回。

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

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

1;tinclude<stdio.h>

2!IdefineN100

3intfun(int*s,intn)

4{int

5j?0;

6for(i?100;i<n;i++){

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

8k?n;

9a-k%10;k/-10;

10b?k%10;k/-10;

11/found?

12c-k%10

13if(a—b&&a?-c)s[

14}

15returnj;

16}

17main()

18{inta[N],n,num-0ri;

19do

20{printf(w\nEntern(<*1000):

www

);scanf(%dr&n);}

21while(n>1000);

22num-fun(a,n);

23printf(w\n\nTheresult:\n");

nw

24for(i?0;i<num;i++)printf(%5dr

a[i));

25printf(w\n\nw);

26

五、程序改錯題(2題)

41.下列給定程序中,函數(shù)proc的功能是:讀入一個字符串(長度

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

例如,輸入opdye,則應(yīng)輸出deopy。

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

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

構(gòu)。

試題程序:

#include<string.h>

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

//****f^)und****

intproc(charstr[])

(

charc;

unsignedi,j;

for(i=0;i<strlen(str)-1;i++)

for(j=i+l;j<strlen(str);j++)

if(str[i]>str[j])

(

c=str[j]:

//****^)und****

str[j]=str[i++];

str[i]=c;

)

)

voidmain

(

charstr[81];

system("CLS");

printf("\nPleaseenteracharacter

string:");

gets(str);

printf("\n\nBeforesorting:\n%s”,str);

proc(str);

printf("\nAftersortingdecendingly:\n

%s",str);

)

42.

由N個有序整數(shù)組成的數(shù)列已放在一維數(shù)組中,下列給定程序函數(shù)fun

()的功能是:利用折半查找法查找整數(shù)m在數(shù)組中的位置。若找到,

返回其下標(biāo)值;否則,返回一1。折半查找的基本算法是:每次查找前先

確定數(shù)組中待查的范圍low和high(10w%high)o然后用m與中間位

置(mid)上元素的值進(jìn)行比較。如果m的值大于中間位置元素的值,

則下一次的查找范圍落在中間位置之后的元素中;反之,下一次的查找

范圍落在中間位置之前的元素中,直到low>;high,查找結(jié)束。請改

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

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

Sinclude<ntdio.h>

3defineN10

//?????found?■??

voidfun(intatJ?intm)

{intlow=0.high=iI.mid:

whilr(1ow<=high>

{mtd=(low+high)/2:

if(m<a[mid3)

high=mid-I:

//????found????

cUcif(m>“mid]》

low,:mid4-1s

elsercturn<mid);

returnC-1)?

r

voidmain()

finti.a[N]-{-3.4.7,9.13.45?67.89.100.

180>.k,m,

printf(V數(shù)組中的數(shù)據(jù)如下:?),

for(i=0giV、gi++)

printfC*%d*??Lij)t

print£(MEntermJ八

wanf("%d"?&m)i

k^3fun(A.m>i

if(k>?0)

printf(*m=%d?index=%d\n"?m.k>i

ekeprintf(*Notbefound!\n")i

六、操作題(2題)

43.請編寫函數(shù)fun,它的功能是:計算并輸出n(包括n)以內(nèi)能被5或9

整除的所有自然數(shù)的倒數(shù)之和。

例如,在主函數(shù)中從鍵盤給n輸入20后,輸出為:s=0.583333o注

意:要求n的值不大于100o

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

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

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

1:finclude<stdio.h>

doublefun(intn)

3

4

6NONO()

7(/?請在此函數(shù)內(nèi)打開文件,輸入測試數(shù)據(jù).

調(diào)用fun的數(shù),輸出數(shù)據(jù),關(guān)閉文件.?/

8FILE*wf;intnfi;doubles;

9rf?fopenLin.dat"."r");

Rw

10wf?fopen(1?out.datr"w);

11for(i?0;i<10;(

12fscanf(rtf"W,sn);

13s■fun(n);

14fprintf(wf/s

15

16fclose(rf);fclose(wf);

17

18main()

(intn;doubles;

20printf(w\nlnputn:H);scanf("%dw,

£n);

s*fun(n);

H

22printf\nra)

23NONO();

24

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

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

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

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

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

試題程序;

#include<stdio.h>

#include<strzng.h>

#include<conio.h>

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

voidfun(chars[],intn)

chara[80],*p;

inti;

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

S=p;

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

do

{a[i]=*p;

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

i++;

}while(*p);

a[i]=0;

strcpy(s,a);

)

main()

{intn;chars[80];

clrscr();

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

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

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

fun(s,n);

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

參考答案

1.輸出輸出

2.2222解析:在main函數(shù)中,調(diào)用reverse函數(shù)將b數(shù)組中的前8個成

員進(jìn)行互置,執(zhí)行完畢后,b數(shù)組中的成員為{8,7,6,5,4,3,2,1,9,10},然后再

執(zhí)行for循環(huán)結(jié)構(gòu),將b[6],b⑺…b[9]的值相加,結(jié)果為22O

3.完整性控制完整性控制

4.\0'或0或NULLstr[i]num++或num=num+l或mum+=l\\0'或0

或NULL\r\nstr[i]\r\nnum++或num=num+l或mum+=l解析:觀察題

目要求,可以知道以下幾點:

①for循環(huán)的結(jié)束條件應(yīng)當(dāng)是:str[i]已是字符串的最后一個字符;

②str[i]代表字符串str中的第i+1個字符;

③整型變量num的值是要記錄的單詞的個數(shù)。

C語言中規(guī)定字和會串的最后一個字和會是一個隱含的字符串結(jié)束符

所以在題中第一個空中應(yīng)填寫“\\0”題中第二個空應(yīng)填寫“str[i/,

以判斷當(dāng)前位置的字符是否為空格;題中第三個空中應(yīng)當(dāng)填寫“num++”,

通地變量num的加1累加到字符串中的單詞個數(shù)。

5.參照完整性參照完整性

6.malloc(40)malloc(40)解析:庫函數(shù)malloc()只有一個參數(shù),就是所需

分配內(nèi)存的字節(jié)數(shù),然后返回一個void*指針。本題要求分配40個字節(jié),

故直接調(diào)用malloc(40)就可以了。

7.jj解析:在C程序中的字符量可參與任何整數(shù)運算。

8.非線性結(jié)構(gòu)非線性結(jié)構(gòu)

9.main()pstr*(pstr+j)

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

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

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

個字節(jié)。

11.C

本題考查do-while循環(huán),先執(zhí)行dO輸出的x的值為L接著執(zhí)行

while語句,此時--x的值為0,x也為0,而非。為1,循環(huán)成立,接

著執(zhí)行do輸出X值為-2,執(zhí)行--X后,表達(dá)式為-2,而!(--X)為0,退

出循環(huán)。

12.C解析:通過scanf()函數(shù)從鍵盤讀入數(shù)據(jù)時,接收參數(shù)的使用變量的

地址值,所以選項A和B是錯誤的。選項D要求輸入時以逗號間隔,

故按題目要求的輸入方式不能正確讀取到3個數(shù),也是錯誤的。所以正

確答案是C。

13.A

本值輸出兩個值,%c為輸出一個字母,0/4(1輸出一個數(shù)字。"",的

ASCII碼為65,再加4之后為69,也就是字母E,所以本題A正確。

14.A函數(shù)中,形參必須是變量,實參可以是常量、變量或表達(dá)式,選項

A錯誤,選項B正確;實參的個數(shù)和類型要與形參一致,選項C、D正

確。本題答案為A選項。

15.C

16.D形參是定義函數(shù)時由用戶定義的。實參是函數(shù)調(diào)用時,主調(diào)函數(shù)為

被調(diào)函數(shù)提供的原始數(shù)據(jù)。在C語言中,實參向形參傳送數(shù)據(jù)的方式是

“值傳遞'是單向傳遞。故本題答案為D選項。

17.C解析:C語言中:strcpy(stl,st2);,其兩個參數(shù)均為字符指針或字符

數(shù)組,選項C中的目的串指針str3沒有指向具體有效的存儲單元,故是

錯誤的調(diào)用。

18.A

19.B

20.A變量定義語句“doublea,*p=&a;",是一個指針運算符,而非間

址運算符。故本題答案為A選項。

21.

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

【考點分析】

本題考查:指針型變量定義;while循環(huán)語句;if語句條件表達(dá)式;字

符串結(jié)束標(biāo)識,\\0,

【解題思路】

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

除。解答本題,(1)定義一個臨時指針P,初始指向原串首地址;(2)利

用循環(huán)語句把字符串前導(dǎo)*號拷貝到原串;(3)繼續(xù)移動指針,把串中和

串尾的非*號字符拷貝到原串;(4)為修改后的字符串賦結(jié)束字符

【解題寶典】

要刪除字符串中的指定字符,通常采用保留非指定字符的方法??梢?/p>

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

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

符。

22.

【解析】要求二維數(shù)組周邊元素之和,首先應(yīng)該判斷數(shù)組中的每一個

元素是否是周邊元素。找出所有的周邊元素后求和,返回給主函數(shù)。

周邊元素的下標(biāo)特點為行或列的下標(biāo)為?;騈—1。根據(jù)此特點,找出

所有的周邊元素然后求和。

23.

【解析】題目中要求將字符串中的前導(dǎo)*號全部刪除,首先將指針P移

動到第一個不是*的字符,將指針P之后的字符放入原來的字符串中,

并為新的字符串添加結(jié)束符。

24.

“ndeher?mr?chAr

mi?ir>?/('lifttt71?

mt

ior<i-IJVIH〃,?i-2?我示力?ar

心總下缽為今數(shù)的

■中

心]■、o\J國力[■字料率,因包包國用、。作

力婚4癡上

【解析】題目要求將下標(biāo)為偶數(shù)的字符刪除,其余字符放在新的字符

數(shù)組t中。首先取出字符串str中下標(biāo)為奇數(shù)的字符,將其賦值給新的

字符串t,最后用‘\0'作為字符串結(jié)束的標(biāo)志。

25.

【解析】由函數(shù)proc()可知,數(shù)組PP中存放26個字母各自出現(xiàn)的次數(shù),

初始化為0。然后判斷字符串tt中每一個字符,每檢查一個字符,將數(shù)

組PP中相應(yīng)的元素加1。

26.1intfun(intscore[],intm,intbe-low[])

2{

3inti,j=0;

4

溫馨提示

  • 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

提交評論