




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2021年河北省保定市全國(guó)計(jì)算機(jī)等級(jí)考試
C語(yǔ)言程序設(shè)計(jì)真題(含答案)
學(xué)校:班級(jí):姓名:考號(hào):
一、2.填空題(10題)
1.下面程序的輸出結(jié)果是____O
main()
{staticchara[]="language",bf]="program";
char*ptrl=a,*ptr2=b;
intk
for(k=0;k<7;k++)
if(*(ptrl+k)==*(ptr2+k))
printf("%c",*(ptrl+k));}
2.以下程序的運(yùn)行結(jié)果為【】°
#defineFORMAT"%u,%u"
main()
{inta[3][4]={l,3,5,7,9,11,13,15,17,19,21,23};
printf("\n");
printf(FORMAT,**a,*a[0]);
printf(FORMAT,*(a[0]+l),*&a[0][l]);
printf(FORMAT,a[l][0],*(*(a+l)+0));
)
3.下列程序的輸出結(jié)果是
#include<stdio.h>
main()
{inta=2,b=-l,c=2;
if(a<b)
if(b<0)c=0;
elsec++;
printf("%d\n",c);
)
4.以下程序的輸出結(jié)果是【】。
voidfun()
{staticinta;
a+=2;
printf("%d",A);
}
main()
{intcc;
fbr(cc=1;cc<=4;cc++)fun();
printf("\n");
)
5.下列程序的輸出結(jié)果是o
#defineP(A)printf("%d,",(int)(A))
#definePRINT(A)P(A);printf("theend")
main()
{inti,a=0;
for(i=1;i<5.i++)
PRINT(a+i);
printf("\n");
)
6.若已經(jīng)定義inta=25,b=14,c=19;,以下三目運(yùn)算符(?:)所構(gòu)成的語(yǔ)句
的執(zhí)行結(jié)果是【】。
a++<=2&&b—<=2&&c++?printf("***
a=%d,b=%d,c=%d\n",a,b,C):printf("a=%d,b=%d,c=%d\n",
a,b,C);
7.Jackson方法是一種面向【】的結(jié)構(gòu)化方法。
8.寫出下列程序的執(zhí)行結(jié)果。swap(pl,p2)int*pl,*p2;{intp;p=*pl;
*pl=*p2;*p2=p;}main(){inta,b,*pl,*p2;scanf("%d%d",&a,
&B};pl=&a;p2=&b;if(a<B)swap(pl,p2);printf("\na=%d,b=%d\n",
a,B);}若a=7,b=8,則程序的運(yùn)行結(jié)果為()。
9.在深度為7的滿二叉樹中,度為2的節(jié)點(diǎn)個(gè)數(shù)為()。
10.以下程序的作用是:從名為filea.dat的文本文件中逐個(gè)讀入字符并顯
示在屏幕上。請(qǐng)?zhí)羁铡?/p>
#include<stdio.h>
main()
{FILE*fp;charch;
fp=fopen(【]);
ch=fgetc(fp);
while(!feof(fp)){putchar(ch);ch=fgetc(fp);}
putchar('\n');fclose(fp);
二、單選題(10題)
(4)對(duì)下列二叉樹進(jìn)行中序遍歷的結(jié)果是().
A)ABCDEFGHB)ABDGEHCFC)GDBEHACFD)GDHEBFCA
12.具有n個(gè)頂點(diǎn)的完全有向圖的弧數(shù)為0。
A.n(n-l)/2B.n(n-l)C.n2D.n2-1
13.
(7)數(shù)據(jù)流圖用于抽象描述一個(gè)軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構(gòu)成。下列圖
符名標(biāo)識(shí)的圖符不屬于數(shù)據(jù)流圖合法圖符的是().
A)控制流B)加工C)存儲(chǔ)文件D)源和潭
14.以下關(guān)于結(jié)構(gòu)化程序設(shè)計(jì)的敘述中正確的是()。
A.一個(gè)結(jié)構(gòu)化程序必須同時(shí)由順序、分支、循環(huán)三種結(jié)構(gòu)組成
B.結(jié)構(gòu)化程序使用goto語(yǔ)句會(huì)很便捷
C.在C語(yǔ)言中,程序的模塊化是利用函數(shù)實(shí)現(xiàn)的
D.由三種基本結(jié)構(gòu)構(gòu)成的程序只能解決小規(guī)模的問題
15.下列敘述中正確的是()。
A.算法的執(zhí)行效率與數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)無關(guān)
B.算法的空間復(fù)雜度是指算法程序中指令(或語(yǔ)句)的條數(shù)
C.算法的有窮性是指算法必須能在執(zhí)行有限個(gè)步驟之后終止
D.以上3種描述都不對(duì)
16.對(duì)n個(gè)元素的有序表A[L.n]進(jìn)行順序查找,其成功查找的平均查找
長(zhǎng)度(即在查找表中找到指定關(guān)鍵碼的元素時(shí),所進(jìn)行比較的表中元素
個(gè)數(shù)的期望值)為()
A.nB.(n+l)/2C.log2nD.nA2
17?一個(gè)二維數(shù)組的定義語(yǔ)句為“inta[3][4]={{3,4},{2,8,6}};”,則元素
a[l]⑵的值為()。
A.2B.4C.6D.8
18.若有以下定義:
chara;intb;
floatc;doubled;
則表達(dá)式a*b+b-c值的類型為()。
A.floatB.intC.charD.double
19.
(19)下列不能正確計(jì)算代數(shù)式;sin2(g)值的C語(yǔ)言表達(dá)式是().
A)1/3*sin(l/2)*sin(l/2)B)sin(0.5)*sin(0.5)/3
C)pow(sin(0.5),2)/3D)l/3.0*pow(sin(1.0/2),2)
20.以下不能對(duì)二維數(shù)組a進(jìn)行正確初始化的語(yǔ)句是()。
A.inta[2][31={0};
B.inta[2][3]={{l,2},{3,4),{5,6}};
C.inta[][3]={{l,2},{0});
D.inta[][3]={l,2,3,4,5,6);
三、程序設(shè)計(jì)題(10題)
21.假定輸入的字符串中只包含字母和*號(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)中填入所編寫的若干語(yǔ)句。
試題程序:
#include<stdio.h=:{>
#include<conio.h>
woidproc(char*str)
)
voidmain
charstr[81];
printf("Enterastring:\n");
gets(str);
proc(str):
printf("Thestringafterdeleted:\n");
puts(str);}
22.
假定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫函數(shù)proc(),它的功能
是:將字符串中的前導(dǎo)*號(hào)全部刪除,中間和后面的*號(hào)不刪除。例如,
若字符串中的內(nèi)容為****a*bc*def*g****,刪除后,字符串中的內(nèi)容則
應(yīng)當(dāng)是a*bc*def*g****。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main
()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入
所編寫的若干語(yǔ)句。試題程序:
#vftclwlrVadicuJ
&ificludrVcomo.h>
roidproc<ciuir?sir>
wvtdtnainC)
rharJi
prifid<*Enfcf?
proc<MT>I
praitR*TbeRtnngaiierdeletedt\n*)i
MillI
23.學(xué)生的記錄由學(xué)號(hào)和成績(jī)組成,M名學(xué)生的數(shù)據(jù)已在主函數(shù)中放
人結(jié)構(gòu)體數(shù)組stu中,請(qǐng)編寫函數(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中。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括
號(hào)中填人所編寫的若干語(yǔ)句。
試題程序:
#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),{"GA013",53),
{"GAO12",66},{"GAO14”,82),
{"GAOH",73},{"GAO17",69),
{"GAO18",64),{"GAO16",86}};
STRECh[M];
inti,n,low,heigh,t;
printf("Enter2integernumberlow&
heigh:");
scanf("%d%d",&low,&heigh);
if(heigh<low)5
(
t=heigh:
heigh=low;
low=t;
)
n=proc(stu,h,low,heigh);
printf("Thestudent'sdataout
%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");
)
24.使用VC++2010打開考生文件夾下progl中的解決方案。此解決方
案的項(xiàng)目中包含一個(gè)源程序文件progLc。在此程序中,編寫一個(gè)函
數(shù),其功能是從傳入的num個(gè)字符串中找出最長(zhǎng)的一個(gè)字符串,并通
過形參指針max傳回該字符串的地址(用****作為結(jié)束輸入的標(biāo)識(shí))。
注意:部分源程序在文件progl.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)
中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語(yǔ)句。
試題程序:
1#include<conio.h>
2#include<stdio.h>
3#include<string.h>
4#include<stdlib.h>
5char*fun(char(*a)[81],intnum,char*max)
6{
7
8}
9voidmain()
10{
11FILE*wf;
12charss[10][81],*ps=NULL;
13chars[3][81]={"abed","deg","diegns"),*p=NULL;
14inti=0,n;
15system("CLS");
16printf("輸入若干個(gè)字符串:");
17gets(ss[i]);
18puts(ss[i]);
19while(!stremp(ss[i],"****")==0)/*用4個(gè)星號(hào)作為結(jié)束輸入的標(biāo)志
*/
20{
21i++;
22gets(ss[i]);
24puts(ss[i]);
25)
26n=i;
27ps=fun(ss,n,ps);
28printf("\nmax=%s\n",ps);
30wf=fopen("out.dat","w");
31p=fun(s,3,p);
32fprintf(wf,"%s",p);
33fclose(wf);
25.請(qǐng)編寫函數(shù)proc(),它的功能是計(jì)算:s=(In(1)4-ln(2)+In(3)
4-...+ln(m))0.5在C語(yǔ)言中可調(diào)用log(n)函數(shù)求In(n)o例如,
若nl的值為30,則proc()函數(shù)值為8.640500o注意:部分源程序
給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函
數(shù)proc()的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:
ainclo^r<ZMdbkb>
fincludeVcocuo,h>
Mmdudeh>
itwlude<n?ikk>
doubleproc<UMm)
vo?dnwm<>
*yslefn<>s
pnf?i{(aXI\n*?proc(30))a
26.請(qǐng)編寫函數(shù)proc(),其功能是:計(jì)算并輸出下列多項(xiàng)式的值。
S=l+l/(l+2)+l/(1+2+3)+...+1/(l+2+3+...+m)
例如,若主函數(shù)從鍵盤給m輸入20后,則輸出為s=l.904762o
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)main。函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc。的花括
號(hào)中填入所編寫的若干語(yǔ)句。
試題程序:
「includeVsudi。.h>
doubleproc(intm)
(
i
voidmain()
(
inims
doublest
printf(*\nlnputms*)i
scanf(w%d",&m);
proc(m)?
printf("\n\n5-1-%f\n\n".s)i
\
27.請(qǐng)編一個(gè)函數(shù)intfun(inta),它的功能是:判斷a是否是素?cái)?shù),若a是
素?cái)?shù),返回1;若不是素?cái)?shù),返回0。A的值由主函數(shù)從鍵盤讀入。
28.
請(qǐng)編寫函數(shù)proc(),該函數(shù)的功能是:將放在字符串?dāng)?shù)組中的M個(gè)字
符串(每串的長(zhǎng)度不超過N).按順序合并組成一個(gè)新的字符串。例如,
若字符串?dāng)?shù)組中的M個(gè)字符串為:ABCDBCDEFGCDEFGHI則合并
后的字符串內(nèi)容應(yīng)該是:ABCDBCDEFGCDEFGH1o注意:部分源程
序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在
函數(shù)proc()的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:
£todvdeh>
■isiclude<eoftao.h>
9defmeM3
0dcGtwrN20
aidproc<charirr[Mj[N.clur?b>
gtdnuim<)
charMr[M][Nj?(*A!KT)B.?K'DER;*.-
CKFCJHD.u
cUr■N£I8]I《?
■■■■??),
ptwt(<*TheNinn(ii\i>")?
(or<i",0iKMii4-,)
pot?<
praiiR*\n*>i
proc(?tr?arr>i
prwvft"TheA?tnng:\n*)?
prmtf(*Hs
pnmf("\n\n"><
29.
編寫一個(gè)函數(shù),該函數(shù)可以統(tǒng)計(jì)一個(gè)長(zhǎng)度為2的字符串在另一個(gè)字符串
中出現(xiàn)的次數(shù)。例如,假定輸入的字符串為abcdefabcdeabceabcdef,子
字符串為cd,則應(yīng)當(dāng)輸出3。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)
主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號(hào)中填入
所編寫的若干語(yǔ)句。試題程序:
8mcludehJ>
#MiclwdrVcoato.
*IBcIttd*<BtdKKk>
9iarlwdrV,icng.
atpmiclmr?Mftchar?sobirtrI
*oidMMIH>
cliav)}?
MMfll
?yulMnl*ClJBT)t
e)i
g#(?(B(F)I
pnMf<attAfV,
*<t.(?i?bstr)e
pwts(?ub?tr>?
■-prac<Mr.MiiMr>s
prauR'■=KW\B*?■)!
30.
請(qǐng)編一個(gè)函數(shù)floatproe(doubleh),函數(shù)的功能是對(duì)變量h中的值保留
2位小數(shù),并對(duì)第3位進(jìn)行四舍五人(規(guī)定h中的值為正數(shù))。例如,
若h值為7.32596,則函數(shù)返回7.33;若h值為7.32496,則函數(shù)返
回7.32。注意:部分源程序給出如下。.請(qǐng)勿改動(dòng)main()函數(shù)和其
他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干
語(yǔ)句。試題程序:
SmcludeV.i曲hh>
tsmdudeV3idio.
*mdudrVemo.h>
IkMtproHHofttb)
voidmaifiC)
floatI|
*y?trm(eCI^*)i
prtfii(<(t>>i
pntit(<*Th<ongicMildaUtut*)?
pnntK*%f\n\n*?()i
praitf<*Therwoli:Ml\n*?pror(f))?
四、2.程序修改題(10題)
31.下列給定程序中函數(shù)fun()的功能是:求出字符串中最后一次出現(xiàn)的
子字符串的地址,通過函數(shù)值返回,在主函數(shù)中輸出從此地址開始的字
符串;若未找到,則函數(shù)值為NULL。例如,當(dāng)字符串中的內(nèi)容為
abcdabfabcdx,t中的內(nèi)容為ab時(shí),輸出結(jié)果應(yīng)是abcdx。當(dāng)字符串中的
內(nèi)容為abcdabfabcdx,t中的內(nèi)容為abd時(shí),則程序輸出未找到的信息:
Notfound!
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意;不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<conio.h>
#include<string.h>
char*fun(char*s,char*t)
char*p,*r,*a;
/*************found**************/
a=Null;
while(*s)
{p=s;r=t;
while(*r)
/*************found**************/
if(r==p){r++;p++;}
elsebreak;
if(*r=='\0')a=s;
s++;
)
returna;
)
main()
{chars[100],t[100],,*p;
clrscr();
printf("\nPleaseenterstringS:");
scanf("%s",s);
printf("\nPleaseentersubstringt:");
scanf("%s",t);
p=fun(S,t);
if(p)printf("\nTheresultis:%s\n",p);
elseprintf("\nNotfound!\n");
32.下列給定程序中,函數(shù)fun()的功能是:找出一個(gè)大于給定整數(shù)m且
緊隨m的素?cái)?shù),并作為函數(shù)值返回。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)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!=O)
break;
/*************found**************/
if(k<i)
return(i);
)
)
main()
{intn;
clrscr();
printf("\nPleaseentern:");
scanf("%d",&n);
printf("%d\n",fun(n));
)
33.給定程序MODH.C中函數(shù)fun的功能是:首先把b所指字符串中
的字符按逆序存放,然后將a所指字符串中的字符和b所指字符串中的
字符,按排列的順序交叉合并到c所指數(shù)組中,過長(zhǎng)的剩余字符接在c
所指數(shù)組的尾部。例如,當(dāng)a所指字符串中的內(nèi)容為“abcdefg”,b所指
字符串中的內(nèi)容為“1234”1時(shí),c所指數(shù)組中的內(nèi)容應(yīng)該為“a4b3e2dlefg”;
而當(dāng)a所指字符串中的內(nèi)容為“1234”,b所指字符串中的內(nèi)容為“abedefg”
時(shí),c所指數(shù)組中的內(nèi)容應(yīng)該為“l(fā)g2f3e4dcba”。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
1*include<stdio.h>
2finclude<string.h>
3voidfun(charchar*brchar*c)
4
5intirj;charch;
6i=0;j?strlen(b)-1;
************found************
8while(i>j)
9{ch?b[i];b[i]-b[j];b(j]-ch;
10i..;j一;
11}
12while(*a|I*b){
13/…………found…………/
14If(*a)
15(*c■*a;c..;a++;)
16if(*b)
17(*cm*b;C++;b.+;}
18)
19*c?0;
20}
21main()
22(
23charsl[100]rs2[100]rt(200];
24printf(R\nEntersistring:R);
nw
scanf(%srsi);
25printf(R\nEnters2string:R);
ww
scanf(%srs2);
26fun(si,s2,t);
n
27printf(\nTheresultis:%s\n"rt);
28
34.給定程序M0D11.C中函數(shù)fun的功能是:將字符串中的字符按逆
序輸出,但不改變字符串中的內(nèi)容。
例如,若字符串為abed,則應(yīng)輸出:deba。
請(qǐng)改正程序中的錯(cuò)誤,使它能計(jì)算出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
1*include<stdio.h>
2/…………found…………/
3fun(chara)
4{if(*a)
5{fun(a*l);
6/…?……★?found/
7printf("%c**a);
8
9
10main()
11(chars(10]?"abcdw;
12printf("處理前字符申=*s\n處理后字
符串s);
13fun(s);printf(w\nw);
14
35.下列給定程序中,函數(shù)fun()的功能是根據(jù)整型形參m,計(jì)算如下公
式的值。
y=1-l/(2x2)+1/(3x3)-l/(4x4)+...+(-l)(m+l)/(mxm)
例如:m中的值為5,則應(yīng)輸出0.838611o
請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
doublefun(intm)
{doubley=1.0;
/**********fiound*************/
intj=l;
inti;
for(i=2;i<=m;i++)
/****************f^)und*******+******/
y+=l/(i*i);
)
return(y);
)
main()
{
intn=5;
clrscr();
printf("\nTheresultisfun(n));
)
36.下列給定程序中,函數(shù)fun()的功能是:從n個(gè)學(xué)生的成績(jī)中統(tǒng)計(jì)出
低于平均分的學(xué)生人數(shù),此人數(shù)由函數(shù)值返回,平均分存放在形參aver
所指的存儲(chǔ)單元中。例如輸入8名學(xué)生的成績(jī):
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++)
t=s[k];
ave=t/n;
for(i=0;i<n;i++)
if(s[i]<ave)count++;
/*************found**************/
*aver=&ave;
returncount;
)
main()
{floats[30],aver;
intm,i;
clrscr();
printf("\nPleaseenterm:");scanf
("%d",&m);
printf("\nPleaseenter%dmark:\n",m);
for(i=0;iprintf("\nThenumberofstudents:
%d\n",fun(s,m,&aver));
printf("Ave=%f\n",aver);
)
37.給定程序M0D11.C中函數(shù)fun的功能是:在字符串的最前端加入
n個(gè)*號(hào),形成新串,并且覆蓋原串。
注意:字符串的長(zhǎng)度最長(zhǎng)允許為79o
請(qǐng)改正函數(shù)fun中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
1*include<stdio.h>
2linclude<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]-*p;
12i++;
13)
14found………★?/
15while(*p++)
16a(i]-0;
17strcpy(sra);
18
19main()
20{intn;chars[80];
21printf(w\nEnterastring:n);
gets(s);
22printf(w\nThestring
23printf(w\nEntern(numberof*):
wH
");scanf(%dr&n);
24fun(s,n);
25printf("\nThestringafterinsert:
\w%s\w\nw,s);
26
38.給定程序中,函數(shù)fun()的功能是:使數(shù)組中的元素的值增加10倍。
改正其中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).
試題程序:
#include<stdio.h>
#include<conio.h>
ihtm[10];
voidfun(void)
(
intj;
printf("Insubfuncaftercalling\n");
for(j=0;j<10;j++)
{
/*********不*不found**不*不*不*不*不*不*********/
printf("%3d",m[j]*10);
}
)
main()
{inti;
printf("Inmainbeforecalling\n");
for(i=0;i<10;i++)
m[i]=i;
printf("%3d",m[i]);
)
fun();
printf("\nlnmainaftercalling\n");
for(i=0;i<10;i++)
printf("%3d",m[i]);
getch();
39.給定程序M0D11.C中函數(shù)fun的功能是:先從鍵盤上輸入一個(gè)3
行3列矩陣的各個(gè)元素的值,然后輸出主對(duì)角線元素之和。
請(qǐng)改正函數(shù)fun中的錯(cuò)誤或在橫線處填上適當(dāng)?shù)膬?nèi)容并把橫線刪除,使
它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
1?include<stdio.h>
2tinclude<string.h>
3voidfun()
4(
5inta[3][3],sum;
6intj;
7/**?******found**w*******/
8!;
9jprintf("Inputdata:w);
10;for(i-0;i<3;i*+)
11{for(j?0;j<3;j++)
12*********/
wR
13scanf(%dra[i](jj);
14
15for(i-0;i<3;
16sum-sum*a(i)[i];
Hw
17printf(Sum?%d\nrsum);
18}
19main()
20(
21fun();
22
40.下列給定程序中函數(shù)fun()的功能是:將長(zhǎng)整型數(shù)中每一位上為偶數(shù)
的數(shù)依次逆向取出,構(gòu)成一個(gè)新數(shù)放在t中。高位在低位,低位在高位。
例如當(dāng)s中的數(shù)為25846513時(shí),t中的數(shù)為6482。請(qǐng)改正函數(shù)fun()
中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#include<conio.h>
voidfun(longS,long*t)
intd;
longsl=l,i=l;
*t=0;
while(s/i>0)
i=i*10;
i=i/10;
while(s>0)
(
d=s/i
/*************found*************/
if(d%2!=0)
(
/*************found*************/
t=d*sl+t;
sl*=10;
)
S=S%i;
i=i/10;
)
)
main()
(
longS,t;
clrscr();
printf("\nPleaseenterS:");
scanf("%ld",&s);
fun(S,&t);
printf("Theresultis:%ld\n",t);
五、程序改錯(cuò)題(2題)
41.
下列給定的程序中,函數(shù)proc()的功能是:計(jì)算并輸出m以內(nèi)最大的
6個(gè)能被7或11整除的自然數(shù)之和。m的值由主函數(shù)傳人。例如,若m
的值為600,則函數(shù)的值為3515。請(qǐng)修改程序中的錯(cuò)誤,使它能得到
正確結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得
更改程序的結(jié)構(gòu)。試題程序:
丹includeVM&OIh>
■mcludrh>
mtproe<mtk>
mttn-O.fnc-O]
//????found????
<
//????found????
1(
//????louftd????
h"—?
)
rvturvimt
voidnuiinC)
*CLS*>i
pnmfL%小。a?proc(^00)>i
42.下列給定程序中函數(shù)fun的功能是:從整數(shù)10到55之間,查找能被
3整除且有一位上的數(shù)值是5的數(shù),把這些數(shù)放在b所指的數(shù)組中,這
些數(shù)的個(gè)數(shù)作為函數(shù)值返回。規(guī)定函數(shù)中al放個(gè)位數(shù),a2放十位數(shù)。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:部分源程序在文件MODH.C中,不得增行或刪行,也不得更改
程序的結(jié)構(gòu)!
IKnclude<?t(Eo.h>
intfun(int?b)
|intk,al.a2.i=0;
for(k=10;k<=55;k+?)
I
/found????????????/
?2=k/!0:
al=k-a2?10;
if((k%3==0&&a2;=5)ll(k%3==0&&al==5))
I兄i]:k;i??;|
tnain()
Iinta[100],k.m;
m=fun(a);
printf("Theresultis:\n");
fbr(k=0;k<m;k.?)
printf("%4d-.a[k]);
printf(*\n");.
六、操作題(2題)
43.若變量x、y已定義為int類型且X的值為33,y的值為3,請(qǐng)將輸
出語(yǔ)句printf((),x/y),?補(bǔ)充完整,使其輸出的計(jì)算結(jié)果形式為:x/y=ll°
44.請(qǐng)編寫fun函數(shù),其功能是:計(jì)算并輸出3?m所有素?cái)?shù)的平方根
之和。
例如,若主函數(shù)從鍵盤給m輸入50后,則輸出為s=68.665791c
請(qǐng)勿改動(dòng)main函數(shù)與其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)
中填入所編寫的若干語(yǔ)句。
注意:m的值要大于2但不大于100。部分源程序給出如下。
試題程序:
#include<math.h>
#include<stdio.h>
doublefun(intm)
(
)
voidmain
(
intm;
doubles;
FILE*out:
printf("\n\nlnputm:");
scanf("%d",&m);
s=fun(m);
printf("\n\ns=%f\n\n",s);
ut=fopen("outfile.dat","w");
for(m=0;m<10;m++)
fprintf(out,"%f\n",fun(m+80));
felose(out);
參考答案
2.113399
3.22解析:分析程序,a=2,b-1,c=2時(shí),if語(yǔ)句的表達(dá)式a<b不成
立,不再往下判斷,直接退出if語(yǔ)句,執(zhí)行后面的輸出語(yǔ)句,程序結(jié)束。
在這個(gè)程序中a、b、c的值沒做任何改變。
4.2468
5.1234theendl,2,3,4,theend解析:本題考查帶參數(shù)的宏的定義。第1
次循環(huán),i=l時(shí),調(diào)用PRINT⑴,P⑴輸出1;第2次循環(huán),i=2時(shí),調(diào)
用PRINT(2),P⑵輸出2:第3次循環(huán),i=3時(shí),調(diào)用PRINT⑶,P⑶輸
出3:第4次循環(huán),i=4時(shí),調(diào)用PRINT(4),P(4)輸出4,theend。
6.a=26b=14c=19a=26,b=14,c=19解析:這種條件表達(dá)式的一般形式為:
表達(dá)式1?表達(dá)式2:表達(dá)式3,三目運(yùn)算符的執(zhí)行順序,先求解表達(dá)式
1,若非0則求解表達(dá)式2,此時(shí)表達(dá)式2的值就作為整個(gè)表達(dá)式的值,
若表達(dá)式1的值為0,則求解表達(dá)式3,此時(shí)表達(dá)式3的值就作為整個(gè)
表達(dá)式的值。C語(yǔ)言在做一系列表達(dá)式相與時(shí),從左到右分別計(jì)算各表
達(dá)式的值,一旦遇到一個(gè)表達(dá)式為false,則剩余的表達(dá)式都不再進(jìn)行運(yùn)
算。該題中,a++<=2的值為false,則b-<=2和C++就都不再運(yùn)算再運(yùn)
算。
7.數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)解析:Jackson方法是一,種面向數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)化
方法。
8.a=8b=7
9.6363解析:滿二叉樹的第k層上有2k-1個(gè)結(jié)點(diǎn),度為k的滿二叉樹
一共有2k-l個(gè)結(jié)點(diǎn),由二叉樹的性質(zhì)可知:除去第k層上的結(jié)點(diǎn),其他
所有結(jié)點(diǎn)都是度為2的結(jié)點(diǎn),所以度為2的結(jié)點(diǎn)數(shù)為2k-l-2k-l,即27-
1-27-1=63o
10.“filea.dat”“r”“filea.dat”,“r”解析:fopen函數(shù)的調(diào)用方式通常為
fopen(文件名,使用文件方式)。本題中要求程序可以打開filea.dat文件,并
且是要讀取文件中的內(nèi)容,所以空白處應(yīng)當(dāng)填入,filea.dat','r'o
11.C
12.B
13.A
14.C
解析:結(jié)構(gòu)化程序設(shè)計(jì)是指將待開發(fā)的軟件系統(tǒng)劃分為若干個(gè)相互獨(dú)
立的模塊,與具體的語(yǔ)句結(jié)構(gòu)無關(guān)。Got。語(yǔ)句的濫用會(huì)導(dǎo)致程序的可
讀性降低。三種基本結(jié)構(gòu)構(gòu)成的程序依然可以解決大規(guī)模的問題,只
是不利于復(fù)用。
15.C在程序設(shè)計(jì)中,算法執(zhí)行效率與數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)密切相關(guān)。算法的
空間復(fù)雜度是指算法執(zhí)行過程中所需存儲(chǔ)空間。
16.B
17.C
18.D
在表達(dá)式a*b+d-c中,double的類型最高,C語(yǔ)言中,由低類型自動(dòng)向
高類型轉(zhuǎn)換,所以最后的結(jié)果一定是double型。
19.A
20.B
選項(xiàng)A中,將二維數(shù)組a的6個(gè)元素都賦值為0,正確;選項(xiàng)B中,
由于a包含2個(gè)元素,每個(gè)元素都是包含3個(gè)元素的一維數(shù)組,初始
化列表中包含3個(gè)元素,每個(gè)元素是包含2個(gè)元素的數(shù)組,錯(cuò)誤;選
項(xiàng)C中,a的每個(gè)元素是包含3個(gè)元素的一維數(shù)組,初始化列表將a[0]
的3個(gè)元素初始化為1,2,0,將a[l]的3個(gè)元素初始化為0,0,0,
正確;選項(xiàng)D中,將a[0]初始化為1,2,3,將a[l]初始化為4,5,
6,正確。本題答案為B選項(xiàng)。
21.\n\tvoidproc(char*str)\n
\n
\n\t{\n
\n
\n\tchar*p=str:\n
\n
\n\twhile(*p==*)p++;//通過P的移動(dòng)來達(dá)\n
\n
\n\t到使P指向第一個(gè)不是*號(hào)的字符\n
\n
\n\tfor(;*p!=\0;p++,str++)//把從第一個(gè)\n
\n
\n\t不是*號(hào)的字符放到a中4\n
\n
\n\t*str=*P:\n
\n
\n\t*str=\0;//最后用\0作為字符串結(jié)束標(biāo)志\n
\n
\n\t}\n
\n
\n\t【解析】題目中要求將字符串中的前導(dǎo)*號(hào)全部刪除首先將指針p
移動(dòng)到第一個(gè)不是*的字符,將指針P之后的字符放入原來的字符串
中,并為新的字符串添加結(jié)束符。\n
22.
【解析】題目中要求將字符串中的前導(dǎo)*號(hào)全部刪除,首先將指針P移
動(dòng)到第一個(gè)不是*的字符,將指針P之后的字符放入原來的字符串中,
并為新的字符串添加結(jié)束符。
23.\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語(yǔ)句,來判斷指定范圍\n
\n
\n\t之外的數(shù)5
\n
\n\tbfj++]=a[i];//放到b數(shù)組中\(zhòng)n
\n
\n\treturnj;//最后把其個(gè)數(shù)返回到主函數(shù)中⑦
\n
\n\t}\n
\n
\n\t【解析】題目要求把指定范圍之外的數(shù)放到b中,將每一個(gè)學(xué)生的
成績(jī)與指定的成績(jī)相比較,將符合條件的學(xué)生成績(jī)放在數(shù)組b中,并
將符合要求的學(xué)生個(gè)數(shù)返回給主函數(shù)。\n
24.1char*fun(char(*a)[81],intnum,char*max)
2{
3inti=0;
4max=a[0];
5for(i=0;i<num;i++)/*找出最長(zhǎng)的一個(gè)字符串*/
6if(strlen(max)<strlen(a[i]))
7max=a[i];
8retummax;/*傳回最長(zhǎng)字符串的地址*/
9)
<strlen(a[i]))
解答本題之前,首先應(yīng)該明白ss是數(shù)組名,是指數(shù)組首元素的地址。
max是字符指針變量,可以指向一個(gè)字符串。假定max指向數(shù)組中第
1個(gè)字符串,它的長(zhǎng)度最長(zhǎng)。再使用循環(huán)語(yǔ)句遍歷字符串?dāng)?shù)組,使用條
件語(yǔ)句判斷該字符串的長(zhǎng)度是否大于max指向的字符串的長(zhǎng)度,如大
于,則max指向該字符串。保證max指向的字符串最長(zhǎng),并將其作為
函數(shù)值返回。</strlen(a[i]))
25.
【解析】由題目中所給表達(dá)式可知,表達(dá)式的值為m項(xiàng)表達(dá)式的和然后
開平方??梢允紫韧ㄟ^m次循環(huán)求得m項(xiàng)表達(dá)式的和,然后將其和開
平方并返回到主函數(shù)當(dāng)中。
26.
【解析】由題目中所給公式可知,多項(xiàng)式的值為m項(xiàng)的和。多項(xiàng)式每
一項(xiàng)的分子均為1,第i項(xiàng)的分母為1?i所有整數(shù)的和。根據(jù)這個(gè)特
點(diǎn),通過m次循環(huán)求出多項(xiàng)式的每一項(xiàng)并求和。最后將多項(xiàng)式的和返
回到主函數(shù)中。
27.\n#include,,stdio.h"
\nintfun(inta)
\n{intI;
\nif(a==2)return1;1=2;
\nwhile((a%I)!=01<=sqrt((float)a))
\nl++;
\nif(a%I==O)
\n{printf(4t%disnotaprime!,5,a);
\nreturn0;}
\nprintf("%disaprime!,,,a);
\nreturn1;}
\nmain
\n{intx;
\nprintf("\\npleaseenteranumber:^^);
\nscanf("%d",&x);
\nprintfCt%d\\n,,,fun(x));}
\n
28.
【解析】字符串?dāng)?shù)組中每一行都是一個(gè)完整的字符串,其結(jié)束標(biāo)志為‘
\0'。因此,通過字符串的結(jié)束標(biāo)志來判斷每一個(gè)字符串是否結(jié)束,將
字符串?dāng)?shù)組中的所有字符串均賦值給新的一維數(shù)組b來完成字符串的
合并。
29.
【解析】要計(jì)算出主字符串中包含子字符串的個(gè)數(shù),應(yīng)該檢查主字符串
中從第一個(gè)到最后一個(gè)字符。每出現(xiàn)一個(gè)計(jì)數(shù)變量加1,最后將得到的
個(gè)數(shù)返回給主函數(shù)。
30.
【解析】要實(shí)現(xiàn)對(duì)變量的值保留2位小數(shù)。并對(duì)第3位小數(shù)進(jìn)行四舍五
入,可以通過先將其小數(shù)點(diǎn)后3位變?yōu)檎龜?shù)后加5,所得到的數(shù)除10,
最后再除100來實(shí)現(xiàn)。
31.(1)錯(cuò)誤:a=NuLL;正確:a=NULL;(2)錯(cuò)誤;if(r==p){r++;p++;}正
確if(*r==*p){r++;p++;}(l)錯(cuò)誤a=NuLL;正確:a=NULL;\r\n(2)錯(cuò)誤;
if(r==p){r++;p++;}正確:if(*r==*p){r++;p++;}解析:題目要求將最后
一次出現(xiàn)的輸入字符后面的字符串做一復(fù)制處理,并在主函數(shù)中輸出從
此地址開始的字符串。a=NuLL;是明顯的常識(shí)性錯(cuò)誤。題目中已經(jīng)定
義了指針變量chaf*p,*r,*a;,循環(huán)條件應(yīng)該是if(*r==*p){r++;p++;},而
非iRf(r==p){r++;p++;)。
32.⑴錯(cuò)誤:if(i%k!=0)正確:if(i%k=0)(2)錯(cuò)誤:if(k<i)正確:if(k>=i)(l)
錯(cuò)誤:if(i%k!=0)正確:if(i%k=0)\r\n(2)錯(cuò)誤:if(k<i)正確:if(k>=i)解
析也許剛接觸C語(yǔ)言的學(xué)習(xí)者對(duì)素?cái)?shù)的概念不清楚,在這里說明一下,
素?cái)?shù)就是質(zhì)數(shù),本題的任務(wù)是隨便輸入一個(gè)整數(shù)m,然后在m的后面尋
找緊跟m的一個(gè)質(zhì)數(shù),作為函數(shù)值返回。
for(i=m+l;;i++){
是從m后面的一位開始循環(huán),將m后面一位的值賦予io然后;我們依
次判斷m后面的一位是否為素?cái)?shù)。
for(k=2;k<i;k++)
if(i%k==0)
是一個(gè)簡(jiǎn)單的數(shù)學(xué)判斷問題,判斷i被賦予的值與k的余數(shù)是否為零。
33.(l)while(i<j)或while。>i)⑵if(*a)(l)while(i<j)或while。>i)(2)if(*a)
解析:本題中函數(shù)的功能是首先把b所指字符串中的字符按逆序存放,
然后將a所指字符串中的字符和b所指字符串中的字符,按排列的順序
交叉合并到c所指數(shù)組中,過長(zhǎng)的剩余字符接在c所指數(shù)組的尾部。其
中,對(duì)于字符串的逆序過程,分別用變量i和j代表字符串中開始和末
尾字符的下標(biāo),把下標(biāo)i和j元素中的值對(duì)調(diào)后,i++和j-直到i的值大
于j時(shí)逆序操作完成。
34.(l)voidfun(char*a)(2)printf("%c"*a)
(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二年級(jí)口算題目總匯100道
- 單位代理記賬服務(wù)合同范本
- 互勉拍攝合同范本
- 專項(xiàng)法律顧問合同范本
- 化工廠安全施工合同范本
- 2025遼寧省建筑安全員《A證》考試題庫(kù)及答案
- 個(gè)人船舶運(yùn)輸合同范本
- 傭金合同范本入賬
- 廠房終止租賃合同范本
- 2025年陜西省安全員-B證考試題庫(kù)附答案
- 《面試官培訓(xùn)》課件
- 導(dǎo)管相關(guān)性血流感染-7
- 汽車維修保養(yǎng)協(xié)議三篇
- 2024年銀行、金融反詐騙必知知識(shí)試題與答案
- 2024年匯算清繳培訓(xùn)
- 幼兒園監(jiān)控項(xiàng)目技術(shù)方案
- 班主任工作培訓(xùn)內(nèi)容
- 保險(xiǎn)公司客戶服務(wù)質(zhì)量提升手冊(cè)
- 鋼筋工安全操作規(guī)程
- 搬遷項(xiàng)目驗(yàn)收?qǐng)?bào)告模板
- 煤礦安全管理人員考試題庫(kù)與答案(G卷)
評(píng)論
0/150
提交評(píng)論