版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
2022年甘肅省張掖市全國計算機(jī)等級考試
C語言程序設(shè)計真題(含答案)
學(xué)校:班級:姓名:考號:
一、2.填空題(10題)
1.設(shè)有以下結(jié)構(gòu)類型說明和變量定義,則變量a在內(nèi)存所占字節(jié)數(shù)是
[]o
structstud
{charnum[6];
ints[4];
doubleave;
}a,*p;
2.以下程序的運(yùn)行結(jié)果為【】。
#defineN5
main()
{inta[N]={1,2,3,4,5},i,temp;
for(i=0;i<N/2;i++)
{temp=a[i];
a[i]=a[N-i-l];
a[N-i-l)=temp;
}
printf("\n");
for(i=0;i<n;i++)printf("%d",a[i]);
3.某二叉樹中度為2的結(jié)點(diǎn)有18個,則該二叉樹中有【】個葉子結(jié)
點(diǎn)。
4.實(shí)體聯(lián)系模型是一種常用的高級概念數(shù)據(jù)模型,而是實(shí)體聯(lián)系
模型中的核心。
5.\13,在內(nèi)存中占1個字節(jié),"\12"在內(nèi)存中占____個字節(jié)。
6.下列程序的輸出結(jié)果【】。
#definePR(ar)printf("ar=%d",ar)
main()
{intj,a[]={l,3,5,7,9,11,13.1),*p=a+5;
for。=3;j;j-)
switch(j)
{case1:
case2:PR(*p++);break;
case3:PR(*(—p));}}
7.以下程序的輸出結(jié)果是【】。
fun(intx,inty,intz)
{z=x*x+y*y;}
main()
{inta=31;
fun(6,3,a)
printf("%d,a)
)
8.下面程序的功能是將字符串a(chǎn)下標(biāo)值為偶數(shù)的元素由小到大排序,其
他元素不變,請?zhí)羁铡?/p>
#include<stdio.h>
main()
(
chara[]="labchmfye",t:
int1,j;
for(i=0;i<7;i+=2)
for(j=i+2;j<9;[])
if([])
{t=a[i];a[i]=a[j];a[j]=t;j++;)
puts(a);printf("\n");
)
9.#define命令出現(xiàn)在程序中函數(shù)的外面,宏名的有效范圍為。
10.以下程序運(yùn)行后的輸出結(jié)果是()。
main()
{charc;intn=100;
loatf=10;doublex;
x=f*=n/=(c=50);
printf("%d%f\n",n,x);
二、單選題(10題)
11.
有以下程序
#include<stdio.h>
main
{inta=l,b=2,c=3,x;
x=(aAb)&C;printf("%d",x);
)
程序的運(yùn)行結(jié)果是()。
A.0B.1C.2D.3
12.讀取二進(jìn)制文件的函數(shù)調(diào)用形式為“fi"ead(bufTer,size,count,的「,其中
buffer代表的是()o
A.一個內(nèi)存塊的字節(jié)數(shù)
B.一個整型變量,代表待讀取的數(shù)據(jù)的字節(jié)數(shù)
C一個文件指針,指向待讀取的文件
D.一個內(nèi)存塊的首地址,代表讀入數(shù)據(jù)存放的地址
13.以下正確的字符串常量是()。
A.“\\\"B.'abc'C.OlympicGamesD."“
14.表示關(guān)系a<b<c的C語言表達(dá)式為()o
A.(a<=B)&&(b<=C)
B.(a<=B)and(b<=C)
C.(a<=b<=C)
D.(a<=B)&(b<=C)
15.下列關(guān)于邏輯運(yùn)算符兩側(cè)運(yùn)算對象的敘述中正確的是()。
A.只能是整數(shù)0或1B.只能是整數(shù)0或非0整數(shù)C.可以是結(jié)構(gòu)體類型
的數(shù)據(jù)D.可以是任意合法的表達(dá)式
16.下列敘述中正確的是()。
A.一個邏輯數(shù)據(jù)結(jié)構(gòu)只能有一種存儲結(jié)構(gòu)
B.邏輯結(jié)構(gòu)屬于線性結(jié)構(gòu),存儲結(jié)構(gòu)屬于非線性結(jié)構(gòu)
C一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存諸結(jié)構(gòu)不影響數(shù)據(jù)
處理的效率
D.一個邏輯數(shù)據(jù)結(jié)構(gòu)可以有多種存儲結(jié)構(gòu),且各種存諸結(jié)構(gòu)影響數(shù)據(jù)處
理的效率
17.在多媒體計算機(jī)系統(tǒng)中,不能用以存儲多媒體信息的是
A.光纜B.軟盤C.硬盤D.光盤
18.若f(n)=3n2+2n+l,則f(n)=()o
A.0(n2)B.O(n)C,O(2n)D.O(3n2)
19.有以下程序:#include<stdio.h>main(){inti=0.s=0;for(;;)if(i==
3IIi==5)continue;if(i==6)break;i++;s+=i;}printf("%d\n”,s);程序
運(yùn)行后的輸出結(jié)果是()。
A.10B.13C.21D.程序進(jìn)入列循環(huán)
20.以下選項中不能用作C語言程序合法常量的是()。
A.123C.1,234D.“\x7D”
三、程序設(shè)計題(10題)
21.學(xué)生記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已放入主函數(shù)中的結(jié)構(gòu)
體數(shù)組中,請編寫函數(shù)fun,其功能是:把分?jǐn)?shù)最低的學(xué)生數(shù)據(jù)放入b所
指的數(shù)組中,注意:分?jǐn)?shù)最低的學(xué)生可能不止一個,函數(shù)返回分?jǐn)?shù)最低
的學(xué)生人數(shù):
注意:部分源程序在文件PROG1.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)flm的花括
號中填入你編寫的若干語句。
findude<stdio.h>
WdcfineN16
typedefttract
|charniun[10]:
ints;
|STREC;
intfun(STREC?a.STREC?b)
main()
(STREC?(N]?H-GA05",851.{"GAOS",761,|"GA02”,691,|"GA04",851,
|"GA01CAO7",72(,rGA08".641.GA06",871.
|-GA015-,85(,)"GA0)3,,91|,|*GA012-,64|,|"CA014",911.
,
|"CA0ir,91|.|"CA0i7,,64|,|-CA0I8",64|,|"CAOI6,72||{
STRECb[N];
iniitn;FIL£?oul;
n=fun(f,h);
prinlf("The%dlowestscore:\n*,n);
for(i=0;i<n;i??)
printf("%B%4d\n*,b[i].num,h[i].?);
pnntf(-\n");
out=fbpen("out.dat**.Ww*);
fprintf(o<rt,,n);
for(i?0;i<n;i??)
fprinlf(out,*%4d\n",h[i].?);
fdooe(out);
i
22.
假定輸入的字符串中只包含字母和*號。請編寫函數(shù)proc(),它的功能
是:只刪除字符串前導(dǎo)和尾部的*號,串中字母之間的*號都不刪除。形
參m給出了字符串的長度,形參h給出了字符串中前*號的個數(shù),形參
e給出了字符串中最后*號的個數(shù)。在編寫函數(shù)時,不得使用C語言提
供的字符串函數(shù)。例如,若字符串中的內(nèi)容為****a*bc*def*g****,刪
除后,字符串中的內(nèi)容則應(yīng)當(dāng)是a*bc*def*g。注意:部分源程序給出如
下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc
()的花括號中填入所編寫的若干語句。試題程序:
ttincludeV.tdso,b>
AIRCIIMUVCOAMKh>
vendprocCdwu?a?mtm.inth?inte)
voedauian()
eMr?£!!j?
m<tn*0?tn*0?fn,O4
phmf(aEncerA?tnnfI\D*)I
<et>(?)i
whileC?t)
-"m"導(dǎo)冷圈舲長It
t一一i/掂計t|B向字符率兄施
wt)dr<?)
{l———■++/
,指針,■向■晅一個字母?sflUt/部?'的
個教
wtul?<?(0*,*,>
<(+?if?*?11
/mitf?網(wǎng)■一個字,?《■畿精??‘?’的個?
proc<■?m?(n?fn)i
prmtf<*The?tnnc>(irrdeleiedt\ii*>i
pulsC?)t
23.…請編寫函數(shù)。fun能是:判斷形參n中的正整數(shù)是幾位數(shù)(輸入數(shù)
據(jù)的位數(shù)不超過4位),并將結(jié)果通過函數(shù)值返回。例如:若輸入的數(shù)
據(jù)為123,則輸出結(jié)果為:輸入的數(shù)字是3位。注意:部分源程序存在
PROG1.C中,請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函
數(shù)fun的花括號中填入所縮寫的若干語句。試題程
linclude<stdio.h>
voidNONO();
intfun(intn)
main()
{intn,place;
do{
printf(“請輸入一個4位以內(nèi)的正整數(shù):
scanf;
Iwhile(n<0IIn>9999);
place?fun(n);
print—1*輸入的數(shù)字是記位\n“,place);
NONO();
)
voidNONO()
</?本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。?/
FILE?fp,?wf;
inti,n,place;
fp-fopen(Rc:\test\in.dat","r");
wf-fopen("c:\testk>ut.datHw");
for(i-0;i<10;i1)
(
fscanf(fp,"Id?,4n);
place■fun(n);
fprintf(wff”%d\n”,place);
fclose(fp);
fclose(wf);
序:)
24.請編寫一個函數(shù)voidproc(char*str),其功能是:將字符串str中所有
下標(biāo)為偶數(shù)位置上的字母轉(zhuǎn)化為大寫(若該位置上不是字母,則不轉(zhuǎn)換)。
例如,若輸入字符串:“thankyou6verymuch",則應(yīng)輸出:
“TbAnKYoU6vErYMuCh”。注意部分源程序給出如下。請勿改動main
()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入
所編寫的若干語句。試題程序:
FIncludeVcooio.b>
9includeVZ&OLb>
*includeVsidUKh>
voidpruc<char?Mr)
RidYAMI)()
ciuiftt£51].
?yw<<^ii("CI.S">i
prtnt(<*Ptc?*?*?t*rancharacterBtnn*
wvtlMn$0cluirMk9er?i\nw)?
gcis(tt)?
printf<<\?\nAhrrchancingubcMring\a%>*.11)1
proc<tt)1
prmtfC*\nbcconKB\n%?"?"一
25.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方
案的項目中包含一個源程序文件progl.co在此程序中,編寫函數(shù)fun(),
其功能是根據(jù)以下公式求兀的值(要求精度0.0005,即某項小于0.0005
時停止迭代)O
^=I+±+p^1x2x3+Ix2xlx4
233x53x5x73x5x7x9
1x2x…x〃
3x5x???x(2n+1)
程序運(yùn)行后,若輸入精度0.0005,則程序應(yīng)輸出為3.140578。
注意:部分源程序給出如下。
請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花
括號中填入你編寫的若干語句。
試題程序:
#include<stdio.h>
#include<conio.h>
#include<math.h>
doublefun(doubleeps)
(
)
voidmain()
(
doublex;
printf('Inputeps:");
scanf("%lf',&x);
printf("\neps=%lf,PI=%lf\n,5,x,fun(x));
)
26.學(xué)生的記錄由學(xué)號和成績組成,M名學(xué)生的數(shù)據(jù)已在主函數(shù)中放人
結(jié)構(gòu)體數(shù)組stu中,請編寫函數(shù)proc(),它的功能是:把指定分?jǐn)?shù)范圍
之外的學(xué)生數(shù)據(jù)放在b所指的數(shù)組中,分?jǐn)?shù)范圍之外的學(xué)生人數(shù)由函
數(shù)值返回。
例如,輸入的分?jǐn)?shù)是70和79,則應(yīng)當(dāng)把分?jǐn)?shù)低于70和高于79的學(xué)生
數(shù)據(jù)輸出,不包含70分和79分的學(xué)生數(shù)據(jù)。主函數(shù)中把70放在low
中,把79放在heigh中。
注意:部分源程序給出如下。
請勿改動main。函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括
號中填人所編寫的若干語句。
試題程序:
gMidud*k>
WdefineMl?
typcdefMruci
duirHMtn[IO]i
I*-i
STREC,
mipror<STREC???STREC?b?mfl?uithX
voidmain()
STRfl1MU(M]?<(*<;ADOSa.SSK<*(^003*,<M,
(*GA002*.SOhlPA004.?
<aGAOOP.MMaGA<X)7fl.74h
《?GA0Q8??N)?<.GA006?.891?
<<GA0i$-.901PAO】3'?
<?GAOI2".”1?C?;AO14?.8Z),
rGA0ir.73KI*GA0n\69h
<wGAOiaa.MU(aGAO)S*.MHs
STRECh(M]i
mti.■?low.hngh*ti
|mtit(<*EiMrr2fen?<rrnumberlow&
Knght
?canf(*KdHd*?(low?the<h>i
lf(h?cbVlow>
t*he?ch|
heigh*lowi
loft.
A*:proc(sin?h?low?lw<h)?
prtfit(<,ThcwiwdcAt'?<Utaoui
Kd------Kdi\a*?low?het<h)?
+)
prifitfc*K?w.h(i3.aum?
〃■掰指定分?jǐn)?shù)越■內(nèi)立學(xué)生妃量
pHfll(<*\ll")|
27.規(guī)定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,其功能是:
除了字符串前導(dǎo)的。號之外,將串中其他*號全部刪除。在編寫函數(shù)時.不
得使用C語言提供的字符串函數(shù).
例如.字符串中的內(nèi)容為???A?BC.DEF.........................?".!!除后,字符串中的內(nèi)容應(yīng)當(dāng)
是:?????ABCDEFG".
注意:部分源程序在文件PR0G1.C中。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
tinchide<stdio.h>
voidfun(chArea)
main()
|char?[8i];voidNONO();
pnntf(*Enterastring:\n");gete(s);
fun(?);
printf("Tbestringafterdeleted:\nM);puls(s);
NONO();
I
voidNONO()
1/?本函數(shù)用于打開文件,臨入數(shù)據(jù).調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。?/
FILE■in,■out;
mli;chart[81];
,
m=fopoi(-in.dal"f"r");
outsfbpen(ffoul.dat",ww");
ibr(i-0;i<10;i??)
I
n
bcanf(in("%8;
Ma
^printf(outv%s\n,?);
I
fd?e(in);
Ho-g);
28.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方
案的項目中包含一個源程序文件progl.c。在此程序中,請編寫函數(shù)
fun(),其功能是統(tǒng)計s所指字符串中的數(shù)字字符個數(shù),并將其作為函
數(shù)值返回。例如,s所指字符串中的內(nèi)容是
2def35adh253kjsdf7/kj8655x,函數(shù)fun()返回值為11注意:部分源程序在
文件progl.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在
函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:
舅1tinclude<stdio.h>
2voidNONO();
3intfun(char*s)
5
6}
7main()
8{char*s=n2def35adh253kjsdf
7/kj8655x";
9printf("%s\nw,s);
10printf(',%dKn*1,fun(s));
11NONO();
12}
13voidNONO()
M{/?本函數(shù)用于打開文件、輸入數(shù)據(jù)、調(diào)
用函數(shù)、輸出數(shù)據(jù)及關(guān)閉文件。?/
15FILE*fp,?wf;
16inti;
17chars[256];
nMnM
嘉fp=fopen(in*datrr);
19wf=fopen(Mout.dat11,www);
20for(i-0;i<10;i++){
21fgets(sf255,fp);
,"
Wfprintf(wf,%d\n"rfun(s));
■
9Efclose(fp);
fclose(wf);
■)
29.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方
案的項目中包含一個源程序文件progl.c。在此程序中,請編寫一個函
數(shù)fun(),用來求出數(shù)組中值最大的元素在數(shù)組中的下標(biāo)并將其存放在
k所指向的存儲單元中。
例如,輸入如下整數(shù):
876675896101301401980431451777則輸出結(jié)果為6,980□
注意:部分源程序在文件progl.c中。
請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花
括號中填入你編寫的若干語句。試題程序
1tinclude<conio.h>
2#include<stdio.h>
3#include<stdlib,h>
4intfun(int?szintt,int?k)
5{
6
7)
8voidmain()
9{
10FILE*wf;
11inta[10]={876,675,896,101,
301r401r980r431,451,777}rk;
12system(MCLSH);
13fun(a,10,&k);
14printf(w%d,%d\n",k,a[k]);
15/**************京**/
16wf=fopen(nout.daf\MwH);
w
.17fprintf(wfr%d,%d”,k,a[k]);
18fclose(wf);
19/
20}
30.有一個一維數(shù)組,內(nèi)放10個學(xué)生成績,寫一個函數(shù),求出平均分。
四、2.程序修改題(10題)
31.下列給定程序中fun()函數(shù)的功能是:將n個無序整數(shù)從小到大排序。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意;不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
fun(intn,int*a)
{inti,j,p,t;
for(j=O;j<n-l;j++)
{P=j;
/***************found*******************/
for(i=j+l;i<n-l;i++)
if(a[p]>a[i])
/***************found*******************/
t=i;
if(p!=j)
{t=a[j];a[j]=a[p];a[p]=t;}
putarr(ihtn,int*z)
{inti;
for(i=l;i<=n;i++,z++)
{printf("%4d",*z);
if(!(i%10))printf("\n");
}printf("\n");
main()
{intaa[20]={9,3,0,4,l,2,5,6,8,10,7},n=ll;
clrscr();
printf("\n\nBeforesorting%dnumbers:\n",n);putarr(n,aa);
fun(n,aa);
printf("\nAftersorting%dnumbers:\n",n);putarr(n,aa);
32.給定程序M0D11.C中函數(shù)fun的功能是:判斷一個整數(shù)是否是素
數(shù),若是返回1,否則返回0。
在mai()函數(shù)中,若fun返回1輸出YES,若fun返回。輸出NO!。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù)。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
1*include<stdio.h>
2intfun(intm)
3{intk-2;
4while(k<?m&&(m%k))
5/…………"und…………/
6…
7/…………found…………/
8if(m-k)
9return1;
10elsereturn0;
11}
12main()
13(intn;
14printf(??\nPleaseentern:w
R
scanf("%dr&n);
15if(fun(n))printf(MYES\nR);
16elseprintf(WNO!\nn);
17
33.給定程序MOD11.C中函數(shù)fun的功能是:將字符串中的字符按逆
序輸出,但不改變字符串中的內(nèi)容。
例如,若字符串為abed,則應(yīng)輸出:deba。
請改正程序中的錯誤,使它能計算出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
?include<stdio.h>
2/…………found
3fun(chara)
4(if(*a)
5{fun(a*l);
6/…………found
7printf(n%cn*a);
8
9
10main()
11{chars[10]s?nabcdw;
12printf("處理前字符申=*s\n處理后字
符串s);
13fun(s);printf(w\nn);
14
34.下列給定程序中,函數(shù)fun()的功能是:用下面的公式求兀的近似值,
直到最后一項的絕對值小于指定的數(shù)(參數(shù)num)為止。
71/4-1-1/3+1/5-1/7+...
例如,程序運(yùn)行后,輸入0.0001,則程序輸出3.1414。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<math.h>
#include<stdio.h>
floatfun(floatnum)
{ints;
floatn,t,pi;
t=l;pi=0;n=l;s=l;
/**************found***************/
while(t>=num)
pi=pi+t;
n=n+2;
s=-s;
/******
t=s%n;
pi=pi*4;
returnpi;
)
main()
{floatnl,n2;
clrscr();
printf("Enterafloatnumber:");
scanf("%f",&nl);
n2=fun(nl);
printf("%6.4An",n2);
)
35.給定程序M0D11.C中函數(shù)fun的功能是:計算小于形參k的最大
的10個能被13或17整除的自然數(shù)之和。k的值由主函數(shù)傳入,若k的
值為500,則函數(shù)值為4622。
請改正程序中的錯誤,使程序能輸出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
1tinclude<stdio.h>
2intfun(intk)
3{intmc-0;
while((k>?2)&&(me<10))
(
/????????????found?
7if((k%13-0)||(k%17-0))
8(m-k;mc++;(
9k一;
10
11returnm;
12/…………"und…………/
13
14main()
15(
ww
16printf(%d\nrfun(500));
17
36.下列給定程序中,函數(shù)fun()的功能是:計算并輸出下列級數(shù)的的
N項之和SN,直到SN+1大于q為止,q的值通過形參傳入。
SN=2/l+3/2+4/3+(N+l)/N
例如,若q的值為50.0,則函數(shù)值為49.394948。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意,?不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).
試題程序:
#include<conio.h>
#include<stdio.h>
/**************found***************/
doublefun(doubleq)
{intn;doubles,t;
n=2;
s=2.0;
while(s<=q)
t=s
/*************found*************/
s=s+(n+l)/n;
n++;
printf("n=%d\n",n);
/************found***************/
returns;
main()
{clrscr();
printf("%Rn"Jun(50));
37.給定程序MOD11.C中函數(shù)fun的功能是:將s所指字符串的正序
和反序進(jìn)行連接,形成一個新串放在t所指的數(shù)組中。
例如,當(dāng)s所指字符串為:“ABCD”時,則t所指字符串中的內(nèi)容應(yīng)為:
“ABCDDCBA”。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
1?tinclude<stdio.h>
*
2Itinclude<string.h>
3i/*?*??*?*?*??found************/
4voidfun(chars,chart)
5(
6inti,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]-t\0,;
12
13main()
14
15chars[100]9t(100);
16printf(H\nPleaseenterstringS:R);
w
scanf("%s#s);
17fun(s,t);
w
18printf(\nTheresultis:%s\n"rt);
19
38.給定程序MOD11.C中函數(shù)fun的功能是:先從鍵盤上輸入一個3
行3列矩陣的各個元素的值,然后輸出主對角線元素之和。
請改正函數(shù)fun中的錯誤或在橫線處填上適當(dāng)?shù)膬?nèi)容并把橫線刪除,使
它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
1?include<stdio.h>
2finclude<string.h>
3voidfun()
4(
5inta[3][3],sum;
6intirj;
7
8
9printf("Inputdata:");
10for(i-0;i<3;if>)
11{for(j-0;j<3;j++)
12/**w******found**********/
RR
13scanf(%d,a[i](j]);
14
15for(i-0;i<3;i++)
16sum=sum+a(i)[i];
ww
17printf(Sum?%d\nrsum);
18}
19main()
20
21fun();
22
39.給定程序M0D11.C中函數(shù)fun的功能是:在字符串的最前端加入
n個*號,形成新串,并且覆蓋原串。
注意:字符串的長度最長允許為79o
請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
1tinclude<stdio.h>
2tinclude<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]?wp;
12i++;
13
14**????**??found***********
15while(*p++)
16a(i]-0;
17strcpy(sra);
18
19main()
20(intn;chars[80];
21printf(M\nEnterastring:w);
gets(s);
Mn
22printf(\nThestring\"%s\*\nrs);
23printf(w\nEntern(numberof*):
“);scanf&n);
24fun(s,n);
25printf(w\nThestringafterinsert:
\"%s\"\nw,s);
26
40.下列給定程序中,函數(shù)fun()的功能是:找出一個大于給定整數(shù)m且
緊隨m的素數(shù),并作為函數(shù)值返回。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).
試題程序:
#include<conio.h>
#include<stdio.h>
intfun(intm)
{inti,k;
for(i=m+l;;i++)
{for(k=2;k<i;k++)
/*************found**************/
if(i%k!=0)
break;
/*************found**************/
if(k<i)
return(i);
)
}
main()
{intn;
clrscr();
printf("\nPleaseentern:");
scanf("%d",&n);
printf("%d\n",fun(n));
五、程序改錯題(2題)
41.下列給定程序中,函數(shù)fun()的功能是:根據(jù)輸入的三條邊長(整
形),判斷能否構(gòu)成三角形;構(gòu)成的是等邊三角形還是等腰三角形。若能
構(gòu)成等邊三角形函數(shù),返回3;若能構(gòu)成等腰三角形函數(shù),返回2;若
構(gòu)成=三角形函數(shù),返回1;若不能構(gòu)成三角形函數(shù)返回0。請修改函數(shù)
fun()中的錯誤,得出正確的結(jié)果。注意:不要改動main()函數(shù),
不能增行或減行,也不能更改程序的結(jié)構(gòu)。試題程序:
#include<stdio.h>
inifun(inty,intz)
(
i“x+y>/&&y+z>x&&x+z>y>
(
//????found?*?*
if(x==y&&y==z)
return1?
elseif(xyIly^:zlx--z)
return2,
elite
//?*?*found????
return3s
else
return0(
i
voidmairiC)
intx.y.z.shape;
print?"\nlnputx.y.z:?)i
scan”.%d%d%d*?&x,&y.i
prinif("\nx^%d.y=%d.z=%d\n"?x?y?z)i
shapc=fun(x?y?z)i
prind("\n\nThc5hapc:%d\nH.shape)?
42.
下列給定程序中,函數(shù)proc()的功能是:求S的值。設(shè)
S7《22,4]03))e(4?*(3?$>>?((3?:>
?????(2k)2y<(2h—
例如,當(dāng)k為20時,函數(shù)的值應(yīng)為1.551759。請修改程序中的錯誤,
使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或
刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
stfiduJeVstdio.h>
=mcludeVconeo.h>
9mclu4eVIL>
:includeVaih.h>
??found??
proHintk)
mtmfloat??w?p.Q,
l.Ot
wtiikrCn<
2,0?m
p■■-LOi
q-w
w?wpqi
??found??
rrtum%
fvMMni*CI
ptmtlC
六、操作題(2題)
43.以下函數(shù)用來求出數(shù)組的最大元素在數(shù)組中的下標(biāo)并存放在k所指
的存儲單元中。請?zhí)羁铡?/p>
#include<conio.h>
#include<stdio.h>
intfun(int*s,intt,int*k)
{inti;
*k=0;
[1
if(s[*k]<s[i])*k=i;
return[];}
main()
{inta[10]={876,675,896,101,301,401,980,431,451,777),k;
fun(a,10,&k);
printf("%d,%d\n",k,a[k]);}
44.執(zhí)行以下程序后的輸出結(jié)果是【】。
main()
{inta=10;
a=(3*5,a+4);printf("a=%d\n",a);
參考答案
1.22
2.54321
3.1919解析:根據(jù)二叉樹的性質(zhì):在任意一棵二叉樹中,度為。的結(jié)點(diǎn)
(即葉子結(jié)點(diǎn))總是比度為2的結(jié)點(diǎn)多一個。本題中度為2的結(jié)點(diǎn)數(shù)為18,
故葉子結(jié)點(diǎn)數(shù)為18+1=19個。
4.實(shí)體聯(lián)系圖或E-R圖實(shí)體聯(lián)系圖或E-R圖解析:實(shí)體聯(lián)系圖(B-R圖)
是實(shí)體聯(lián)系模型中的核心。由于E-R圖描述的是數(shù)據(jù)流圖中數(shù)據(jù)存儲及
其之間的關(guān)系,因此它是數(shù)據(jù)庫觀念設(shè)計的最常用的工具。
5.22解析:'W13':表示八進(jìn)制數(shù)13表示的ASCII字符,是一個字符,
占一個字節(jié);而飛12”是個字符串,除了八進(jìn)制數(shù)12表示的ASCII字符
占一個字節(jié)外,還有在字符串的末尾加上串結(jié)束標(biāo)志所以共有2
個字節(jié)。
6.ar=9ar=9ar=llar=9ar=9ar=ll解析:本題綜合考查了for循環(huán),switch
語句及宏替換等幾個知識點(diǎn)。j=3時,執(zhí)行PR(*(--p));輸出數(shù)組元素a[4]
的值;j=2時,執(zhí)行PR(*p++);取出p所指位置的元素a[4],然后p++;
當(dāng)J=1時,執(zhí)行PR(*p++);取得是數(shù)組元素a[6]的值llo
7.3131解析:在函數(shù)調(diào)用時,形參值和改變,不會改變實(shí)參的值。
8j++a[j]>a[j]
9.從定義到本源文件結(jié)束從定義到本源文件結(jié)束解析:C語言規(guī)定,宏
名的有效范圍為從定義宏到本源程序結(jié)束。
10.0
11.D
\n首先計算1與2的或運(yùn)算,再將其結(jié)果與3進(jìn)行“與”運(yùn)算,結(jié)果為
00000011,即十進(jìn)制數(shù)3。
\n
12.D函數(shù)原型“fread(void*buffer,sizetsize,sizetcount,FILE*stream)”
的功能是從一個文件流中讀數(shù)據(jù),讀取count個元素,每個元素size字
節(jié)。如果調(diào)用成功,返回count。buffer用于接收數(shù)據(jù)的內(nèi)存地址,大小
至少是size*count字節(jié);size是單個元素的大小,單位是字節(jié);count是
元素的個數(shù),每個元素是size字節(jié);stream是輸入流。故本題答案為D
選項。
13.D
在C語言中,字符串常量是用雙引號標(biāo)注的字符序列,因此B選項和
C選項不正確。字符序列中可包含一些轉(zhuǎn)義字符,轉(zhuǎn)義字符以“\\”開
頭。A選項中包含3個前兩個(\\\\)代表一個“\\”字符,后面一個為
因為被看作一個所以該字符串缺少一個結(jié)束的因此
A選項不正確。D選項的兩個“”之間沒有任何字符,代表的是一個空
串,是合法的字符串常量,因此D選項正確。B選項的abc應(yīng)該使用
雙引號標(biāo)注。故本題答案為D選項。
14.A解析:本題考查邏輯與運(yùn)算符&&。在C語言中使用運(yùn)算符“&&”
連接兩個表達(dá)式,也可以表示邏輯與運(yùn)算符。在C語言中不允許出現(xiàn)a
<=b<=c這種格式。
15.D解析:邏輯運(yùn)算符兩側(cè)的運(yùn)算對象可以是任意合法的表達(dá)式。邏輯
表達(dá)式的運(yùn)算結(jié)果或者為1(“真”)或者為0(“假”)。
16.D數(shù)據(jù)的存儲結(jié)構(gòu)是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機(jī)存儲空間中的存放
形式,一種數(shù)據(jù)結(jié)構(gòu)可以根據(jù)需要采用不同的存儲結(jié)構(gòu),用的存儲結(jié)構(gòu)
有順序和鏈?zhǔn)浇Y(jié)構(gòu)。用不同的存儲結(jié)構(gòu),其處理的效率是不同的。
17.A
解析:光纜是傳輸多媒體信息的通道,不能用以存儲多媒體信息。
18.A
19.D解析:程序第1次執(zhí)行for循環(huán)時,i=0,兩條if語句中的表達(dá)式
都不成立,執(zhí)行i++;s+=i;此時i為1,s為1第2次循環(huán),兩條if語
句中的表達(dá)式也不成立,執(zhí)行i++,s+=i,此時i為2,s為3;……;當(dāng)
i=3時,執(zhí)行continue,結(jié)束本輪循環(huán),不執(zhí)行i++;繼續(xù)執(zhí)行下一輪循
環(huán),這樣一來i值始終為3,繼續(xù)continue,無終止條件,進(jìn)入死循環(huán)。
20.CC選項中不能含有逗號,所以“1,234”不能用作C語言程序的合法
常量。B選項表示的是八進(jìn)制的常量,D選項表示的是十六進(jìn)制的常量。
故本題答案為C選項。
21.
【考點(diǎn)分析】
本題考查:查找結(jié)構(gòu)體數(shù)組中的最小數(shù)據(jù),需要通過for循環(huán)語句和if
條件語句來完成。
【解題思路】
本題中第一個循環(huán)語句的作用是遍歷數(shù)組求出最低分?jǐn)?shù),第二個循環(huán)
語句的作用是將數(shù)組中的元素與最低分比較,查找是否存在與最低分
相等的成績。
22.
【解析】題目要求不能用C語言提供的字符串函數(shù),可以利用移動字符
串指針來實(shí)現(xiàn),首先移動字符串指針到第一個不是*的位置,通過指針
的移動,來實(shí)現(xiàn)把第一個不是星號的字符與最后一個不是星號的字符放
到a數(shù)組中,最后用‘'0'來作為字符串結(jié)束的標(biāo)志。
23.
int量帆計位”
while(n/lO)〃料備是否為0,若不為O.bita*1,4
*以10,it修判斷
I
bitsx;
n-n/10;
returnbits;【考點(diǎn)分析】主要考察考生對循環(huán)
跳出的條件的理解,以及理解取數(shù)字位數(shù)的方法?!窘忸}思路】通過
對指定的多位數(shù)每次除以10,去掉最后一位,直到為。結(jié)束,使用臨時
變量來統(tǒng)計一個多位數(shù)的位數(shù)。
24.
【解析】要將字符串str中下標(biāo)為偶數(shù)位置上的字符轉(zhuǎn)化為大寫字母,
首先應(yīng)該判斷字符串str中下標(biāo)為偶數(shù)位置上的字符是否為小寫字母,
若是將其轉(zhuǎn)化為大寫字母.若不是不做任何變化。
25.doublefun(doubleeps)
(
doubles=0.0,sl=1.0;
intn=l;
while(sl>=eps)/*當(dāng)某項大于精度要求時,繼續(xù)求下一項*/
{s=s+sl;/*求和*/
sl=sl*n/(2*n+l);
/*求多項式的每一項*/
n++;
)
return2*s;
)
該題考核的是通過迭代法求給定多項式的值。迭代法是讓計算機(jī)對一組
指令(或一定步驟)進(jìn)行重復(fù)執(zhí)行,在每次執(zhí)行這組指令(或這些步驟)時,
都從變量的原值推出它的一個新值。需要注意變量的數(shù)據(jù)類型和賦初值
操作。
定義double類型變量s,并為其賦初值,用來存放多項式的某一項和
最后的總和。從第2項開始,以后的每一項都是其前面一項乘以
n/(2*n+l)o程序用si來表示每一項,用s表示求和后的結(jié)果。需注意
變量si和s的初值都為1.0,因為循環(huán)變量從第2項開始累加。
26.
【解析】題目要求把指定范圍之外的數(shù)放到h中,將每一個學(xué)生的成
績與指定的成績相比較,將符合條件的學(xué)生成績放在數(shù)組b中,并將
符合要求的學(xué)生個數(shù)返回給主函數(shù)。
27.
程序設(shè)計題解析:
【考點(diǎn)分析】
本題考查:指針型變最定義;wh丑e循環(huán)語句;語句條件
表達(dá)式;字符串結(jié)束標(biāo)識
【解題思路】
函數(shù)fun的功能:除了字符串前導(dǎo)的*號之外,將串中其他+號全部刪
除。
【解答本題】
(1)定義一個臨時指針P,初始指向原串首地址;(2)利用循環(huán)語句把字
符串前導(dǎo)*號拷貝到原串;(3)繼續(xù)移動指針,把串中和串尾的非*號字
符拷貝到原串;(4)為修改后的字符串賦結(jié)束字符,0\
【解題寶典】
要刪除字符串中的指定字符,我們通常采用保留非指定字符的方法。
可以將非指定字符保留在原串,即將需要保留的字符從原串的起始位
置重新賦值;也可以保留到新串,即新建一個字符串,存放要保留的
字符。
28.intfun(char*s)
2;{intn=0;
3char*p;
4:;for(p=s;*p!=,\\0';p_L+)
if((*p>,o,)&&(<,9,))
6n++;
7retumn;
8}要統(tǒng)計字符串中數(shù)字字符的個數(shù),首先應(yīng)定義變量n,并將其初始化
為0,然后遍歷字符串,逐個判斷字符是否為數(shù)字字符,判斷條件為該
元素的ASCII值在字符。和9的ASCII值之間,若判斷條件成立,則
使n的值加1,否則,繼續(xù)判斷下一個字符,直到字符串結(jié)束。
29.1intfun(int*s,intt,int*k)
2{
3Inti;
4*k=0;/*k所指的數(shù)是數(shù)組的下
5標(biāo)*/
6for(i=0;i<t;i++)hif(s[*k]<s[i])*k=i;/*找到數(shù)組中值最大的元素,把該元
素的下標(biāo)賦給k所指的數(shù)*/
7returns[*k];/*返回數(shù)組的最大元素*/
81
<t;i++)
<>本題中使用指針變量k作為值最大的元素的下標(biāo)。使用時要注意對
k進(jìn)行指針運(yùn)算。程序一開始讓k指向數(shù)組中的第1個元素,即
*k=0o通過for循環(huán)與數(shù)組各個元素比較,找到最大值。<></t;i++)
30.\nfloataverage(floatarray[],intn)
\n{intI;
\nfloataver,sum=array[0];
\nfor(I=1;Isum=sum+an'ay[I];
\naver=sum/n;
\nreturn(aver);}
\nmain
\n{floatave,score[10];
\nintI;
\nfor(I=0;I<10;I++)
\nscanf('%f,&score[I]);
\nave=average(score,10);
\nprintf('%f\\n',ave);}
\n
31.(1)錯誤:for(i=j+l;i<n-l;i++)正確:for(i=j+l;i<n;i++)(2)錯誤:
t=i;正確:p=i;(1)錯誤:for(i=j+l;i<n-1;i++)正確:for(i=j+l;i<
n;i++)\r\n(2)錯誤:t=i;正確:p=i;解析:該程序是對n個數(shù)實(shí)現(xiàn)從
小到大的排序,該題中先是找小輸入整數(shù)的最小項,置于指針第1個元
素的位置:再找出第2個元素至尾元素的最小項,置于第2個元素的位
置;之后順次處理后讀元素。
32.⑴k++;(2)if(m==k)(l)k++;(2)if(m==k)解析:本題中函數(shù)的功能
是判斷一個整數(shù)n是否是素數(shù)。素數(shù)是只能被1和本身整除的正整數(shù)
(>1),所以判別n是否為素數(shù),只要用2、3.........n-l這些數(shù)逐個去除
n,觀察余數(shù)是否為0即可,只要有一次相除余數(shù)為0,n就不是素數(shù),
否則n為素數(shù)。
33.(l)voidfun(char*a)(2)printf("%c"*a)
(l)voidfun(char*a)(2)printf("%c",*a),解析:本題中函數(shù)的功能
是將字符串中的內(nèi)容逆序。題干中給出的fun函數(shù)通過遞歸調(diào)用自
身,實(shí)現(xiàn)字符串的逆序。
34.(1)錯誤:while(t>=num)正確:while(fabs(t)>=num)(2)錯
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年工區(qū)安全生產(chǎn)工作計劃范文
- 2025年春季學(xué)期學(xué)校工會工作計劃
- 2025年護(hù)理小組的工作計劃
- X光檢查車相關(guān)項目投資計劃書范本
- 數(shù)字仿真計算機(jī)相關(guān)行業(yè)投資方案
- WBC水性汽車金屬閃光涂料行業(yè)相關(guān)投資計劃提議范本
- 橡膠加工專用設(shè)備行業(yè)相關(guān)投資計劃提議
- 2025年小學(xué)教師教育科研秋季工作計劃
- 2025年社區(qū)消防工作計劃例文
- 2025手機(jī)銷售年初工作計劃范文
- 中金在線測評多少題
- 公路橋梁工程施工安全風(fēng)險評估指南
- 2024-2030年全球及中國通過硅通孔(TSV)技術(shù)行業(yè)市場現(xiàn)狀供需分析及市場深度研究發(fā)展前景及規(guī)劃可行性分析研究報告
- 2024年秋季學(xué)期新Join In劍橋版(三年級起)英語三年級上冊課件 Supplementary activities Unit 6
- 2024年新人教版道德與法治七年級上冊全冊教案(新版教材)
- 初中物理期末復(fù)習(xí)+專題5+綜合能力題+課件++人教版物理九年級全一冊
- 2024年國開電大 統(tǒng)計學(xué)原理 形成性考核冊答案
- Unit13 同步教學(xué)設(shè)計2023-2024學(xué)年人教版九年級英語全冊
- 合伙經(jīng)營合作社協(xié)議書
- 廊坊市區(qū)普通住宅區(qū)物業(yè)服務(wù)等級標(biāo)準(zhǔn)
- 超聲引導(dǎo)下疼痛治療
評論
0/150
提交評論