版權(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ì)模擬考試(含答案)
學(xué)校:班級(jí):姓名:考號(hào):
一、2.填空題(10題)
1.最簡單的交換排序方法是_____O
2.沒有chara,b;,若要通過a&b運(yùn)算屏蔽掉a中的其他位,只保留第2
位和笫8位(右起為第1位),則b的二進(jìn)制是【】。
3.一個(gè)類可以從直接或間接的祖先中繼承所有屬性和方法。采用這個(gè)方
法提高了軟件的【】,
4.以下程序運(yùn)行后的輸出結(jié)果是【】。
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函數(shù)的形參s傳送字符串“UU6354,abc”(其中U表示空格字
符),則函數(shù)的返回值是【】。
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函數(shù)的功能是:首先對(duì)a所指的N行N列的矩陣,找出各行中的
最大數(shù),再求這N個(gè)最大值中的最小的那個(gè)數(shù)作為函數(shù)值返回。請(qǐng)?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.以下函數(shù)rotate的功能是:將a所指N行N列的二維數(shù)組中的最后一
行放至b所指二維數(shù)組的第0列中,把a(bǔ)所指二維數(shù)組中的第0行放到
b所指二維數(shù)組的最后一列中,b所指二維數(shù)組中其他數(shù)據(jù)不變。
#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語言程序的注釋可以出現(xiàn)在程序中的任何地方,一個(gè)注釋以【】分
別作為開始和結(jié)束。
9.下面程序的功能是輸出數(shù)組s中最大元素的下標(biāo),請(qǐng)?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,則表達(dá)式!(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;
則以下選項(xiàng)中所定義的a與上述定義中的b,其類型完全相同的是
()O
A.int*(*a[10][10]);
B.int**a[10][10];
C.int*(a[10])[10];
D.int*(*a[10])[10];
13.有三個(gè)關(guān)系R、S和T如下:
由關(guān)系R和S得到關(guān)系T的操作是()。
A.自然連接B.交C.除D.并
14.最小堆[0,3,2,574,6,8],在刪除堆頂元素0之后,其結(jié)果是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的結(jié)點(diǎn)之后插入指針為s的結(jié)點(diǎn),正確的操作是
()。
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.軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用維護(hù)到停止使用退役的過程
B.軟件從需求分析、設(shè)計(jì)、實(shí)現(xiàn)到測(cè)試完成的過程
C.軟件的開發(fā)過程
D.軟件的運(yùn)行維護(hù)過程
17.若有定義:
typedefint*INTEGER;
INTEGERp,*q;
則以下敘述正確的是()。
A.q是基類型為im的指針變量
B.p是int型變量
C.p是基類型為int的指針變量
D.程序中可用INTEGER代替類型名int
18.若某二叉樹的前序遍歷訪問順序是abdgceC,中序遍歷訪問順序是
dgbaechf,則其后序遍歷的結(jié)點(diǎn)訪問順序是()。
A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca
19.最大容量為n的循環(huán)隊(duì)列,隊(duì)尾指針是rear,隊(duì)頭是front,則隊(duì)空的
條件是0。
A.(rear+1)MODn=front
B.rear二front
C.rear+l=front
D.(rear-l)MODn=front
20.設(shè)a,b,c,d,m和n均為int型變量,且a=5,b=6,c=7,d=
m=2,n=2,則邏輯表達(dá)式(m=a>b)&&(n=c>d)運(yùn)算后,n的值為
()
A.0B.1C.2D.3
三、程序設(shè)計(jì)題(10題)
21.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方案
的項(xiàng)目中包含一個(gè)源程序文件progl.c。在此程序中,規(guī)定輸入的字符串
中只包含字母和*號(hào)°請(qǐng)編寫函數(shù)其功能是使字符串的前導(dǎo)*號(hào)不得多于
n個(gè),若多于n個(gè),則刪除多余的*號(hào);若少于或等于n個(gè),則不做處
理。字符串中間和尾部的*號(hào)不刪除。
例如,字符串中的內(nèi)容為“*******A*BC*DEF*G****“,若n的值為
4,刪除后,字符串中的內(nèi)容應(yīng)當(dāng)是“****A*BC*DEF*G****";若n
的值為8,則字符串中的內(nèi)容仍為“*******A*BC*DEF*G****”。n的
值在主函數(shù)中輸入。在編寫函數(shù)時(shí),不得使用C語言提供的字符串函
數(shù)。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main。和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花
括號(hào)中填入你編寫的若干語句。
試題程序:
#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()函數(shù),它的功能是:利用以下所示的簡單迭代方法求方程
cos(y)-y=0的一個(gè)實(shí)根。
yn+l=cos(yn)
迭代步驟如下:
⑴取yl初值為0.0;
(2)y0=yl,把yl的值賦給y0;
(3)yl=cos(yO),求出一個(gè)新的yl;
(4)若yO二yl的絕對(duì)值小于0.000001,則執(zhí)行步驟
(5),否則執(zhí)行步驟(2);
(5)所求yl就是方程COS(y)-y=0的一個(gè)實(shí)根,作為函數(shù)值返回。
程序?qū)⑤敵鼋Y(jié)果Result=O.739085c
請(qǐng)勿改動(dòng)main()函數(shù)與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括
號(hào)中填入所編寫的若干語句。
部分源程序給出如下。
試題程序:
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個(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)中填入所編寫的若干
語句。試題程序:
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.請(qǐng)編寫函數(shù)proc,該函數(shù)的功能是:將放在字符串?dāng)?shù)組中的M個(gè)字
符串(每串的長度
不超過N),按順序合并組成一個(gè)新的字符串。
例如,若字符串?dāng)?shù)組中的M個(gè)字符串為:
ABCD
BCDEFG
CDEFGHI
則合并后的字符串內(nèi)容應(yīng)該是ABCDBCDEFGCDEFGH1。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括
號(hào)中填入所編寫的若干語句。
試題程序:
#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中的解決方案。此解決方
案的項(xiàng)目中包含一個(gè)源程序文件progl.c。在此程序中,請(qǐng)編寫一個(gè)函
數(shù)fun(),用來求出數(shù)組中值最大的元素在數(shù)組中的下標(biāo)并將其存放在
k所指向的存儲(chǔ)單元中。
例如,輸入如下整數(shù):
876675896101301401980431451777則輸出結(jié)果為6,980。
注意:部分源程序在文件progl.c中。
請(qǐng)勿改動(dòng)主函數(shù)main。和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花
括號(hào)中填入你編寫的若干語句。試題程序
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中的解決方案。此解決方
案的項(xiàng)目中包含一個(gè)源程序文件progl.c。在此程序中,請(qǐng)編寫函數(shù)
fun(),該函數(shù)的功能是統(tǒng)計(jì)各年齡段的人數(shù)。N個(gè)年齡通過調(diào)用隨機(jī)
函數(shù)獲得,并放入主函數(shù)的age數(shù)組中。要求函數(shù)把0?9歲的人數(shù)存
放在d[0]中,把10~19歲的人數(shù)存放在仇1]中,把20?29歲的人數(shù)存
放在仇2]中,依此類推,把100歲(含100歲)以上年齡的人數(shù)都存放在
d[10J中。結(jié)果在主函數(shù)中輸出。
注意:部分源程序在文件progl.c中。請(qǐng)勿改動(dòng)main。函數(shù)和其他函數(shù)
中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語句。
試題程序:
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());
/?產(chǎn)生一個(gè)隨機(jī)的年齡數(shù)組*/
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.編寫函數(shù)fun,其功能是:求ss所指字符串中指定字符的個(gè)數(shù),并返
回此值。例如,若輸入字符串123412132,輸入字符為1,則輸出3。
注意:部分源程序在文件PROC1.C中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括
號(hào)中填人你編寫的若干語句。
?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()
!/?本函數(shù)用于打開文件,齡人測(cè)試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。?/
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中的解決方案。此解決方案
的項(xiàng)目中包含一個(gè)源程序文件progl.c。在此程序中,編寫函數(shù)fun(),
其功能是根據(jù)以下公式計(jì)算S,并將計(jì)算結(jié)果作為函數(shù)值返回,通過形
參傳入。
5=1+-——+----------+…+----------------------
1+21+2+31+2+3+,??+〃
例如,若n的值為11時(shí),函數(shù)的值為1.833333。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main。和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花
括號(hào)中填入你編寫的若干語句。
試題程序:
#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.假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫函數(shù)proc,它的功
能是:將字符串中的前導(dǎo)*號(hào)全部刪除,中間和后面的*號(hào)不刪除。
例如,若字符串中的內(nèi)容為****a*bc*de伴g****,刪除后,字符串中
的內(nèi)容則應(yīng)當(dāng)是a*bc*def*g**
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括
號(hào)中填入所編寫的若干語句。
試題程序:
#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.請(qǐng)編寫函數(shù)proc(),它的功能是:求出str所指字符串中指定字符的
個(gè)數(shù),并返回此值。例如,若輸入字符串12341234123,輸入字符4,
則輸出2。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其
他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干
語句。試題程序:
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.下列給定程序中,函數(shù)fun()的功能是:從n個(gè)學(xué)生的成績中統(tǒng)計(jì)出
低于平均分的學(xué)生人數(shù),此人數(shù)由函數(shù)值返回,平均分存放在形參aver
所指的存儲(chǔ)單元中。例如輸入8名學(xué)生的成績:
80.5607290.59851.58864
則低于平均分的學(xué)生人數(shù)為4(平均分為75.5625)。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#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個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)/
*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.下列給定程序中,函數(shù)fun()的功能是:將字符串p中所有字符復(fù)制
到字符串b中,要求每復(fù)制3個(gè)字符之后插入一個(gè)空格。例如,在調(diào)用
fun()函數(shù)之前給字符串a(chǎn)輸入ABCDEFGHIJK,調(diào)用函數(shù)之后,字符串
b中的內(nèi)容則為ABCDEFGHIJKO
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#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.已知一個(gè)數(shù)列從。項(xiàng)開始的前3項(xiàng):0.0.1,以后的各項(xiàng)都是其相
鄰的前3項(xiàng)之和。下列給定的程序中,函數(shù)fun()的功能是:計(jì)算并輸出
該數(shù)列前。項(xiàng)的平方根之和sum。n的值通過形參傳入。例如,當(dāng)"10
時(shí),程序的輸出結(jié)果應(yīng)為23.197745。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).
試題程序:
#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中函數(shù)fun的功能是:在字符串的最前端加入
n個(gè)*號(hào),形成新串,并且覆蓋原串。
注意:字符串的長度最長允許為79。
請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
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.給定程序中函數(shù)fun的功能是:從低位開始取出長整型變量S中偶
數(shù)位上的數(shù),依次構(gòu)成一個(gè)新數(shù)放在t中。高位仍在高位,低位仍在低
位。
例如,當(dāng)s中的數(shù)為7654321時(shí),t中的數(shù)為642。
請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
[注意]不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
[試題源程序]
#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.下列給定程序中,函數(shù)fun()的功能是:在字符串的最前端加入n個(gè)
*號(hào),形成新串,并且覆蓋原串。
注意:字符串的長度最長允許79。
請(qǐng)改正函數(shù)fun()中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序;
#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*/
/個(gè)個(gè)不小不不不不不不不不不不小小小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.下列給定程序中,函數(shù)fun()的功能是:在字符串str中找出ASCII
碼值最小的字符,將其放在第一個(gè)位置上,并將該字符前的原字符向后
順序移動(dòng)。例如,調(diào)用fun()函數(shù)之前給字符串輸入fagAgBDh,調(diào)用后
寧符串中的內(nèi)容為AfaggBDh。
請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#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的功能是:讀入一個(gè)英文文本行,將其中每個(gè)
單詞的第一個(gè)字母改成大寫,然后輸出此文本行(這里的“單詞”是指由空
格隔開的字符串)。
例如,若輸入;Iamastudenttotaketheexamination則應(yīng)輸出:lAmA
StudentToTakeTheExamination.o
請(qǐng)改正程序中的錯(cuò)誤,使程序能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
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中函數(shù)fun的功能是:用下面的公式求兀的近
似值,直到最后一項(xiàng)的絕對(duì)值小于指定的數(shù)(參數(shù)num)為止:
Kt111
4357
例如,程序運(yùn)行后,輸入0.0001,則程序輸出3.1414。
請(qǐng)改正程序中的錯(cuò)誤,使它能輸出正確的結(jié)果。
注意:不要改動(dòng)smain函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
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.下列給定程序中,函數(shù)fun()的功能是:從字符串s中,刪除所有小
寫字母七二
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).
試題程序:
#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'*):
五、程序改錯(cuò)題(2題)
41.
下列給定程序中,函數(shù)proc()的功能是:用下面的公式求兀的近似值,
直到最后一項(xiàng)的絕對(duì)值小于指定的數(shù)(參數(shù)num)為止。兀/4=1-1/
3+1/5-1/7+…例如,程序運(yùn)行后,輸入00001,則程序輸出314140
請(qǐng)修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main
()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
「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.下列給定程序中,函數(shù)proc()的功能是:在字符串str中找出ASCH
碼值最大的字符,將其放在第一個(gè)位置上,并將該字符前的原字符向
后順序移動(dòng)。例如,調(diào)用proc()函數(shù)之前給字符串輸入DcybkdGT,調(diào)
用后字符串中的內(nèi)容為yDebkdOT。
請(qǐng)修改程序中的錯(cuò)誤,使它能得到正確結(jié)果。
注意:不要改動(dòng)main。函數(shù),不得增行或刪行,也不得更改程序的結(jié)
構(gòu)。
試題程序:
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函數(shù)的功能是在N行M列的整型二維數(shù)組中,選出一個(gè)
最大值作為函數(shù)值返回,請(qǐng)?zhí)羁铡?設(shè)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中的解決方案。此解決方
案的項(xiàng)目中包含一個(gè)源程序文件blankl.c。在此程序中,函數(shù)fun()的功
能是在形參s所指宇符串中尋找與參數(shù)c相同的字符,并在其后插入一
個(gè)與之相同的字符,若找不到相同的字符則不做任何處理。
例如,若s所指字符串為"baacda”,c中的字符為a,執(zhí)行后s所指字
符串為"baaaacdaa”。
請(qǐng)?jiān)诔绦虻南聞澗€史填入正確的內(nèi)容并將下劃線刪除,使程序得出正
確的結(jié)果。
注意:部分源程序給出如下。
不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
試題程序:
#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個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)個(gè)//
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.冒泡排序冒泡排序解析:交換排序是指借助數(shù)據(jù)元素之間的互相交換
進(jìn)行排序的一種方法。冒泡排序是一種最簡單的交換排序方法,它是通
過相鄰元素之間的相互交換逐步將線性表變成有序。
2.1000001010000010解析:運(yùn)算的規(guī)則是只有當(dāng)兩個(gè)相應(yīng)的二進(jìn)制
位都為1時(shí),該位的結(jié)果才為lo要保留第2、8位,只要將其與二進(jìn)制
數(shù)10000010相與。
3.可重用性繼承的優(yōu)點(diǎn):相似的對(duì)象可以共享程序代碼和數(shù)據(jù)結(jié)構(gòu),從
而大大減少了程序中的冗余,提高軟件的可重用性。
4.1343113431解析:程序首先定義了一個(gè)結(jié)構(gòu)體NODE,在主函數(shù)中聲
明了一個(gè)該結(jié)構(gòu)體的數(shù)組m⑸和兩個(gè)結(jié)構(gòu)體指針p和q,并分別初始化
P指向m(指向數(shù)組的第一個(gè)元素):q指向m+4(指向數(shù)組的最后一個(gè)元
素)。接下來定義并初始化一個(gè)整型變量i為O0然后用一個(gè)while循環(huán),
在P和q不相等的時(shí)候執(zhí)行循環(huán)體:讓p所指結(jié)構(gòu)體的成員k等于++i
的值,然后讓p指向下一個(gè)結(jié)構(gòu)體;讓q所指結(jié)構(gòu)體的成員k等十i++
的值,然后讓q指向前一個(gè)結(jié)構(gòu)體。i從0開始交替調(diào)用++i和i++,兩
個(gè)表達(dá)式的值依次分別為1和1、3和3……。所以當(dāng)p==q循環(huán)結(jié)束時(shí),
實(shí)際循環(huán)了兩次,P和q都指向m數(shù)組的中間位置mL2],i自增了4次,
所以q->k=i;就是讓m[2]k=4。所以程序最后輸出為:13431。
5.63546354解析:函數(shù)fun的第一個(gè)for循環(huán)跳過字符串的前導(dǎo)空白符,
接著判斷第一個(gè)非空白符是否是負(fù)號(hào),若是,則置變量sign為-1活則,
置變量sign為lo接著的if語句在第一個(gè)非空白字符是負(fù)號(hào)或正號(hào)時(shí),
跳過該字符。以后的for循環(huán)將后面的數(shù)字符當(dāng)作十進(jìn)制數(shù)的各位數(shù)字
轉(zhuǎn)換為一個(gè)長整數(shù)兒當(dāng)遇字符a時(shí),結(jié)束循環(huán)。最后,函數(shù)返回sign
與n的乘積。所以若調(diào)用函數(shù)時(shí)提供的實(shí)參是“UU6354abc",則函數(shù)的
返回值是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),主函數(shù)中定義了整型變量iow、col、
max和min,其中row用來存放外循環(huán)中的循環(huán)次數(shù),col用來存放內(nèi)
循環(huán)中的次數(shù),max記錄每行中的最大值?,min記錄所有行中最大值中
的最小值。在內(nèi)循環(huán)中,首先給max賦初值為每行的第0列元素值.然
后從第一列開始依次與max進(jìn)行比較。如果大于max則將其值賦給max,
當(dāng)每一行循環(huán)結(jié)束,max記錄了每一行的最大值。所以第一個(gè)空應(yīng)該填
a[row][col]>max或a[row][col]=max.退出內(nèi)循環(huán),在第一次退出內(nèi)循
環(huán)時(shí),將min賦初值為第。行的max,然后在每次退出內(nèi)循環(huán)時(shí),將
min和每行的max比較,如果大于max,則將max值賦min,所以第二
個(gè)空應(yīng)該填max<min或min>max,當(dāng)退出外循環(huán)時(shí),min為所有行
中的最大值的最小值。
7.
b[i][N?l];實(shí)現(xiàn)把a(bǔ)所指二維數(shù)組中的第0行放到b所指二維數(shù)
組的最后一列中,b[i]fO]=a[N-l][i]門實(shí)現(xiàn)將a所指N行N列的二維數(shù)
組中的最后一行放到b所指二維數(shù)組中的第0歹人
\r\n
\r\n
8./**〃**/解析:C語言程序的注釋可以出現(xiàn)在程序基本單詞之間的任
何地方,C語言程序的注釋以"/*”作為開始標(biāo)記,并以“*尸作為結(jié)束標(biāo)記。
9.k=p;k=p;解析:為要尋找數(shù)組中的最大元素的下標(biāo),需先預(yù)設(shè)1個(gè)
臨時(shí)最大元素的下標(biāo),并順序逐一考查數(shù)組的元素,當(dāng)發(fā)現(xiàn)當(dāng)前元素比
臨時(shí)最大元素更大時(shí),就用當(dāng)前元素的下標(biāo)更新臨時(shí)最大元素下標(biāo)。直
至考查了數(shù)組的全部元素后,這臨時(shí)最大元素下標(biāo)就是數(shù)組的最大元素
下標(biāo)。通常預(yù)設(shè)的最大元素下標(biāo)是數(shù)組的首元素下標(biāo),考查是從首元素
開始順序向后繼元素考查。程序中,存儲(chǔ)臨時(shí)最大元素下標(biāo)的變量是k,
變量P控制順序考查的循環(huán)控制變量。當(dāng)發(fā)現(xiàn)當(dāng)前元素S[p]比臨時(shí)最大
元素S[k)更大時(shí),應(yīng)該用p更新ko所以在空框處應(yīng)填入代碼“k=p二。
10.00解析根據(jù)運(yùn)算符的運(yùn)算順序可知,該表達(dá)式最后運(yùn)算的是與(&&)
運(yùn)算,而任何表達(dá)式與“0”進(jìn)行“與”運(yùn)算,結(jié)果都為0。
ll.c題干中,數(shù)組a包含10個(gè)元素。其中a[5]為6,a[7]為8,a[l]為
2,所以表達(dá)式“a[a[5]?a[7]/a[l]「等價(jià)于"a[6.8/2『,等價(jià)于a⑵,即3。
故本題答案為C選項(xiàng)。
12.D-typcdefint使用typedef定義一種新類型名T,T的
類型是二維數(shù)組指針,指向10個(gè)元素的數(shù)組。其中數(shù)組元素類型為int
*[10],即數(shù)組的每個(gè)元素又是包含10個(gè)元素的數(shù)組,數(shù)組的元素是整
型指針類型。故本題答案為D選項(xiàng)。
13.C
由圖所知,其中,C中只有一個(gè)屬性,是除操作。
14.C
15.B
16.A通常,將軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用維護(hù)到停止使用退役的過程
稱為軟件生命周期。也就是說,軟件產(chǎn)品從考慮其概念開始,到該軟件
產(chǎn)品不能使用為止的整個(gè)時(shí)期都屬于軟件生命周期。
17.C題干中使用typedef定義新類型名INTEGER,它代表int*類型"吏
用INTEGER定義p相當(dāng)于int*p。使用INTEGER定義*q,相當(dāng)于int
**q。所以P是基類型為int的指針變量,q是基類型為int*的指針變量,
選項(xiàng)A、B、D錯(cuò)誤。故本題答案為C選項(xiàng)。
18.D解析:中序遍歷的遞歸算法定義
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年國際spa原料供應(yīng)合同
- 2024年度版權(quán)質(zhì)押合同版權(quán)價(jià)值評(píng)估與質(zhì)押期限
- 風(fēng)控課件教學(xué)課件
- 2024年土地使用權(quán)抵押購房合同
- 2024年商標(biāo)許可使用合同:某知名品牌
- 合同履約成本的會(huì)計(jì)處理分錄-記賬實(shí)操
- 2024年度個(gè)人向公司提供的借款合同模板
- 2024天然氣企業(yè)信息安全保護(hù)合同
- 2024年度大數(shù)據(jù)可視化設(shè)計(jì)合同
- 2024年店面租賃與管理合同
- 城鄉(xiāng)生活污水處理環(huán)境影響與風(fēng)險(xiǎn)評(píng)估
- 廠房租賃合同范本版(18篇)
- DB22T 5165-2024 建設(shè)工程消防驗(yàn)收現(xiàn)場(chǎng)評(píng)定標(biāo)準(zhǔn)
- 浙江省嵊州市三界片2024-2025學(xué)年七年級(jí)上學(xué)期期中科學(xué)測(cè)試卷
- 2024年度鄉(xiāng)村醫(yī)生資格考試專業(yè)基礎(chǔ)知識(shí)考試題庫及答案(共500套)
- 專題15:現(xiàn)代文閱讀(小說)-2024年中考語文一輪復(fù)習(xí)綜合強(qiáng)化訓(xùn)練解析版
- 2024年江蘇省中等職業(yè)學(xué)校學(xué)生學(xué)業(yè)水平考試機(jī)械CAD繪圖試卷(含5張圖)
- 2023年中國鐵路國際有限公司招聘考試試題及答案
- 滬科版(2024)八年級(jí)全一冊(cè)物理第一學(xué)期期中學(xué)業(yè)質(zhì)量測(cè)試卷(含答案)
- 2024年山東省港口集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 《學(xué)生儀容儀表》主題班會(huì)PPT課件
評(píng)論
0/150
提交評(píng)論