版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
2023年江西省九江市全國計算機等級考試
C語言程序設(shè)計模擬考試(含答案)
學(xué)校:班級:姓名:考號:
一、2.填空題(10題)
1.以下程序運行后的輸出結(jié)果是_____O
main()
(
inta,b,c;
a=25;
b=025;
c=0x25;
printf("%d%d%d\n",a,b,C);
)
2.以下程序的輸出是【】。
main()
(
charstrl[]=Howdoyoudo",*p=strl;
strcpy(strl+strlen(strl)\2"esshe");
pfinff("%s\n",pl);
)
3.以下函數(shù)inverse的功能是使一個字符串按逆序存放,請?zhí)羁铡?/p>
inverse(charstrf])
{charm;
inti,j;
for(i=0,j=strlen(str);i<strlen(str)/2;[],j-)
{m=str[i];
str[i]=[];
【】;
4.以下程序的功能是根據(jù)輸入的"y"("Y")與“n"("N"),在屏幕上分別顯示
出"ThisisYES."與"ThisisNO."o空白處需要填入的內(nèi)容是
#include<stdio.h>
voidYesNo(charch)
{switch(ch)
{case'y':
case'Y':printf("\nThisisYESAn");
case'n':
caseN:printf("\nThisisNO.\n");}
main()
{charch;
printf("\nEnterachary,Yorn,N:");
ch=[];
printf("ch;%c",ch);
YesNo(ch);}
5.測試用例包括輸入值集和【】值集。
6.以下程序的輸出結(jié)果是____o
voidfun()
{staticinta=0;
a+=2;printf("%d",a);
)
main()
{intcc;
for(cc=1;cc<4;cc++)fun();
printf("\n");
7.若運行時給變量x輸入12,則以下程序的運行結(jié)果是【】;
main(){
intx,y;
scanf(""%d"",&x);
y=x>12?x+10:x-12;
printf(""%d\n"",y);
}
8.深度為5的滿二叉樹中,葉子結(jié)點的個數(shù)為o
9.設(shè)a、b、c為整形數(shù),且a=2,b=3,c=4則執(zhí)行完以下語句后,a
的值是【】。
a*=16+(b++)-(++c);
10.以下程序運行時若從鍵盤輸入102030〈回車>。輸出結(jié)果是【】。
#include<stdio.h>
main()
(
inti=O,j=O,k=O;
scanf("%d%*d%d",&i,&j,&k);
printf("%d%d%d\n",i,j,k);
二、單選題(10題)
11.若變量C為char類型,能正確判斷出c為小寫字母的表達式是
A.'a'<=c<='z'
B.(c>=,a,)||(c<=,z,)
c(a,=c)
D.(c>=W)&&(c<=N)
12.對矩陣進行壓縮存儲是為了()。
A.方便運算B.方便存儲C.提高運算速度D.減少存儲空間
13.
(5)設(shè)有表示學(xué)生選課的三張表,學(xué)生表(學(xué)號,姓名,性別),課程表(課程號,課程名),
選課成績衣(學(xué)號,課程號,成績),則選課成績表的關(guān)鍵字為().
A)課程號,成績,B)學(xué)號,成績
C)學(xué)號,課程號D)學(xué)號,課程號,成績
14.有下列程序:
#include<stdio.h>
#defineSI(x.y)x?y
MefineS2(x,y)(x)?(y)
main()
Iinta=2,b=5;
HH
printf(%d,%d,%d,%d,Sl(a+bfa+b),Sl(a+b,b+a),S2(a+b,a+b)tS2(a+tr,b+a));
I
程序執(zhí)行后的輸出結(jié)果是()。
A.17,17,49,49B,17,29,49,49C.29,29,49,49D.49,49,49,
49
15.以下只有在使用時才為該類型變量分配內(nèi)存的存儲類型說明是()。
A.auto和static
B.auto和register
C.register和static
D.extern和register
16.順序結(jié)構(gòu)的本質(zhì)特點是()。
A.數(shù)據(jù)元素存儲在地址連續(xù)的內(nèi)存空間
B.數(shù)據(jù)元素緊鄰
C.數(shù)據(jù)元素在內(nèi)存中的相對位置表示數(shù)據(jù)之間的邏輯關(guān)系
D.不使用指針
17.
(32)以下程序的輸出結(jié)果是().
#include<std沁.h>
main()
{inta[3][3]={0,1,2,0,1,2,0,1,2},ij,s=1;
fbr(i=0;i<3;i++)
fbr(j=iu<=iu-H-)
s+=a[i][aU]U]];
printR"%d\n",s);
}
A)3B)4C)1D)9
18.設(shè)有以下函數(shù):voidfun(intn,char*s){...}則下面對函數(shù)指針的定
義和賦值均正確的是()o
A.void(*pf)();pf=fun;
B.void*pf();pf=fun
C.void*pf();*pf=fun;
D.void(*pf)(int,char);pf=&fun;
19.有以下程序:
#include<stdio.h>
intf(intx);
main()
intn=l,m;
m=f(f(f(n)));
printff'%d\n”,m);
)
intf(intx)
(
returnx*2;
)
程序的運行結(jié)果是()O
A.8B.2C.4D.l
20.
(16)下列4個程序中,完全正確的是(
A)#include<stdio.h>B)#include<stdio.h>
main();main()
{/#programming*/{/*/programming/?/
printflf^programming!\n");}printftnprogramming!\nM);}
C)#include<stdio.h>D)include<stdio.h>
main()main()
{///programming*/*/{/*programming*/
printf|Mprogramming!\n");}printf(^programming!\nM);}
三、程序設(shè)計題(10題)
21.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方
案的項目中包含一個源程序文件progl.c。在此程序中,請編寫函數(shù)
fun(),其功能是將一個數(shù)字字符串轉(zhuǎn)換成與其面值相同的長整型整數(shù)。
可調(diào)用strlen函數(shù)求字符串的長度。例如,在鍵盤輸入字符串2345210,
函數(shù)返回長整型整數(shù)2345210。注意:部分源程序存放在文件progl.c
中,請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()
指定的部位填入所編寫的若干語句。試題程序:
?include<stdio.h>
2#include<string.h>
3voidNONO();
4longfun(char*s)
5
7}
8main()
{chars[10];longr;
10printf("請輸入一個長度不超過9
個字符的數(shù)字字符串:?);
11gets(s);
12r=fun(s);
13printf(Mr=%ld\nM,r);
■14)NONO();
16voidNONO()
17{/*本函數(shù)用于打開文件、輸入數(shù)據(jù)、調(diào)
用函數(shù)、榆出數(shù)據(jù)及關(guān)閉文件*/
18FILE?fp,?wf;
19inti;longr;
20chars[10]/?p;
MnMM
21fp=fopen(in.datfr);
wf-fopen("out.dat","w");
for(i=0;i<10;i++){
24fgets(s,10,fp);
p■strchr(sr?\n*);
if(p)*p-0;
27r=fun(s);
fprintf(wfM%ld\nMr);
■rz
30fclose(fp);
MEfclose(wf);
32)
22.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方案
的項目中包含一個源程序文件progl.c。在此程序中,編寫函數(shù)fun(),
其功能是將a、b兩個兩位正整數(shù)合并成一個新的整數(shù)放在c中。合并
的方式是將a中的十位數(shù)和個位數(shù)依次放在變量c的百位和個位上,b
中的十位數(shù)和個位數(shù)依次放在變量c的千位和十位上。
例如,當(dāng)a=45,b=12,調(diào)用該函數(shù)后c=1425。
注意:部分源程序給出如下。
請勿改動主函數(shù)main。和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花
括號中填入你編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
voidfun(inta,intb,long*c)
(
)
main()
{
inta,b;
longc;
printff'Inputa,b:");
scanf("%d%d”,&a,&b);
fun(a,b,&c);
printf("Theresultis:%ld\n,,,c);
)
23.請編寫函數(shù)proc(),該函數(shù)的功能是:計算n門課程的平均分,計
算結(jié)果作為函數(shù)值返回。例如,有6門課程的成績是90.5,72,80,
61.5,55,60,則函數(shù)的值為69.830注意:部分源程序給出如下。
請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的
花括號中填入所編寫的若干語句。試題程序:
4includeVwdio.h>
floatproc(float■a.intn)
(
voidmain()
<
floatscorefSO]1?<90.5?72?80?61.5.55?6O)?
aven
averproc(scorc.6>?
print?"\nAveragcscoreis:%5.2f\nM.aver)i
I
24.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方
案的項目中包含一個源程序文件progl.co在此程序中,編寫函數(shù)fun(),
其功能是將s所指字符串中除了下標(biāo)為奇數(shù)同時ASCII值也為奇數(shù)的字
符之外的其余所有字符全部刪除,字符串中剩余字符所形成的一個新字
符串存放在t所指的數(shù)組中。
例如,若s所指字符串的內(nèi)容為“ABCDEFG12345",其中字符A的
ASCII值為奇數(shù),但所在元素的下標(biāo)為偶數(shù),因此需要刪除;而字符1
的ASCII值為奇數(shù),所在數(shù)組中的下標(biāo)也為奇數(shù),因此不應(yīng)當(dāng)刪除,
其他依此類推。最后t所指數(shù)組中的內(nèi)容應(yīng)為“135”。
注意:部分源程序給出如下。
請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花
括號中填入你編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
voidfun(char*s,chart[])
(
)
main()
(
chars[100],t[100];
printf("\nPleaseenterstrings:");
scanf("%s”,s);
fun(s,t);
printf("\nTheresultis:%s\n,,,t);
)
25.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方案
的項目中包含一個源程序文件progl.Co在此程序中,請編寫函數(shù)fun(),
其功能是找出2xM整型二維數(shù)組中最大元素的值,并將此值返回調(diào)用
函數(shù)。
注意:部分源程序給出如下。
請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花
括號中填入你編寫的若干語句。
試題程序:
#defineM4
#include<stdio.h>
intfun(inta[][m])
(
)
voidmain()
(
intarr[2][M]={5,8,3,45,76,-4,12,82);
printf("max=%d\n”,fun(arr));
)
26.學(xué)生的記錄由學(xué)號和成績組成,M名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入
結(jié)構(gòu)體數(shù)組S中,請編寫函數(shù)proc(),它的功能是:把分?jǐn)?shù)最高的學(xué)生
數(shù)據(jù)放在h所指的數(shù)組中。注意:分?jǐn)?shù)最高的學(xué)生可能不止一個,函
數(shù)返回分?jǐn)?shù)最高學(xué)生的人數(shù)。
注意:部分源程序給出如下。
請勿改動main。函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括
號中填入所編寫的若干語句。
試題程序:
0tfirludr<■ids.
UdefineM16
rrpedrlttrurf
tHwifttutn[10ji
IIM>4
STREC:
mtpm(STREX'?STREl*-b)
JCTREC
IA002..69)?(?GA004'<?GA001”?9II?
(?GA007*?72).("GAOOS"?641?<-GAOO?*.S)?
(?GA015*.85).《?GAOU*,?!)*(-GA012-.X??
r*GA0Ha.9BUMGA0llw.MI.rGA0n*?MI.
(*GAOir.64)t<*GAOir.72Hi
STRECMM。
mei?m
11aBpHX<?tU?h)|
peintfC"TheKdhi.hE*coett\nM?n)i
for<i-0iKm計+》
pnntf(*KtM4d\nt>un?hCi].>>a
,?用■育分學(xué)生的學(xué)號和虞嫌
27.請編寫一個函數(shù)voidproc(char*str),其功能是:將字符串str中所有
下標(biāo)為偶數(shù)位置上的字母轉(zhuǎn)化為大寫(若該位置上不是字母,則不轉(zhuǎn)換)。
例如,若輸入字符串:“thankyou6verymuch”,則應(yīng)輸出:
“TbAnKYoU6vErYMuCh”。注意部分源程序給出如下。請勿改動main
()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入
所編寫的若干語句。試題程序:
修includeVcoeio.b>
9includeVsldux.h>
宜includeVmdhRh>
voidpruc<char?
.oidm*in()
ciuif
)i
printf<*Ptc?>emivrancharacterttnnc
wvtlMn$0rli?hM>9*r?s\nM)i
gcts(tt)?
prtatfC*\?\||Afterchancmg?tbr.ft)?
proc<tt)i
prmtfC*\nbccoviKs\n
28.
學(xué)生的記錄由學(xué)號和成績組成,M名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)
體數(shù)組s中,請編寫函數(shù)proc(),它的功能是:函數(shù)返回指定學(xué)號的學(xué)
生數(shù)據(jù),指定的序號在主函數(shù)中輸入。若沒找到指定的學(xué)號,在結(jié)構(gòu)體
變量中給學(xué)號置空串,給成績置〕作為函數(shù)值返回(用于字符串比較
的函數(shù)是strcmp)。注意:部分源程序給出如下。請勿改動main()
函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編
寫的若干語句。試題程序:
UrtirludrVairing,b>
tftclucieVafllidh>
BmckideVadlik.b>
ddt-(in*Ml€
i]rpv<Sr(Mfucl
Ic'tuirnum!10j?
till?i
STR?'?
STRIXpruc(SlREl?■.char?b)
voidmainC)
1?(;Aoo2..e9?{-《;A00』??B3:?C<;A001..91l?
:*GA0?t7*,72)J-GA00g*??4?<?GA0O6*<S71?
1F.AOI5..Ail.lT;Ani3??9l?*GA0ir.Mi.
?<;A0Ue.tll?GAOIT^.MI.
CGA018*.M|.{wGA01S*.72Me
STRECbe
rliarm[lOji
mtH
pntitl<*Thr0r.m*1datai\iB>>i
(or<i*Oit<MII-I*+)
<if(iK4**0)
pnml(M\n*>i
〃■戶?山4個學(xué)生吐我
pnnvf("K?"3d*num*9ts[iJ.s)i
pnntf<?\B\nEnterthenumber?>><
getn(tn)?
li~pror(
|innl((*Thrdatai*>i
pnnifC*\?K?X4<f\n*?h.aum.k?>?
29.規(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);
)
30.學(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的花括
號中填人所編寫的若干語句。
試題程序:
#include<stdio.h>
#defineM16
typedefstruct
(
charnum[10];
ints:
)
STREC;
intproc(STREC*a,STREC*b,int1,inth)
{
)
voidmain
{
STRECstu[M]={{"GA005",55),{"GA003",96},
{"GA002",80),{"GA004",68),
{"GA001",88},{"GA007",74},
{"GA008",85),{"GA006",89},
{"GA015",90),{"GAO13",53),
{"GAO12",66},{"GAO14”,82),
{"GAO11",73},{"GAO17",69),
{"GAO18",64),{"GA016",86}};
STRECh[M];
inti,n,low,heigh,t;
printf("Enter2integernumberlow&
heigh:");
scanf("%d%d",&low,&heigh);
if(heigh<low))
(
t=heigh:
heigh=low;
low=t;
}
n=proc(stu,h,low,heigh);
printf("Thestudent5Sdataout
%d—%d:\n",low,heigh);
for(i=0;i<n;i++)
printf("%S%4d\n",h[i].num,h[i].s);
//輸出指定分?jǐn)?shù)范圍內(nèi)的學(xué)生記錄
printf("\n");
)
四、2.程序修改題(10題)
31.給定程序MOD11.C中函數(shù)fun的功能是:根據(jù)以下公式求兀值,
并作為函數(shù)值返回。
例如,給指定精度的變量eps輸入0.0005時,應(yīng)當(dāng)輸出Pi=3.141480°
IC.1121231234
-=1+-+-X-+-X-X-+-X-X-X-+…
23353573579
請改正程序中的錯誤,使它能得出正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
;finclude<math.h>
2!tinclude<stdio.h>
3idoublefun(doubleeps)
4?{doubles,t;intn-1;
5s-0.0;
6;/**?<?****???found****?**?*?*?
7t-0;
8while(t>eps)
9{
10t,t*n/(2*n4-l);
11
12)
13…………found…………
14?return(s);
15
16imain()
?
17|{doublex;
18printf(H\nPleaseentera
?precision:");scanf(w%lffcx)
19printf("\neps?%lfr
!Pi-%lf\n\n*rxrfun(x));
20
32.下列給定程序中,函數(shù)fun()的功能是:用冒泡法對6個字符串按由
小到大的順序進行排序。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).
試題程序:
#include<conio.h>
#include<stdio.h>
#defineMAXLINE20
/*************found**************/
fun(char*pstr[6])
{inti,j;
char*p;
for(i=0;i<5;i++)
{for(j=i+l;j<6;j++)
/*************found**************/
{if(strcmp(*(pstr+i),pstr+j)>0)
(
p=*(pstr+i);
/*************found**************/
*(pstr+i)-pstr+j;
*(pstr+j)=p;
)
)
main()
{inti;
char*pstr[6],str[6][MAXLINEl;
clrscr();
for(i=0;i<6;i++)pstr[i]=str[i];
printf("\nEnter6string(1stringateach
line):\n");
for(i=0;i<6;i++)scanf("%s",pstr[i]);
fun(pstr);
printf("Thestringsaftersorting:\n");
for(i=0;i<6;i++)printf("%s\n",pstr[i]);
33.下列給定程序中,函數(shù)fun()的功能是計算并輸出high以內(nèi)的素數(shù)
之和。high由主函數(shù)傳給fun()函數(shù)。若high的值為100,則函數(shù)的值
為為60。
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<math.h>
intfun(inthigh)
(
intsum=0,n=0,j,yes;
while(high>=2)
yes=l;
for(j=2;j<=high/2;j++)
/*************found**************/
ifhigh%j==O
yes=0;
break;
)
/*************found**************/
if(yes==0)
sum+=high;
n++;
}
high-;
returnsum;
)
main()
clrscr();
printf("%d\n",fun(lOO));
}
34.給定程序MOD11.C中函數(shù)fun的功能是:讀入一個字符串(長度<
20),將該字符串中的所有字符按ASCII碼升序排序后輸出。
例如,若輸入:edcba,則應(yīng)輸出:abcdeo
請改正程序中的錯誤,使它能統(tǒng)計出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
1linclude<stdio.h>
2linclude<string.h>
3voidfun(chart[])
4(
charc;
6inti,j;
7/*??????***found*??*?**?***/
8for(i?strlen(t);i;i--)
9for(j?0;j<i;j++)
10/***w*****wfound********??*/
11if(t[j]<t(j.U)
12(
13c-t(j];
14t[j]-t(j?11;
15t[j*1]-c;
16
17
18main()
19(
20chars[81];
21printf(w\nPleaseenteracharacter
string:R);
22gets(s);
23printf("\n\nBeforesorting:\n
\W,s);
24fun(s);
25printf(R\nAftersortingdecendingly:
\n\W,s);
26
35.在主函數(shù)中從鍵盤輸入若干個數(shù)放入數(shù)組中,用0結(jié)束輸入并放在
最后一個元素中。下列給定程序中,函數(shù)fun()的功能是計算數(shù)組元素中
值為負(fù)數(shù)的平均值(不包括0)。
例如:數(shù)組中元素的值依次為43,47,-21,53,-8,12,0,則程序的
運行結(jié)果為-25.333333。
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
doublefun(intx[])
(
doublesum=0.0;
intc=0,i=0;
/*************found*************/
while(xfi]==0)
(
if(x[i]<0)
(
sum=sum+x[i];
C++;
)
i++;
}
/************found***********/
sum=sum\c;
returnsum;
}
main()
(
intxf1000];
inti=0;
clrscr();
printf("\nPleaseentersomedata(endwith
0):”);
do
(
scanf("%d",&xfi]);
}while(x[i++]!=0);
printf("%f\n",fun(x));
)
36.下列給定程序中,函數(shù)fun()的功能是:從3個紅球,5個白球,6個
黑球中任意取出8個作為一組,進行輸出。在每組中,可以沒有黑球,
但必須要有紅球和白球。組合數(shù)作為函數(shù)值返回。正確的組合數(shù)應(yīng)該是
15。程序中i的值代表紅球數(shù),j的值代表白球數(shù),k的值代表黑球數(shù)。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注童:不要改動main函數(shù),不得增行或刪行,也不得更改程序的蛀構(gòu)。
試題程序:
#include<stdio.h>
intfun()
{inti,j,k,sum=0;
printf("\nTheresult:\n\n");
/**************found***************/
for(i=0;i<=3;i++)
{for(j=l;j<=5;j++)
{k=8-i-j;
/**************found******************/
if(k>=l&&k<=6)
{sum=sum+l;
printf("red:%4dwhite:%4d
black:%4d\n",i,j,k);
)
returnsum;
)
main()
{intsum;
sum=fun();
printf("sum=%4d\n\n",sum);
)
37.下列給定程序中,函數(shù)fun()的功能是:從字符串s中,刪除所有小
寫字母七,。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).
試題程序:
#include<stdio.h>
voidfun(char*s)
{inti,j;
for(i=j=0;s[i]!='\0';i++)
if(sill!二c)
sU]=s[i];
/**************found*************/
s[i]='\0';
)
main()
{chars[80];
printf("\nEnterastring:");
gets(s);
printf("Theoriginalstring:")
puts(s);
fun(s);
printf("Thestringafterdeleted:");
puts(s);printf("\n\n"):
38.給定程序MODH.C中函數(shù)fun的功能是:求整數(shù)x的y次方的低
3位值。例如,整數(shù)5的6次方為15625,此值的低3位值為625。
請改正函數(shù)fun中指定部位的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
1linclude<stdio.h>
2longfun(intxrintyrlong*p)
3{inti;
4longt?l;
5/★?????★??★★??found*************/
6for(i-1;i<y;i++)
7
8*p-t;
9/…………*found…………?/
10t-t/1000;
11returnt;
12}
13main()
14{longr;intxry;
15printf(w\nlnputxandy:n);
Hw
scanf(%ld%ld/&x,&y);
16t?fun(xryr&r);
w
17printf(\n\nx?%d/y-%drr?%ld,
w
last?%ld\n\nfxry,r,t);
18
39.下列給定程序中,函數(shù)fun()的功能是讀入一個字符串(長度<20),
將該字符串中的所有字符按ASCII碼降序排序后輸出。
例如:輸入daflic,則應(yīng)輸出hfdca0
請改正程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,敢不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
/*************found**************/
intfun(chart[l)
charc;
inti,j;
for(i=0;i<strlen(t)-l;i++)
for(j=i+l;i<strlen(t);j++)
if(t[i]<t[j])
(
c=tU];
/*************found**************/
t[i]=t[i++];
t[i]=c;
)
)
main()
{
chars[81];
clrscr();
printf("\nPleaseenteracharacter
string:");
gets(s);
printf("\n\nBeforesorting:\n%S",s);
fun(s);
printf("\nAftersortingdecendingly:\n
%s",s);
)
40.下列給定程序中,函數(shù)fun()的功能是:在字符串str中找出ASCII
碼值最大的字符,將其放在第一個位置上,并將該字符前的原字符向后
順序移動。例如,調(diào)用fun()函數(shù)之前給字符串輸入ABCDeFGH,調(diào)用
后字符串中的內(nèi)容為eABCDFGHo
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
/***************found************/
fun(char*p)
{charmax,*q;inti=0;
max=p[i];
while(p[i]!=0)
{if(max<p[i])
/***************^Qund************/
p=q+i;max=p[i];
/***************^Qund************/
while(q<p)
{*q=*(q-l);
q-;
)
p[0]=max;
)
main()
{charstr[80];
printf("Enterastring:");gets(str);
printf("\nTheoriginalstring:");
puts(str);
fun(str);
printf("\nThestringaftermoving:");
puts(str);printf("\n\n");
)
五、程序改錯題(2題)
41.
下列給定程序中函數(shù)fun()的功能是:用遞歸算法計算斐波拉契數(shù)列
中第n項的值。從第1項起,斐波拉契數(shù)列為:1,1,2,3,5,8,13,
21,...例如,若給n輸入7,則該項的斐波拉契數(shù)值為13。請改正程
序中的錯誤,使它能得出正確結(jié)果。注意:不要改動main()函數(shù),
不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:
includrVudio.
fung>
/f????????
(g>?
CBMOtreturn0i
//????found????
d1icase2imurnIi
I
rvvum(funCg*I)+
vendmam()
longfibimin(
pnnM(*lnput
sKd*?&-!!)i
pnntf(*n-Kd\n*?n>?
(ib*fun(n)t
pnotfC*(ib=Md\n\ae?fib)i
42.
下列給定程序中,函數(shù)proc()的功能是:用冒泡法對6個字符串按由
小到大的順序進行排序。請修改程序中的錯誤,使它能得到正確結(jié)果。
注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)
構(gòu)。試題程序:
9mcltMfk*
WincludeVzdlhh>
0mclucir<EMO.h>
9includrV>tdto?h>
defineMAX20
midchar?
mtt.ii
<*haf?pi
(or。-I?1<?"++?
//????(<Mind????
i“3rrmp(
p??<p?”+i>i
?<pMr*?"1>—?(pstr^pi
//????found????
?(p?trA?pi
)
vuedBMNI<>
iniii
char?][MAX]i
*CLS*>i
lor<K>3i<6ii++)
prwifK*\nfZater6Mrmg"?cnncateachhne>i\
fori|H0iiV6,i+?)
?山])[
prodp)i
pnnl{(aTbrwiring*ahrrtaninfAn*)1
lDt<i-0.y,—+4)
pnnif(wK?\n*?!>[?])i
六、操作題(2題)
43.請補充main函數(shù),該函數(shù)的功能是輸入兩個正整數(shù)numl和num2,
求這兩個數(shù)的最大公約和最小公倍數(shù)。
例如,若輸入的兩個正整數(shù)為12,4,則它們的最大公約數(shù)為12,最小
公倍數(shù)為4。
注意:部分源程序給出如下。
請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在main函數(shù)的橫線上
填人所編寫的若干表達式或語句。
試題程序:
#include<stdlib.h>
#include<stdio.h>
voidmain
{
inta,b,numl,num2,t;
system("CLS"):
printf("\nlnputtwonumbers:\n");
scanf("%d,%d",&numl,&num2);
if(numl<num2)
(
a=num2;
b=numl:
}
else
(
a=numl;
b=num2;
while([1])
t=[2]
a=b;
b=t:
)
printff'greatestcommondivisor:
%d\n",a);
printf("leastcommonmultiple:
%d\n",[3];
)
44.已知學(xué)生的記錄由學(xué)號和學(xué)習(xí)成績構(gòu)成,N名學(xué)生的數(shù)據(jù)已存入a
結(jié)構(gòu)體數(shù)組中。請編寫函數(shù)fun(),該函數(shù)的功能是;找出成績最高的
學(xué)生記錄,通過形參返回主函數(shù)(規(guī)定只有一個最高分)。已給出函數(shù)的
首部,請完成該函數(shù)。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括
號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<string.h>
#include<conio.h>
#defineN10
typedefstructss/*定義結(jié)構(gòu)體*/
{charnum[10];
ints;
}STU;
fun(STUa[],STU*s)
main()
(
STUa[N]={{"A01",81},{"A02",89},
{"A03",66},{"A04",87},{"A05",77},
{"A06",90},{"A07",79},{"A08",61),
{"A09",80},{"A10",71}},m;
inti;
clrscr();
printf("*****Theoriginaldata*****");
for(i=0;i<N;i++)
printf("No=%sMark=%d\n",a[i].hum,
a[i].s);
fun(a,&m);
printf("*****THERESULT*****W');
printf("Thetop:%s,%d\n",m.num,m.s);
)
參考答案
1.252137252137解析:本題中先定義了整型變量a、b和c,然后分
別給賦值a為25,b為八進制的025,c為十六進制0x25。然后調(diào)用
pruntf()函數(shù)將a、b和c分別用十進制輸出,且中間用空格隔開,八進
制025轉(zhuǎn)換為十進制的值為21,十六進制的0x25轉(zhuǎn)換為十進制的值為
37,故最后的輸出結(jié)果為252137。
2.HowdoessheHowdoesshe解析:strcpy(strl,sl):字符串拷貝函數(shù),作
用是將字符串si拷貝到字符數(shù)組strl中去。strlen(str):測試字符串str的
長度,函數(shù)的值為字符串中實際長度,不包括'\\0'在內(nèi)。本題中strlen(str
1)的值為13,則strcpy(strl+strlen(strl)/2'esshe')相當(dāng)于strcpy(strl+6'esshe');,
因此可得答案為Howdoessheo
3.i++或++istr[j-l]str[j-l]=mi++或++i\r\nstr[j-1]\r\nstr[j-l]=m解析:字
符中逆序存放的算法是:將字符串中的第i個字符和第strlen(str)-i個字
符交換。然后交換字符串中第i+1個字符和第(strlen(str)-i)-l個字符,故
循環(huán)變量i的值應(yīng)改變,且步長為1,所以[18]處應(yīng)填i++;讀程序可知,
循環(huán)中通過中間變量m交換字符串中的第i個字符和第strlen(str)-i個字
符,所以題中第一、二處應(yīng)分別填寫str[j-l]=mo
4.getchargetchar解析:考查了字符可以作為整型變量來對待,參與操作。
題中要求根據(jù)輸入的字符調(diào)用函數(shù)YesNo來判斷輸入的字符是y(Y)還
是n(N),字符的輸入可用字符輸入函數(shù)getchar。函數(shù)YesNo用來判斷一
個字符是y(Y)還是n(N),主要用了一個switch多分支結(jié)構(gòu)來比較輸入字
符與字符\ue008V,\ue009Y、,H,N是否相等來實現(xiàn)的。
5.輸出輸出解析:測試用例曲測試輸入數(shù)據(jù)(輸入值集)和與之對應(yīng)的預(yù)
期輸出結(jié)果(輸出值集)兩部分組成。
6.246
7.00解析:三目運算符的形式為(表達式1)?(表達式2):(表達式3)。當(dāng)
(表達式1)值為真時,返回(表達式2)的值;為假時,返回(表達式3)的
值。題中因為x>12為假,所以結(jié)果為x-12,即為0。
8.1616解析:滿二叉樹的葉子結(jié)點都在最后一層,即第4層,且第4層
的結(jié)點達到最大數(shù),即25-1=16。
9.28
10.1030010300解析:本題的scanf()函數(shù)要求用戶輸入三個十進制整
數(shù),但只接受第一和第三個到函數(shù)的第二和第三個參數(shù)所指的內(nèi)存地址
中。所以本題的輸出為:10300。
11.D
12.D
13.C
14.B
對于題干中的宏,替換如下:Sl(a+b,a+b),&+1>)等價于a+b*a+b,
即2+5*2+5,等于17;Sl(a+b,b+a),等價于a+b*b+a,即2+5*5+2,
等于29;S2(a+b,a+b)等價于(a+b)*(a+b),即(2+5)*(2+5),等于
49;S2(a+b,b+a)等價于(a+b)*(b+a),即(2+5)*(5+2),等于49。本題答
案為B選項。
15.B
在用靜態(tài)static與外部extern定義變量時,系統(tǒng)立刻給其分配內(nèi)存,而
定義自動類auto與強制放入寄存器register類型變量時,只有當(dāng)使用時
才分配內(nèi)存。
16.C
17.B
18.A
函數(shù)指針的定義格式為函數(shù)類型(*指針變量名)(形參列表);函數(shù)名和
數(shù)組名一樣代表了函數(shù)代碼的首地址,因此在賦值時,直接將函數(shù)指
針指向函數(shù)名就行了。所以選項A正確。
19.A第1次調(diào)用為m=f(f(f(l))),第2次調(diào)用為m=f(f(2)),第3次調(diào)用
為m=f(4),即返回值為8O故本題答案為A選項。
20.B
21.longfun(char*s)
).
intijen;
Longsum=0;
len=strlen(s);
for(i=0;i<len;i++)
(
sum=sum*10+*s-'0'
s++;
)
retumsum;
)
<len;i++)
要把一個數(shù)字字符轉(zhuǎn)為相應(yīng)的數(shù)字,只要將它的ASCII值減去48(或
D1)即可。要把數(shù)字字符串轉(zhuǎn)為相應(yīng)的數(shù)字,則要從左到右依次取出字
符轉(zhuǎn)為相應(yīng)數(shù)字,乘10再加上下一位數(shù)字。</len;i++)
22.voidfun(inta,intb,long*c)
(
/*b%10獲取b的個位數(shù),a/10獲取a的十位數(shù),a%10獲取a的個位
數(shù),b/10獲取b的十位數(shù)*/
*c=a%10+(b%10)*10+(a/10)*100+(b/10)*1000;
)
本題主要考核如何取出變量a和b的個位數(shù)和十位數(shù),取出后如何將其
表示成c中相應(yīng)的位數(shù)。由于變量a和b都是只有兩位的整數(shù),因此分
別對它們除以1??傻玫剿鼈兊氖粩?shù),分別用1。對它們求余可得到它
們的個位數(shù)。將得到的數(shù)對應(yīng)乘以100。、100、10、1,即可得到c的千
位數(shù)、百位數(shù)、十位數(shù)、個位數(shù)。注意使用變量c時要進行指針運算。
23.
【解析】要計算n門課程的平均分,首先可以求得n門課程的總分,然
后除以n得到其平均分,最后將其平均分返回到主函數(shù)中。
24.voidfun(char*s,chart[])
(
inti,j=0,n;
n=strlen(s);
for(i=0;i<=""p="">
if((i%2)&&(s[i]%2))
(
t[j++]=s[i];/*將下標(biāo)為奇數(shù)同時ASCII值為奇數(shù)的字符放入數(shù)組
t中*/
)
t[j]=t\O,;/*最后加上字符串結(jié)束標(biāo)志*/
)
本題要求保留下標(biāo)為奇數(shù)同時ASCII值也為奇數(shù)的字符,其余的所有字
符都刪除。將s字符串中,滿足條件的字符存放到字符串t中。if的條
件表達式為:if(i%2!=0&&s[i]%2!=0)o
25.intfun(inta[l[m])
{
inti,j,max=a[0][01;
/*對二維數(shù)組進行遍歷*/
for(i=0;i<2;i++)
for(j=0;j<=""p="">
if(max<a[i][j])<p=""x/a[i][j])<>
/*將最大值保存在max中*/
max=a[i]fjl;
returnmax;
因為數(shù)組是二維數(shù)組,所以應(yīng)使用兩層for循環(huán)嵌套。使用for循環(huán)語
句時需注意循環(huán)變量的取值范圍。
此類求最大值或最小值的問題,可以采用逐個比較的方式。遍歷數(shù)組
中所有元素,從中找出數(shù)組的最大值或最小值。首先定義變量max來
存放數(shù)組的第1個元素的值,然后利用for循環(huán)逐個找出數(shù)組中的元
素,并與變量max比較。如果元素值大于max,則將該值賦給max。
循環(huán)結(jié)束后max的值即為數(shù)組最大值。最后將該值返回。
該類題目考查較多,需要掌握逐個比較的方法。對于m*n二維數(shù)組,
采用逐個查找的方法,代碼實現(xiàn)如下:
for(i=0;i<=""p="">
for(j=0;j<=""p="">
26.
mtpror<STREt,???STREC?
Mi二IC分It■鼻的
第■■中
iorO-OiYMoi*?)
分??周
?爭?!觥霾恢挂粋€
rrturn〃
【解析】要得到分?jǐn)?shù)最高的學(xué)生數(shù)據(jù),首先應(yīng)檢查每一個學(xué)生的數(shù)
據(jù),得到學(xué)生的最高成績。成績最高的學(xué)生不止一個,將每一個學(xué)生
的成績與最高成績相比較,得出最高成績學(xué)生的個數(shù),將成績最高的
學(xué)生記錄放在指定數(shù)組中通過形參返回。成績最高的學(xué)生個數(shù)由函數(shù)
值返回給主函數(shù)。
27.
【解析】要將字符串str中下標(biāo)為偶數(shù)位置上的字符轉(zhuǎn)化為大寫字母,
首先應(yīng)該判斷字符串str中下標(biāo)為偶數(shù)位置上的字符是否為小寫字母,
若是將其轉(zhuǎn)化為大寫字母.若不是不做任何變化。
28.
【解析】首先將一個STREC結(jié)構(gòu)的變量學(xué)號賦值為空,成績?yōu)?1。要
返回指定學(xué)生的數(shù)據(jù),應(yīng)該將每一個學(xué)生的學(xué)號與給定的學(xué)生學(xué)號相比
較。若有相同的,則把其數(shù)據(jù)返回給主函數(shù)。如果沒有該學(xué)號的學(xué)生,
就將定義的學(xué)號為空,成績?yōu)?1的記錄返回給主函數(shù)。
29.\n\tvoidfun(char*a)
\n{
\ninti,j=0;
\nfor(i=0;a[i]!=\0;i++)
\nif(a[i]!=*)
\na[j++]=a[i];//若不是要刪除的字符*則保留
\na[j]=\0;//最后加上字符串結(jié)束符\0
\n}
\n【解析】此題是刪除字符串中的星號。思路是通過for循環(huán)完成對字
符串的遍歷,通過if判斷,找到不是“*”的字符,將其賦值到數(shù)組a中
星號前的位置,“if(a[i]!=*)”“a[i++]=a[i『,最后返回主函數(shù)將刪除*后
的字符串輸出即可。\n
3O.\n\tintproc(STREC*a,STREC*b,inti,inth)\n
\n
\n\t{\n
\n
\n\tinti,j=0;\n
\n
\n\tfor(i=0;i<M;i++)\n
\n
\n\tif((a[i].s>=0&&a[i].s<l)||(a[i].s>h&&a\n
\n
\n\t[i].s<=100))//通過if語句,來判斷指定范圍3
\n
\n\t之外的數(shù)5
\n
\n\tb[j++]=a[i];//放到b數(shù)組中\(zhòng)n
\n
\n\treturnj;//最后把其個數(shù)返回到主函數(shù)中\(zhòng)n
\n
\n\t}\n
\n
\n\t【解析】題目要求把指定范圍之外的數(shù)放到b
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年期貨物償債交易具體合同版
- 2024年標(biāo)準(zhǔn)競業(yè)限制及知識產(chǎn)權(quán)保密協(xié)議版B版
- 2024年版權(quán)許可合同:音樂作品版權(quán)使用與授權(quán)
- 2025年咸寧貨運從業(yè)資格證考試題目庫存答案
- 2024年度國際物流運輸網(wǎng)絡(luò)保密及優(yōu)化升級合同3篇
- 單位人事管理制度集錦匯編
- 鋼鐵制品采購?fù)稑?biāo)技巧
- 2025民間借款合同格式范文
- 城市垃圾處理施工合同包工頭
- 2024塔式起重機購置、租賃及安全管理規(guī)范合同3篇
- 商標(biāo)出租合同范例
- 重大版小英小學(xué)六年級上期期末測試
- 會計助理個人年終工作總結(jié)
- 鋼鐵廠電工知識安全培訓(xùn)
- 2024年山東省菏澤市中考?xì)v史試卷
- 說明文方法和作用說明文語言準(zhǔn)確性中國石拱橋公開課獲獎?wù)n件省賽課一等獎?wù)n件
- 中南運控課設(shè)-四輥可逆冷軋機的卷取機直流調(diào)速系統(tǒng)設(shè)計
- 江蘇省蘇州市2023-2024學(xué)年高二上學(xué)期1月期末物理試卷(解析版)
- 酒店建設(shè)投標(biāo)書
- 《基于javaweb的網(wǎng)上書店系統(tǒng)設(shè)計與實現(xiàn)》
- 2024年315消費者權(quán)益保護知識競賽題庫及答案(完整版)
評論
0/150
提交評論