版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2023年遼寧省本溪市全國計算機(jī)等級考試
C語言程序設(shè)計測試卷(含答案)
學(xué)校:班級:姓名:考號:
一、2.填空題(10題)
I.函數(shù)pi的功能是根據(jù)以下公式近似求得的:
pi*pi/6=i+l/(2*2)+l/(3.3)+...4-l/(n*n)
請在下面的函數(shù)中天空,完成求pi的功能。
#include<math.h>
doublepi(longn)
{doubles=0.0,longi;
for(i=l;i<<=n;i++)s=s+[];
return(sqrt(6*s));
1
2.對有14個結(jié)點(diǎn)的完全二叉樹的結(jié)點(diǎn)以從上到下、從左到右的順序進(jìn)
行編號后,序號最小的葉結(jié)點(diǎn)的序號【】。
3.在數(shù)據(jù)庫中用數(shù)據(jù)模型這個工具來抽象、表示和處理現(xiàn)實世界中的數(shù)
據(jù)和信息。常見的數(shù)據(jù)模型有3種,它們分別是層次模型、網(wǎng)狀模型和
()o
4.以下scanf函數(shù)調(diào)用語句中對結(jié)構(gòu)體變量成員的引用不正確的是
{charname[20];}pup[5],*p;
5.以下程序運(yùn)行后的輸出結(jié)果是
main()
/intij,a[][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
for(j=i+l;j<3;j++)a[j][i]=0;
for(i=0;i<3;i++)
{forU=O;j<3;j++)printfC'%d”,a[i皿);
printf(n\nn);
}
)
6.數(shù)據(jù)的物理結(jié)構(gòu)在計算機(jī)存儲空間中的存放形式稱為數(shù)據(jù)的【
7.以下sstrcpy。函數(shù)實現(xiàn)字符串復(fù)制,即將t所指字符串復(fù)制到s所指
向內(nèi)存空間中,形成一個新的字符串s。請?zhí)羁铡?/p>
voidsstrcpy(char*s,char*t)
{while(*s++=);}
main()
{charstr1[100],str2[]="abcdefgh";
sstrcpy(strl,str2);
printf(n%s\nM,strl);
8.以下程序的功能是輸入任意整數(shù)給n后,輸出n行由大寫字母A開始
構(gòu)成的三角形字符阻列圖形。例如,輸入整數(shù)5時(注意:n不得大于
10),程序運(yùn)行結(jié)果如下:
ABCDE
FGHI
JKL
MN
O
請?zhí)羁胀瓿稍摮绦颉?/p>
main()
{inti,j,n;charch=,A';
scanf(u%d",&n);
if(n<11)
{for(i=l;i<=n;i++)
{for(j=l;j<n-i+l;j++)
',,,
{printf(%2c1ch);
[10];
)
[H];
1
9.下程序的輸出是【
main()
(
charstrl[J=nHowdoyoudo",*pl=strl;
strcpy(str1+strlen(str1)/2,nesshe1');
printf(n%s\nM,pl);
)
10.下面的語句要使指針p指向一個double類型的動態(tài)存儲單元,請?zhí)?/p>
空。
p=[]malloc(sizeof(double));
二、單選題(10題)
11.數(shù)據(jù)的存儲結(jié)構(gòu)是指()。
A.數(shù)據(jù)所占的存儲空間
B.數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機(jī)中的存放形式
C.數(shù)據(jù)在計算機(jī)中的順序存儲方式
D.存儲在計算機(jī)外存中的數(shù)據(jù)
12.有以下程序
voidss(char*s,chart)
{while(*s)
{if(*s==t)*s=t,a'+'A';
s++;})
main()
{charstr1[100]-,abcddfefdbdH,c=rd";
ss(strl,c);printf(n%s\nH,str1);}
程序運(yùn)行后的輸出結(jié)果是
A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd
13.在C語言中,函數(shù)返回值的類型最終取決于()。
A.函數(shù)定義時在函數(shù)首部所說明的函數(shù)類型
B.return語句中表達(dá)式值的類型
C.調(diào)用函數(shù)時主調(diào)函數(shù)所傳遞的實參類型
D.函數(shù)定義時形參的類型
14.以下選項中非法的表達(dá)式是()o
A.a+l=a+l
B.a=b==0
C.(Char.(100+100.
D.7<=X<60
15.若有定義“inta=O,b=l,c=l”關(guān)于邏輯表達(dá)式“a++||b++&&c++”中各
個部分的執(zhí)行順序,以下說法正確的是()。
A.先執(zhí)行“b++”,再執(zhí)行“C++”,最后執(zhí)行“a++”
B.先執(zhí)行“a++”,再執(zhí)行“b++”,最后執(zhí)行“C++”
C先執(zhí)行“C++”,再執(zhí)行“b++”,最后執(zhí)行“a++”
D.先執(zhí)行“b++7再執(zhí)行“a++”,最后執(zhí)行“C++”
16.下面程序的輸出結(jié)果是omain(){int
a[10]={0,1,2,3,4,5,6,7,8,9},*p=a+4;printf(n%d\nM,p[3]);}
A.6B.7C.3D.5
(38)設(shè)有一聯(lián)合體變量定義如下:
uniondata
{longa;
floatb;
intc;
chard;
);
uniondatax;
執(zhí)行卜.列語句后,正確的聯(lián)合體變量x的值是().
x.a=llllll;
x.b=2222;
x.c=2.1546;
x.d='R';
17.A)llilllB)2222C)2.1546D)R
(IDC語言規(guī)定,在一個C程序中,main()函數(shù)的位置(
A)必須在系統(tǒng)調(diào)用的庫函數(shù)之后B)必須在程序的開始
C)必須在程序的最后D)可以在任意位置
19.判斷有向圖是否存在回路,利用。方法最佳。
A.求關(guān)鍵路徑B.求最短路徑C.拓?fù)渑判駾.廣度優(yōu)先遍歷
20.面向?qū)ο蠓椒ㄖ?,繼承是指()。
A.一組對象所具有的相似性質(zhì)B.一個對象具有另一個對象的性質(zhì)C.
各對象之間的共同怛質(zhì)D.類之間共享屬性和操作的機(jī)制
三、程序設(shè)計題(10題)
21.某學(xué)生的記錄由學(xué)號、8門課程成績和平均分組成,學(xué)號和8門課程
的成績已在主函數(shù)中給出,請編寫函數(shù),其功能是:求出該學(xué)生的平均
分、并放入記錄的ave成員中。
例如,學(xué)生的成績是:85.5,76,69.5,85,91,72,64.5,87.5,
則他的平均分應(yīng)為78.875。
注意:部分源程序給出如下。
請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun部位中填
入你編寫的若干語句。
試題程序:
#include<stdio.h>
#defineN8
typedefstruct
(
charnumfl01;
doubles[N];
doubleave;
JSTREC;
voidfun(STREC*a)
voidmain
STRECs={”GA005”,85.5,76,69.5,85,91,72,64.5,87.5};
inti;
fun(&s);
printf(HThe%ssstudentdata:\nM,s.num);
for(i=0;i<N;i++)
nn
printf(%4.lfkn(s.s[i]);
printf(H\nknave=%7.3fkn",s.aVe);
printf(n\nn);
22.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方
案的項目中包含一個源程序文件progl.c。在此程序中,編寫函數(shù)
fun(),其功能是求斐波那契數(shù)列中大于t的最小的數(shù),結(jié)果由函數(shù)返
回。斐波那契數(shù)列F(n)的定義為
F(0)=0,F(l)=l
F(n)=F(n-l)+F(n-2)
例如,當(dāng)t=1000時,函數(shù)值為1597。
注意;部分源程序給出如下。
請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花
括號中填入你編寫的若干語句。
試題程序:
#include<conio.h>
#include<math.h>
#include<stdio.h>
intfun(intt)
(
}
main()
(
intn;
n=1000;
printf("n=%d,f=%d\n,,,n,fun(n));
)
23.
函數(shù)fun的功能是:將s所指字符串中下標(biāo)為偶數(shù)同時ASCII值為奇數(shù)
的字符刪除,S所指串中剩余的字符形成的新串放在t所指的數(shù)組中。
例如,若s所指字符串中的內(nèi)容為“ABCDEFG12345”,其中字符C的
ASCII碼值為奇數(shù),在數(shù)組中的下標(biāo)為偶數(shù),因此必須刪除;而字符I的
ASCII碼值為奇數(shù),在數(shù)組中的下標(biāo)為奇數(shù),因此不應(yīng)當(dāng)刪除,其他依
此類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是“BDF12345”。
注意:部分源程序給出如下。
請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號
中填入你編寫的若干語句。
試題程序:
#include<stdio-h>
#include<string.h>
voidfun(char*s,chart[D.
(
}
main()
{
char$(100],t(100];
printf(°\nPlea$eenterstringS:0);
s);
fun(s,t);
printf("\nTheresultis:%s\nN,t);
}
24.有N個學(xué)生,每個學(xué)生的信息包括學(xué)號、性別、姓名、四門課的成
績,從鍵盤上輸入N個學(xué)生的信息,要求輸出總平均成績最高的學(xué)生信
息,包括學(xué)號、性別、姓名和平均成績。
25.編寫函數(shù)voidproc(intx,intpp口,inl*n),它的功能是求出能整除x
且不是奇數(shù)的各整數(shù),并按從小到大的順序放在pp所指的數(shù)組中,這
些除數(shù)的個數(shù)通過形參返回。
例如,若x中的值為30,則有4個數(shù)符合要求,它們是261030。
注意:部分源程序給出如下。
請勿改動main。函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括
號中填入所編寫的若干語句。
試題程序:
Sinclude<conio.h>
ainclude<stdio.h>
=includeVstdlib.h>
voidproc(intx.intpp[].ini■n)
(
)
voidmain()
(
intx.arr[1000].n,it
sy*tem("CLS");
printF("\nPleaseenteranintegernumberAn")i
scan]&-x)t
proc(義.?rr.?>.n)i
for(i?0:iVn:i++)
prinif("%d"?arr[ij)>
printf(**\n"):
26.請編寫函數(shù)proc,其功能是:計算并輸出下列多項式值。
S=(l-1/2)+(1/3-1/4)+...+(1/(2n-l)-l/2n)
例如,若主函數(shù)從鍵盤給n輸入20后,則輸出為S=0.680803c
注意:部分源程序給出如下。
請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括
號中填入所編寫的若干語句。
試題程序:
#includet:stdio.h>
doubleproc(intn)
voidmain
intn;
doubleslim;
printf("\nlnputn:");
scanfC%dn,&n);
sum=proc(n)o
printf(',\ns=%f\n,',sum);
)
27.請編寫函數(shù)proc(),該函數(shù)的功能是:將str所指字符串中ASCII
值為偶數(shù)的字符刪除,串中剩余字符形成一個新串放在t所指的數(shù)組中。
例如,若str所指字符串中的內(nèi)容為aBcdef9789,其中字符8的ASCII
碼值為偶數(shù)……字符8的ASCH碼值為偶數(shù)……都應(yīng)當(dāng)刪除,其他依此
類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是ace979c注意:部分源程序給出
如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc
()的花括號中填入所編寫的若干語句。試題程序:
55include<stdlib.h>
s:include<stdio.h>
*include<string.h>
*include<conio.h>
voidproc(char?str.chart[]>
voidmain()
(
charMr(100].t[l(X)]j
sy5tcmCCLS")i
prind("\nPlcascenterstringSt")i
5canf(-%5w.str)i
proc(Atr.t)?
printf("\nTheresultIM:%s\n*.t)J
>
28.編寫函數(shù)fun,其功能是:將所有大于1小于整數(shù)m的非素數(shù)存入xx
所指數(shù)組中,非素數(shù)的個數(shù)通過k返回。
例如,若輸入17,則應(yīng)輸出:46891012141516。
注意:部分源程序在文件PROGI.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括
號中填入你編寫的若干語句。
Qindudr<eldin.h>
voidfun(intni,int?k.ini])
mainf)
I
intm,n.n[100];
voidNON()();
printf("XnPlcajw?enteraninlegcrnunil>rr10and100:"):
*<anf(H%<r.&n);
fun(n,&m,zz);
printnH\n\nTlwrrHH,%(Inon-primrniimlxrvlcs?than%d:M,m.
for(n=0;n<rn;n?)
pnntf(Tn]);
N()NO();
\
MH<INOV)()
/?請在此函數(shù)內(nèi)打開文件.整人測試數(shù)據(jù),讖用fun函數(shù).
輸出數(shù)據(jù),關(guān)閉文件C?/
intm.n.u[100J;
FILE?rf.?wf;
rf=fi?prn("in.<hl"/r");
wf=fopen(Houl.chi*'w");
Mm"rf."%d".&n);
(tin(n.&m.zz);
(pnntf(wf."<hn".in.n);
fnr(n=0;n<m;n???+)
fprintf(wf,?t[n]);
frl?se(rf);
fcl<?c(wf);
29.請編寫函數(shù)proc(),其功能是:計算并輸出下列多項式的值。
S=l+1/(1+2)+1/(1+2+3)+…+1/(l+2+3+...+m)
例如,若主函數(shù)從鍵盤給m輸入20后,則輸出為s=l.904762o
注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc。的花括
號中填入所編寫的若干語句。
試題程序:
Sinclude<?tdio.h>
doubleproc(intm)
(
}
voidmain()
(
ini
doublest
printf("\nlnpuim:
scanf(t
s"proc(m)?
print*
30.請編寫函數(shù)proc,該函數(shù)的功能是:將放在字符串?dāng)?shù)組中的M個字
符串(每串的長度
不超過N),按順序合并組成一個新的字符串。
例如,若字符串?dāng)?shù)組中的M個字符串為:
ABCD
BCDEFG
CDEFGHI
則合并后的字符串內(nèi)容應(yīng)該是ABCDBCDEFGCDEFGH1。
注意:部分源程序給出如下。
請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括
號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<conio.h>
#defineM3
#defineN20
voidproc(chararr[M][N],char*b)
(
)
voidmain
(
charstr[M][N]={nABCD",nBCDEFG",UCDEFGHF,),i;
chararr[l00]={"##################"};
printffThestrin9:kn"):
for(i=0;i++)
puts(str[ij);
printf(,'\nM);
proc(str,arr);
printf(MTheAstring:\n");
printf(,,%Su,arr);
printf("\n\n”);
四、2.程序修改題(10題)
31.下列給定程序中,函數(shù)fun()的功能是:在字符串str中找出ASCII
碼值最小的字符,將其放在第一個位置上,并將該字符前的原字符向后
順序移動。例如,調(diào)用fun()函數(shù)之前給字符串輸入fagAgBDh,調(diào)用后
寧符串中的內(nèi)容為AfaggBDh。
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
/*1**1**1**1*/1/
/不不不不不不不不不不不不不T/AI]nr[不干干干干不干不可不不不/
voidfun(charp)
charmin,*q
inti=0;
min=pfi];
while(p[i]!=0)
if(min>p[i])
I*2*KI**1**1*7,7,/ivx7,7,7,*1*/
/不不不不不不不不不不不不不Toiinti***不不不不不不不不不不不不/
p=q+i;
min=pli];
i++;
while(q>p)
(*q=*(q-l);
q--;
p[O]=min;
)
main()
(
charstr[801;
printf(nEnterastring:");
gets(str);
printf("\nTheoriginalstring:");
puts(str);
fun(str);
printf(M\nThestringaftermoving:");
puts(str);
printf(H\n\nn);
)
32.給定程序中函數(shù)fun的功能是:從低位開始取出長整型變量S中偶
數(shù)位上的數(shù),依次構(gòu)成一個新數(shù)放在t中。高位仍在高位,低位仍在低
位。
例如,當(dāng)s中的數(shù)為7654321時,t中的數(shù)為642。
請改正程序中的錯誤,使它能得到正確結(jié)果。
[注意]不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
[試題源程序]
升include<stdio.h>
/*1**1*?£??£?*£?*£?f*1*1*4.4.*4**4**4**4**4*/
/小小小小小小小小不不不不tci[nd*t*小小不小不不不不不不(
voidfun(longs,longt)
longsi=10;
s/=10;
*t=s%10;
/*1?Ki*Ki**I?*!?KJ*KJ*/I*2**2*I
/不不不不不不不不不不不不T/A]]]],]不干不干干干不干不干干不/
while(s<0)
(
s=s/100;
*t=S%10*Sl+*t;
sl=sl*10;
)
)
msin()
(
longs,t;
printf(H\nPleaseenters:");
scanf(n%ldH,&s);
fun(s,&t);
printf(nTheresultis:%ld\n",t);
33.下列給定程序中,函數(shù)fun()的功能是:計算并輸出下列級數(shù)的的
N項之和SN,直到SN+1大于q為止,q的值通過形參傳入。
SN=2/1+3/2+4/3+(N+1)/N
例如,若q的值為50.0,則函數(shù)值為49.394948。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意;不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).
試題程序:
#include<conio.h>
#include<stdio.h>
/*1**1*?£??£?*£?*£?%1?■?14.-[?*?**?*?£?*4**4**£**4**1**!**1*/
/個個個力個個個個個個個不個個re1]nri個個個個個個個個個個個不個個個/
doublefun(doubleq)
{intn;doubles,t;
n=2;
s=2.0;
while(s<=q)
t=s
/、!,.!,、],、[?、!?7,、!**!**!?*!*7,7,7,17,7,7,7,、1?7,7,*!*、]?*1*、J*/
/不不不不不不不不不不不不不tm]n1]小小小小小小小小不不不小小/
s=s+(n+l)/n;
n++;
printf(Hn=%d\n",n);
/?!**!**!**1*?!*?!*、1,*1**1**1*?f**i*/*1*1**4**£*?!**!**!*?!*/
/小小小小小小小小小小小小tciind不不不不不不不不不不彳、不小小小/
returns;
)
main()
{clrscr();
printf(H%f\nH,fiin(50));
)
34.在主函數(shù)中從鍵盤輸入若干個數(shù)放入數(shù)組中,用0結(jié)束輸入并放在
最后一個元素中。下列給定程序中,函數(shù)fun。的功能是計算數(shù)組元素中
值為負(fù)數(shù)的平均值(不包括0)。
例如:數(shù)組中元素的值依次為43,47,-21,53,-8,12.0,則程序的
運(yùn)行結(jié)果為-25.333333。
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
doublefun(intx[J)
doublesum=0.0;
intc=0,i=0;
/■如■如*1*4,?如?如,1*1**2**2**2**1*?i*/
/*T**T**T**T**T**T**T**T**T**T**T**T**T*T/~\l個個個個個個個個個個個個個/
while(xfi]==0)
if(x[i]<0)
sum二sum+x[i];
C++;
sum=sum\c;
returnsum;
)
main()
(
intxl1000];
inti=0;
clrscr();
printf(n\nPleaseentersomedata(endwith
0):”);
do
(
scanf("%d",&x[i]);
}while(x[i++]!=0);
printf("%f\n",fun(x));
35.下列給定的程序中,函數(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)為
99cd99f990
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
t
/不不不不不不不不不不不不*不]][]「1]不干不不干干干*2*不干*2*干不干干不//
intfun(char*s,char*tl,char*t2,char*w)
inti;char*p,*r,*a;
strcpy(w,s);
while(*w)
{p=w;r=tl;
/KI**1*Kl*KI*KI**1*KI*KI**1*KI*Ki*KI**1*11*2*7,*1**1**1*KI**1*f
/不不不不不不不不不不不不不nr]不不干不干干不不可不不干不不/
while(r)
if(*r==*p){r4-+;p++;}
elsebreak;
if(*r=='\0')
{a=w;r=t2;
/^4^4^4^4aJ/
/個個個個個個個個個個個個個j-z-x?]n0個個個???個個個個個個個個個個/
while(*r){*a=*r;a++;r++)
w+=strlen(t2);
elsew++;
main()
{chars[100],tl[l00],t2[l00J,w[l00J;
clrscr();
printf(H\nPleaseenterstringS:");
scanf(n%s';s);
printf(M\nPleaseentersubstringtl:");
scanf("%s",tl);
printf("\nPleaseentersubstringt2:");
scanf(n%sn,t2);
if(strlen(tl)==strlen(t2))
fun(s,tl,t2,w);
printf("\nTheresultis:%s\nM,w);
elseprintf("Error:strlen(t2)\n");
36.給定程序MOD11.C中函數(shù)fun的功能是:從低位開始取出長整型
變量s中奇數(shù)位上的數(shù),依次構(gòu)成一個新數(shù)放在t中。高位仍在高位,
低位仍在低位。例如:當(dāng)s中的數(shù)為2736598時,t中的數(shù)為:2358。
#include<conio.h>
#include<stdio.h>
/不不不不不不不不不不不不tonnd不不不不不不不不不不不不/
voidfun(longs,longt)
{longsl=10;
*t=S%10;
while(s>0)
{s=s/100;
*t=S%10*sl+*t;
sl=sP100;
main()
{longs,t;
clrscr();
printf("\nPleaseenters:");
scanf(u%ldH,&s);
fun(s,&t);
printf("Theresultis:%ld\n'*,t);
)
37.下列給定程序中函數(shù)fun。的功能是計算正整數(shù)num的各位上的數(shù)
字之平方和。
例如:輸入352,則輸出應(yīng)該是38;若輸入328,則輸出應(yīng)該是77。
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<conio.h>
longfun(longnum)
(
/*+**+*+*+*found************/
Iongk=l;
do
k+=(num%10)*(num%10);
num/=10;
/*********+found'*+**+*+******/
}while(num)
return(k);
)
main()
(
longn;
clrscr();
printf(n\Pleaseenteranumber:H);
scanf(n%ldH,&n);
printf(M\n%ld\nH,fun(n));
)
38.下列給定程序中,函數(shù)fun()的功能是:從n個學(xué)生的成績中統(tǒng)計出
高于平均分的學(xué)生人數(shù),人數(shù)由函數(shù)值返回,平均分存放在形參aver所
指的存儲單元中。例如輸入8名學(xué)生的成績:
8565.56995.5875562.575
則高于平均分的學(xué)生人數(shù)為4(平均分為74.312500)。
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<conio.h>
#defineN20
intfun(float*S,intn,float*aver)
/■kr?kr?kf??£,\X-*£**X**1*/
/不不不不不不不不不不不不不T/~V1][]]]個個個個個個個個個個個個個/
intave,t=0;
intcount=0,k,i;
for(k=0;k<n;k++)
t+=s[k];
ave=t/n;
for(i=0;i<n;i++)
/、!,、!■.!■.!■、!■、!■17.?!,/
/不不不不不不不不不不不不不t()i]n1[不不不不不不不不不不不不不不不/
if(s[i]<ave)
count++;
/?!*“?*!*?!**1**1**!**!**!**!*?],£1?]"?[,*?*******?**、[,、]?<!*/
/不不不不不不不不不不不不不tm]n〔[不不不不不不不不不不不不不/
aver=ave;
returncount;
)
main()
(
floatS[30],aver;
intm,i;
clrscr();
printf(H\nPleaseenterm:");
scanf(“%d",&m);
printf("\nPleaseenter%dmark:\nM,m);
for(i=0;i<m;i++)
scanf(n%f',s+i);
printf(M\nThenumberofstudents:%d\n,',
fun(S,m,&aver));
printf("AVe=%f\n”,aver);
39.下列給定程序中,函數(shù)fun的功能是按以下遞歸公式求函數(shù)值。
用制〃)={力(”—2
例如:當(dāng)給n輸入5時,函數(shù)值為240;當(dāng)給n輸入3時,函數(shù)值為60。
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意;不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
*!**!**!*?!*?!*?!*?!*?!*?!*?!*1*£**£**1**1**1*/
/不不不亦不小不,自不不不不不tci]n[[不不不不+不不不不干干不/
fun(intn);
intc;
/t
/不小不不不不不不不不不不不miinn不不不不不不不不不不不不不/
if(n=l)
c=15;
else
c=fiin(n-l)*2;
retum(c);
)
main()
(
intn;
printf("Entern:");
scanf(n%dH,&n);
printf(HTheresult:%d\n\nn,fun(n));
)
40.下列給定程序中,函數(shù)fun()的功能是:輸出M行N列整數(shù)方陣,
然后求兩條對角線上的各元素之和,返回此和數(shù)。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).
試題程序:
#include<conio.h>
#include<stdio.h>
#defineM5
f*1??!??!?*1**1*/
f?[??1?-[?rTwrYw?Tw?[??Tw?丫??丫?*T*rjwrTw?[??[??[??[??Tw?[??[?/
ihtfun(intn,intxx[If1)
{inti,j,sum=0;
printf("\nThe%dx%dmatrix:\n",M,M);
for(i=0;i<M;i++)
{for(j=0;j<M;j++)
/**********************************/
printf(M%4f',xx[i][jJ);
printf(n\nn);
)
for(i=0;i<n;i++)
sum+=xx[i][i]+xx[i][n-i-l];
return(sum);
)
main()
{intaalMJLMJ={{1,2,3,4,5},{4,3,2』,0},
{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};
clrscr();
printf(M\nThesumofallelementson2
diagnalsis%dn,fun(M,aa));
五、程序改錯題(2題)
41.
下列給定程序中,函數(shù)fun的功能是:從整數(shù)10.55,查找能被3整除且
有一位上的數(shù)值是5的數(shù),把這些:故放在b所指的數(shù)組中,這些數(shù)的
個數(shù)作為函數(shù)值返回。規(guī)定函數(shù)中al放位數(shù),a2放十位數(shù)。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
試題程序:
include<stdio.h>
i;i(fun(int*b)
{intk,al,a2,i^O;
for(k=IO;k<=55;k++)
八:?**?■*??*?■***余*^Dnd?*本?/奉■率***?*****/
Q=k/1O;
al=k-a2*10;
if((k%3i==O&&a2^=5)tl(k%3==0&&
al==5))
b[ij^k;i++;?
1.
1.
returnk;
returnk;
main()
{intN1001k.m;
printf(Fieresultis:\nH);
for(k力;k<m;k++)
,r,,
printf(%4dfa[k]);
pHntfCXn%
1
42.
假如整數(shù)數(shù)列中的數(shù)不重復(fù),并存放在數(shù)組中。下列給定的程序中,函
數(shù)proc()的功能是:刪除數(shù)列中值為x的元素。n中存放的是數(shù)列中
元素的個數(shù)。請修改程序中的錯誤,使它能夠得出正確的結(jié)果。注意:
不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試
題程序:
?i?cl*kh>
?SM20
mlp*oc<mi?arr.dttn.mtM>
tntp*0?H
?rrCuj^Mi
whal*<Kt*arv(p])
p-p+h
i?p**11>r??uni-li
?I”
for(i*p|l<A|i't*)
//????(<HMNI????
ll?arffiji
rvttamnaI*
vo?dmatn()
miarr(M]?I-1.0.1?SJO.I5.S0.90).
i?*?h
pnntf(*Th?onginsldat?:\na)i
for(iw0??<mH4)pnntf<*M5d".?rrLij)i
printfC*\nlnputx(tod?4?i*)t*)?
priRtfC^OIdr?Kd\n*?x>i
n*proc<art?n?x)i
W?―I)
printf(a???Nobefound!???\n\na)?
Hw
pnnih-Tbcdataahefde*etedi\a*)i
for(i-0iKi?ii4-?)
print"-M5d*.arr{ij)i
pnmf(a\f)\n")?
六、操作題(2題)
43.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方
案的項目中包含一個源程序文件progl.c。在此程序中,己知學(xué)生的記
錄由學(xué)號和學(xué)習(xí)成績構(gòu)成,N名學(xué)生的記錄己存入a結(jié)構(gòu)體數(shù)組中。
請編寫函數(shù)funO,該函數(shù)的功能是找出成績最高的學(xué)生記錄,通過形
參將其返回主函數(shù)〔規(guī)定只有一個最高分)。已給出函數(shù)的首部,請
完成該函數(shù)。
注意:部分源程序給出如下。
請勿改動主函數(shù)main。和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花
括號中填入你編寫的若干語句。
試題程序:
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<conio.h>
#dcfineN10
typedefstructss/*定義結(jié)構(gòu)體*/
{charnum[101;
ints;
}STU;
fun(STUa[],STU*s)
(
)
voidmain()
(
STUa[N]={{“A01”,81},{“A02”,89},{“A03”,66},
{“A04”,87},“A05”,77},{“A06”,90},{“A07”,79},
{“A08”,61)A09”,80},{“A10”,71}},m;
inti;
system("CLS");
printf("****Theoriginaldata*****);
for(i=0;i<N;i++)
printf(4<No=%sMark=%d\n,\a[i].num,a[i].s);
fun(a,&m);
printfC****THERESULT****\n*);
printf(uThetop:%s,%d\n”,m.num,m.s);
44.以下程序中select函數(shù)的功能是:在N行M列的二維數(shù)組中,選出
一個最大值作為函數(shù)值返回,并通過形參傳回此最大值所在的行下標(biāo)。
請?zhí)羁铡?/p>
#defineN3
#defineM3
select{inta[N][M],int*n;
{inti,j,row=l,eolum=l;
for(i=0;i<N;i++
forj=O;j<M;j++)
if(afil[j]>afrow][colum]){row=i;colum=j:}
*n=;
return;
)
main()
{inta[N][M]={9,11,23.6,1,15,9,17,20},max,nj
max=select(a,&n);
printf(Mmax=%d,line=%d\n,',max.n;
參考答案
1.1.0/i/i或1.0/(i*i)1.0/i/i或1.0/(i*i)解析:由題面中提供的計算pi的
公式可知:在第i項其值為l/(i*i),考慮到運(yùn)算結(jié)果為浮點(diǎn)數(shù),故必須
要將1轉(zhuǎn)化為浮點(diǎn)數(shù)或采用L0/(i*i)的形式。故本題應(yīng)填1.0/(i*i)或其等
效形式。
2.8
3.關(guān)系模型關(guān)系模型解析:在數(shù)據(jù)庫中用數(shù)據(jù)模型這個工具來抽象、表
示和處理現(xiàn)實世界中的數(shù)據(jù)和信息。通俗地講,數(shù)據(jù)模型就是現(xiàn)實世界
的反映,它分為兩個階段:把現(xiàn)實世界中的客觀對象抽象為概念模型;
把概念模型轉(zhuǎn)換為某一DBMS支持的數(shù)據(jù)模型。常見的數(shù)據(jù)模型有3
種,它們分別是層次模型、網(wǎng)狀模型和關(guān)系模型。
4.D
5.123\nO56\n009123\\n056\\n009解析:數(shù)組是用于按順序存儲同
類型數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),如果有一個一維數(shù)組,它的每一個元素是類型相
同的一維數(shù)組,就形成了一個二維數(shù)組。在內(nèi)存中數(shù)組的元素是連續(xù)順
序存放的,對;維數(shù)組來說,先存放第一行,再存放第;行,…,因為
每一行都是其廣義一維數(shù)組的元素,并且在給出全部數(shù)組元素的初值后,
二維數(shù)組的定義中可以將第一維的下標(biāo)省略。本題中,定義了一個元素
類型為整型的二維數(shù)組敢叫[3]={1,2,3,4,5,6,7,8,9),它相
當(dāng)于一個3*3的矩陣,for(i=0;i<3:i++)for(j=i+l;j<3;j++)a|j][i]=0;
將行下標(biāo)i大于列下標(biāo)j的元素a[2][0],a⑵⑴賦值為0,最后
for(j=0;j<3;j++)prinffC%n;a[i][j]);printf('\\n');進(jìn)行換行輸出,所以
輸出結(jié)果為
123
056
009
6.內(nèi)模式或物理模式或存儲模式內(nèi)模式或物理模式或存儲模式
解析:一個數(shù)據(jù)庫只有一個內(nèi)模式,它是數(shù)據(jù)物理結(jié)構(gòu)和存儲方式的描
述,是數(shù)據(jù)庫內(nèi)部的表示方法。例如,記錄的存儲方式是順序存儲、索
弓I按照什么方式組織;數(shù)據(jù)是否壓縮存儲,是否加密等。
7.*t++或*(t++)*t++或*(t++)解析:主函數(shù)中定義了兩個字符型數(shù)組stll
和str2,并且給str2賦初值“abcdefgh”,接著調(diào)用函數(shù)sstrcpy(strl,str2),
將字符串str2的值賦給strl.在函數(shù)sstrcpy(*s,*t)中,用了一個while循
環(huán),每循環(huán)一次將形參指針t所指的字符賦給形參指針s所指向的存儲
空間,然后指針s和指針t都下移到下一個元素。所以空格處應(yīng)該填"++
或*(t++)°
8.
C語言允許字符數(shù)據(jù)與整數(shù)進(jìn)行直接的算術(shù)運(yùn)算,故輸出大寫字母A
開始的連續(xù)字符,可通過白加運(yùn)算ch++完成。三角形字符陣列第i行
的字符個數(shù)為n?i+L在每行結(jié)尾以回車字符Nn,換行。
\r\n
\r\n
9.HowdoessheHowdoesshe解析:strcpy(strl,si):字符串拷貝函數(shù),
作用是將字符串si拷貝到字符數(shù)組strl中去。strlen(str):測試字符串
str的長度,函數(shù)的值為字符串中實際長度,不包括\'\\0\'在內(nèi)。本題中
strlen(strl)的值為13,則strcpy(str1+strlen(strl)/2,'esshe');相當(dāng)于
strcpy(strl+6,'esshe');,因此可得答案為Hov/doessheo
10.(double*)(double*)解析:本題考查強(qiáng)制類型轉(zhuǎn)換。函數(shù)malloc的默
認(rèn)返回是void*,若要使指針指向double類型,必須進(jìn)行類型轉(zhuǎn)換,類
型轉(zhuǎn)換格式為:(數(shù)據(jù)類型*)。
1LB解析:數(shù)據(jù)的存儲結(jié)構(gòu),又稱為數(shù)據(jù)的物理結(jié)構(gòu),是數(shù)據(jù)的邏輯
結(jié)構(gòu)在計算機(jī)中的存放形式,數(shù)據(jù)的存儲結(jié)構(gòu)有順序結(jié)構(gòu)、鏈?zhǔn)浇Y(jié)構(gòu)、
散列結(jié)構(gòu)和索引結(jié)構(gòu)等。
12.B解析:在內(nèi)存口,字符數(shù)據(jù)以ASCII碼存儲,它的存儲形式與整數(shù)的
存儲形式類似。C語言中,字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用,也可以
對字符型數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算,此時相當(dāng)于對它們的ASCII碼進(jìn)行算術(shù)運(yùn)
算,在本題中,s++相當(dāng)于s=s+l,即讓s指向數(shù)組中的下一個元素。
13.A解析:在C語言中,應(yīng)當(dāng)在定義函數(shù)時指定函數(shù)值的類型。凡不
加類型說明的函數(shù),默認(rèn)按整型處理。在定義函數(shù)時對函數(shù)值說明的類
型一般應(yīng)該和return語句中的表達(dá)式類型一致。如果函數(shù)值的類型和
return語句中的表達(dá)式類型不一致,則以函數(shù)值的類型為準(zhǔn),由系統(tǒng)自
動進(jìn)行轉(zhuǎn)換,即函數(shù)類型決定返回值的類型。
14.A
賦值運(yùn)算符的左邊只能是變量,而不能是常量或表達(dá)式。
15.BC語言中運(yùn)算符有優(yōu)先級和結(jié)合性。自增、自減運(yùn)算符的優(yōu)先級高
于邏輯運(yùn)算符,邏輯運(yùn)算符中邏輯與“&&”的優(yōu)先級比邏輯或“『‘高,邏
輯運(yùn)算符的結(jié)合性自左向右。所以題干中表達(dá)式等價于
“(a++)||((b++)&&(c++))?。運(yùn)算順序為:首先執(zhí)行、++”,再執(zhí)行“b++”,
最后執(zhí)行“C++”。故本題答案為B選項。
16.B解析:指針變量p指向數(shù)組a的第5個元素,p[3]在原指向基礎(chǔ)上
移3個單位,指針變量p將指向第8個元素(下標(biāo)為7的元素),值為7。
17.D
18.D
19.C
20.D繼承是面向?qū)ο蟮姆椒ǖ囊粋€主要特征,是使用已有的類的定義作
為基礎(chǔ)建立新類的定義技術(shù)。廣義的說,繼承是指能夠直接獲得已有的
性質(zhì)和特征,而不必重復(fù)定義它們,所以說繼承是指類之間共享屬性和
操作的機(jī)制。
21,voidfun(STREC*a)
\n{
\ninti;
\na->ave=O.0;
\nfor(i=0;i<N;i++)
\na->ave=a->ave+a->slij;
\n/*求各門課程成績的總和*/
\na->ave=a->ave/N;/*求平均分*/
\n}
\n【解析】本題考查的是指向結(jié)構(gòu)體類型的指針變量做參數(shù)和結(jié)構(gòu)體類
型成員的運(yùn)算。fun函數(shù)中求出平均成績,要帶回主函數(shù)則必須定義一
個指針類型的形參STREC*a,同時引用成員使用指向運(yùn)算符,a->ave和
a->s[i]o
\n
22.intfun(intt)
(
intfO=O,fl=l,f;
do{
/*根據(jù)斐波那契數(shù)列的定義求數(shù)值*/
f=fO+fl;
fO=fl;fl=f;
}while(f<t);/*如果求的數(shù)值小于t則繼續(xù)*/<7t);
returnf;
根據(jù)斐波那契數(shù)列定義不難發(fā)現(xiàn),該數(shù)列最終的結(jié)果由兩個數(shù)列之和
組成,所以可以在循環(huán)內(nèi)部始終把f看成前兩項之和,而fO始終代表
第n-2項,fl代表第n-1項。退出循環(huán)時得到的數(shù)f,就是大于指定數(shù)
的最小的數(shù)。
23.
【答案】
voidfun(char*s,chart(])
{.
inti,j-0;
forfi=0;i<strlen(s?);i++)
I
【解析】
使用循環(huán)遍歷字符串,將下標(biāo)和ASCII碼值滿足要求的元素賦給新的字符串c
24.\n#include,stdio.h'
\n#defineN3
\nstructstudent
\n{longstu_num;charsex;
\ncharname[15];intscore[4];
\nfloataverage;};
\nmain
\n{intij,index;floatsum,max;
\nstructstudentstuarr[N];
\nfor(I=0;I{printf('pleaseinput%dstudentinfoirnation:\\n',I+l);
\nscanf('%ld,%c,%s\&stuarr[I].stu_num,&stuarr[I].sex,stuarr[I].name);
\nfor(j=0;j<4;j++)
\nscanf('%d',&stuarr[I].score[j]);}
\nfor(I=0;I(sum=0.0;
\nfor(j=0;j<4;j++)
\nsum+=stuarr[I].score[j];
\nstuaiT[I].average=sum/4.0;}
\nmax=stuarr[0].average;
\nindex=0;
\nfor(I=1;Iif(stuarr[I].average>max)
\n{max=stuarr[I].average;
\nindex=I;}
\nprintfC總平均成績最高的學(xué)生信息是學(xué)號二%ld,性別二%c,姓名二%s,平
均成績
=%4.1fWn\sluarrtindex].slu_num,stuarr[index].sex,stuarr[index].nam
e,stuarrlindexj.average);
\n}\n
25.
【解析】按照題目中要求,求出能整除x且不是奇數(shù)的各整數(shù)。首先
判斷小于等于整數(shù)x的所有偶數(shù)是否能被x整除,將能被x整除的奇
數(shù)放入數(shù)組pp中。最后將數(shù)組pp中元素的個數(shù)返回到主函數(shù)當(dāng)中。
26.\n\tdoubleproc(intn)
\n{
\ninti;
\ndoubles=0.0;//s為其和的變量
\nfor(i=1;i<=n;i+十)
\nS=s+(l.0/(2*i-l)-l.O/(2*i));//計算s
\n=(l-l/z)+(l/3-1/4)+…+(1/(2n-l)-l/
\n2n)
\nreturns;//最后把所得到的和返回到主函數(shù)中
\n}
\n【解析】由題目中所給表達(dá)式可知,多項式的值為n項表達(dá)式的
和??梢岳胣次循環(huán)求出n項表達(dá)式的值,求和放在變量s中。最
后將多項式的值返回到主函數(shù)當(dāng)中。\n
27.
【解析】要把字符串str中ASCH碼值為偶數(shù)的字符刪除,需要判斷字
符串str
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中小學(xué)德育教育發(fā)展實施方案
- 教師教育新動能:教育強(qiáng)國視野下的創(chuàng)新與突破
- 義務(wù)教育公共服務(wù)治理的理論基礎(chǔ)與國內(nèi)外經(jīng)驗
- 低空經(jīng)濟(jì)的未來展望與建議
- 車位交易協(xié)議:個性化2024年
- 防盜安全門供應(yīng)與專業(yè)安裝協(xié)議
- 2024年化地鎖安裝服務(wù)協(xié)議
- 宅地抵押合同范本
- 2024年車輛租賃調(diào)度服務(wù)協(xié)議
- 齊齊哈爾大學(xué)《教師基本功訓(xùn)練》2022-2023學(xué)年第一學(xué)期期末試卷
- 著色牙-四環(huán)素牙(口腔科課件)
- 《領(lǐng)導(dǎo)梯隊:全面打造領(lǐng)導(dǎo)力驅(qū)動型公司》解讀教學(xué)課件
- 初中音樂-黃河船夫曲教學(xué)設(shè)計學(xué)情分析教材分析課后反思
- 幼兒園中班教案《沙啦沙啦》含反思
- 醫(yī)院醫(yī)務(wù)科科長崗位競聘答辯PPT課件(帶內(nèi)容)
- 妊娠合并脂肪肝的護(hù)理
- 滲透檢測記錄
- 山東德州財金投資控股集團(tuán)有限公司招聘考試真題2022
- 《工業(yè)機(jī)器人應(yīng)用與維護(hù)》專業(yè)人才培養(yǎng)方案
- 高中語文人教版高中必修文言文定語后置
- 傳統(tǒng)孝道人物虞舜
評論
0/150
提交評論