《《C语言程序设计》教材习题参考答案.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》教材习题参考答案.docx(38页珍藏版)》请在三一办公上搜索。
1、习题一一筒答题I.答:程序是计算任务的处理对象和处理规则的搭好即:程序=数椭结构+算法,通俗地说“是用计算机语才描述的解决问电的步骤.程序i5iit是给出解决特定何电程序的过程,包括何超分析、打法设计、程序源代码设it、Mi.盟试和推护.2.答:利用计口机的解85过程大致分为4个阶段:分析向8.洋地分析需察解决的向JS清地地了解问题的需求I设计算法.将解决何题的方法或数学极型转Ift为解决问题的步骤.即设计法I编写程序.就是将设计的算法等价映射(转换)为计算机语宫的程序.所修号的程序从逻辑上籽是算法的抻表现畛式:运行验证.在计弊机上运行并且排除潜在错谀.必要时,还耍使用测试数据对程序进行测试,
2、抬注出序的正确性.3,若I法昆制现定义的东列族则的里合.这些规则娥定了解决特定何照的系列怫作.以快在有限的步养内产生出问题的井案,通俗坳说.算法就是解决何跋的方法和步骤.算法的特性有5个.W1.行穷性*的定性,可行性、输人和输出.4 .若:。图中r=0时,n的值也是。.n的前个值WUf1.i给了m.所以能H1.是m的值.而b图中r=OBf.n的也就是求余数为。时的分母,所以输出是n的值.5 .答I欧儿里褥尊法使用了迭代算法策略.6 .构化程序设计以功能模块和过和设计为主.其要点是I自顶向下,逐步求精,堪块化I结构化.7 .?,H动某个C/C+期成开发环境I在呜辄窗输入源程序代码编译、连接程序,
3、若有错误,呱虹2.3.运行程序.若停停输出结果不正的.杓向程序设就.-ft2.3.4.输出结果正确.二设计题I.答:对应的伪代码!?法表示如下:开始输入E.nr=mmodnwhi1.e(rO)m=nn=rr=m11xin)输IUr的值结束2 .答:程序设计如下:*inc1.udcvoidm;IinOIim九bs,mx;uranfC%d%irw1.&a.&b,&c);if(ab)max=a:e1.semax=b;if(naxmax=c;Prirnf(%dn”.max);I3 .用传统流程图或N-S流程图表示下列各咫的。法.(略)(1)交换两个存储单元a和b的内容.判断一个整数n一同时帔3和7整除
4、.(3)求方(:abx+cM的根.IHiSb2YacNO.要区分两个不相等的根和两个相等的根.(4)求:i+2*3*+1(.(三)期为同定.已知鸡兔共仃头30个.YjWMH.问遮免各有多少只.(川枚塔法)(6)挚波基熨数列的前两项是I,从第3项开始.每项的值是前两项的和即谟敕列为1.123.S.求该数列的弟20项.用递推法)习题二一选择题ID2D3.D4.B5.A6B7.C8.C9DIO.CIIAI2.B二,填空般I.指册下列C语百油珞的类总,将类型关谯字写在共后的IM1.括号中.(1)5int)(2),A,char)(3)I2EI2x*2,x*3,x4(4)(7) (x5)?x:2/x(1)
5、(8)sizeof(x(I)3 .代义字符中,_1.a_表示换行,我示双引号.4 .字符耶:-Good-在内存中占用_2_字节。5 .教学表达式Isin(25)*cos(30v)的C铸吉登达代为疝1=2.c=3:表达武a+=b-=c-5的tf1.为5,三始出各个程序的运行结果1 .程序的运行结果如下:3215,45,42 .程序的运行结果如下:6,99,255%造P用ZH:翡JOJfcUN&Y伊可5H,%HI期WMUFFY4!5BWTWS三TVW历时11IF丽Srr的干断HWWTYWq3pnpu!W普糅平才J-壮4力沙有制曲稠总如,-VOf86cas:Q1.ZD9ZJi1.JXc3ccr80c
6、S61.3,8ytH91.vVt-Iaco688Z398StceI三野R+f1.,1.fjD三程序阅读分析题1 .程序运行的输出结果如下;2 .程序运行的帏出结果如下:3 .程序运行的愉出结果如下rO4 ,程序运行的输出结果如下:5,7,65,6,75 .程序运行的给出结果如下:thisnumberisahiwen四、程序设计题1 .解,印印设计如下,*inc1.udevoidmain()(f1.oatf.c;Printfr偷入华氏ii度道;scanfCO:c=5.9.O(f-32):printf*f=%.2f,c=%.2fn,Xc):)2 .的印序设计如下,#indude(11oa1.r.h
7、.C.s1.x2.v;Pnn小,输入网柱体的平径和蒲巧:anfC%.r.h):c=2*PI*r;s=P1.4rr:s1.三c*h:s2=2S+s1.;v三sth:PriNR=%.2*=%.2I=%2Cs2=%.2f,v=%,2GiTcs61击2.v);J3 .解I程萍设计如下1#inc1.udevoidmain(charch;ch=gctchar(;Pr加f%c.%cntchI.ch+1);)4 .M:程序设计如下:*inc1.udevoidmain(intx.y:PriIHR输入2个用数:“:%canfC5W%d.&x.&y):if(x%y=Oy%x=O)printf(Ycsn);e1.*e
8、prini1.(Non:5 .解:程序设计如下:1.ude.hvoidmain()(inin:Prinm输入个够数,:KranfC%dAn):if(n%3=0&n%5=0&n%7=0)primf(能被3.5.7惜徐心:e1.seifn%3=On%5=O)Primfr傕故3.5整除W):e1.seiftn%3-=OAn%7-O)Pdmf(倍被3.7除):e1.seif(nW=0An%7=0)Prinm僚被5.7祭除W):e1.*iftn%3=0)Ninm能被3解除W):e1.seifn%5=O)PrimfCf故5整除);e1.%eif(n%7=O)Nimf使被7胫除W);e1.sePrinm”不
9、徒能被3J1.任个控1.W):)6 .解:程序设计如下:Vinc1.t1.e#inc1.udevoidmain()f1.oata,b,c.arci;Pri1.Hf广输入三个边长scanfC%f,.Aa,b.c);if(abcAa+cbbca)Is=(a+b*c2;ata=qtt(vb)(ic):rin(f(*a=%.2f.b=%.2Cc=%.2P,j.b.c);prin1.f(*area=%.4f,av3):CkCPrimfr不能构成三角形!);)7 .解:程序设计如下:#inc1.udc*inc1.udevoidmain()(aa,b.c.disc.p.q;PfiIHR输入方程的三个半数,:
10、scanfC%f%.a.b.c:if(fabs(八)k-6)PriInf(,方程退化,不是二次方程!n);e1.seIdisc=b4b-4*a4c;p=h(2*a):q=sq11(fabMdisc)(2ra):ifTfab*(dic)1.c6)Primfi方程有2个相等的根:Xyn=%22p);C1.yif(dixcX)Mim(T方程有2个不相等的根:x1=%.2f,x2=%.2Cn1.p+q.);e1.seNimfc方程右废根:x1.=5k2*.2fi.x2=.211i+.2fi,p,q,p,q):)8 .帽程序设计如下I*inc1.udcvoidnain(intmonth;PfiIHR输入
11、月份也:丁SCanf(%d.&momh):swi(ch11xn(三)(case1.:pfimf(JanW):brcak.case2:PrirnfCFcbWXbrcak;case3:primf(Marn)1.break:case4zpri11tfi*prn,)brcak;case5:prin1.fCMa)n*):break;case6:prin(ftJunn)brk:case7:prin1.f(Ju1.11Hbrvak:case8:MnMAugmhbrcakca5c9rprimfCScpn,Xbrcak;case10:PrinIfroC1.wbreak:case11rprintf(Novn,)b
12、reak;eaxe12:PrirnrrDtxn”);bn:;ik:fehu1.1.:Mfnw粕人月ttt谈:break:)9 .解:悭序设计如下:*inc1.udevoidmain()(i11tN;s三0:=;whi1.c(t=64)Is+=1.;1=2”:)priMfC=%d-):)10 .解:程序设计如下:*inc1.udevoidmain()(inim.n.r.1.1.1.2;Prn1.H输入2个正郎攻d):wanfCi%dm.n);t1.三m112三n:r=m%n;whi1.c(r!=0In=:n=11r=m%n;Prin1.f,%d和%d的域大公约软是:/&啦小公信数是:%dHH2j
13、u(2n);)11 .解:程序设计如下:4Hnc1.udcvoidmain(intx,s=O;ScanfCWJtx):whik(x!=0)Is+=x%IO;x=x10;rinf:)12 .解I探舜设计如下:*inc1.udevoidmain()(f1.oata=2.0.b=1.0.s=0.0;ini;fofi=0tIs+=ab;a=a*b;t=ab;Jrinf%Ans):)13 .幅科济校计如下:#inc1.udevoidmain()(inif1.-!.三I.O.i:prinif(*%10d%1.(M.f1.,f2);fuci=3;iprimf;figf2=O:14 .W:程扉设计如下:AHn
14、c1.udc#inctudevoidmain()(11w1.xx.x1.:scanfC%,a);x()=a;x1.=1.,0*2.0*(x0ox0);whik(fabx1.x0)1.e-5)Ix=x1.;x1.=1.0-*2.0*(x(Ha.x0);Iprintf(,urt(k2f)=iP.n*,i,xI);)15 .解:程序谀计如下:*inch1.cvoidmain(inih.n;=ks=0:do(s+=n;;whi1.c(sn100);pnn1.f(*k=td.n=%dn*.s.n-1);)16 .解:程序设计如下:*inc1.udevoidmain()(intnjj;foti=Oj5u*
15、)IwnfC%dn):fbr(j三0zjPrimf1.);printfC-):)17 .解;程序设计如N*inc1.udcvoidnain(i11i.j;forti=1.iiIfor(j=kj=kj*)Primf(%d%d=%2d-J.ij*i);Prin1.w):)IS.解:程扉谀计如下:*inc1.udcvoidmain(inx.y.a,b.c:forx=1.(IOxxHXXhx*)Ia=x00;b=(x-a1.00V10:C=X%10;y=a*a4a+b4b4bc*cc;if(y=x)printf(M%dXn*A):)19 .解:程序设计如下:*inch1.c*inc1.udevoidm
16、ain()(tnx=2.y.c=1.k;primft%5dw:x+;whi1.c(c100)Ik=sqrt(x):fr(y=2yk)IPrinm%5d“M;c4:i11c%10=0)p11n11n):Ix三2:)20 .解:程序设计如下:*inch1.cvoidmain(intx.y.c=O;x=1000:XV1.ooOO:x+*Iy=X*1.(H6:ifty%3=0Cf)PriI1.g*%dS*):)21 .解:程序设计如下:*inc1.icdefineN7voidmain()(ini.k:f0rti=.N/2;t=N/2;i+)Ik=iO7Ni*2cN-i2;for(j=kj20.2j)x
17、imftm):forfj=kj:Prin1.f(W):)22 .W:程序设计如下:*inc1.udcvoidmain()(inm1.,m2,m5,c=O;for(mi=OimK=100;mH*)or(m2=0m2=5(hm2+)I,or(115)ij115=20un54)ifmH2*m25tm5=100)c+;prinf*%dnM.c):)23 .解:和户设计如下,*inc1.udevoidmain()(in(po%=0.eg=0.x;SCanfrwr&x);whik(x!=O)Iiftx0)pos+=x;civncj+=x;seanfC%d,.x):Pfintft*pos=*d.ncg=%d
18、n.pos.ncg):24.解,补充完善后的程序如下#inc1.ude析ndude#inc1.udevoidmain()(imi.a.b.nwu1.t.ansujr.n=O;srundtimc(NU1.1.):forti=0ii51.;rcsu1.=ab:ri11tf(*i+d=a,b);Ifnwer”ihanswer-=vu!1.)Iprimf(iEW!n);n+;C1.SCPdndC错误,初始化班机4序刻/产随机产生个。9的整Sr/产此行及以下是补存完善的代冈?Prtmfr你做对了%d个Uh维续努力!5”.中习题四一单项选择逛1.C2.D3.D4.D5.C6.A7.C&B9.BIO.AI1
19、.A2.C13.CI4.BI5.C二、填空题-15g14IIM8按行存放.即先存放。行,再存放I行.以此类推攻,幺*inc1.kdidh0inc加4csingh)三、程序阅读分析题1 ./:,:一.的心5M果H卜:1357911131517192 .i-10&二二0ai1.-x31;3 .i=i1.1.i+i=43【i】ai)(j)pr1.ntf(,nw)4 .答,林印运行的输山结果如下,k=325 .答:程序运行的总出结果如卜:gbcdcfa6 .ai!=(7 .答:程洋运行的怆出结果如下:012345I2345623456734567845678956789108 .答:程序运行的总出结果
20、如I-:you&me四,程序设计题1 .帆印印设计如下,*inc1.udeVCidmain()(f1.oat10,!nax.inin.sum.scorc;in(i:wti=Oi;max=min=sum=s(0);fri=1.Ii1.Tm4xi)mux=xi;ifs(imin=si:Mim*=5(ij;)wc=w11W;prn1.f(Scocv=%.4fJi,.%core匕)2 .Mh枳序设计如下,*c1.udeo.h*dcfncNIOvoidmain(intVNI=(10.20.30.40.50.6(X70,80,9().991;inti.x:M三f(%*);Vi*1.=ViI;V(i*1.=
21、;for(i=Or(inta3O.i.j:x1.ave6=(0;fbr(i=Oii30i+)a=2:for(i=O;i6;i+)Ifor(j=Oij5*)avci+=ai*5j;avc(i=5;primfC%7.2.avci);)Prin1.f(、T);)4 .解:程序设计如下:*inc1.udevoidmain()(f1.oatx100.x0m=0.s=0;inii.n:SC1.infC”.&n):futi=0jnu4)IsmfC%vftx(i);Mim*=xi:)x=sunn:forti=O;in;i+)(x(i)x)t(x(i);Phnm-V=%n.s):)5 .帆程序设计如下I*inc
22、1.udcvoidmain(intx(1.001.n,i.jtcoum;xcanfCWn);fori=Oiinj*)vanfC%d,xiJ);CoUIH=O;forti=(htni)ff(j三iUi11xi=-xj1.)cun1.*:PIiIHf%dW.coum):)6 .Mh株部设计如M*inc1.udevoidmain()(intx1.n.i.j.cunt:scunfCW.&n);foKi=hsc4nft%dxi1.);couni=();forti=O;in;i+)for(j=i+1.jiftxi)x=三1.xj)x(i)三=nCOIM1.t+;pfinf(*%dn.coum):)7 .解
23、,探中设计如下,*inc1.udevoidmain()(inix1.(K).jj.cun(:Sainffoti=Onu4)scanfC%d,xi):C(IUn1.H);forti=kifVxix(i.)x(ixiIIMixi)x(iIMIDcount*:printR%d8um);)8 .解:程序设计如下:#inc1.udcvoidIIKiinC(ini201=(I.I8.4.I3.6.10.I5.2J7J.I9.7.16.8.I1.I4.9.I2.5.20;iniunv113XUt.ij;max=0;s1.ar1.=0:forti=OiIMm=0:for(j=0j4;j+)wm*=a(*j20
24、;ifVmaxsum)mux=um:Mar=i;forti=xurtuxtart4i+)Prinm%3d”闺i%20):PriiMRW);)9 .解I程序设计如Fi*inc1.udcvoidmain(charstr81.;ini;Prin1.f1.r输入一个字符中A1.O;jcMMr);fo=A,srti)=a,str)=z,)strfi-=32;putNsr);)10 .解:程序设计如下:*i1.udevoidmain(charstr81.ch:inii.pc;PriIHf,构入一个字符申:):getMr):Pring徜入一个要插入的字符:):ch=jdchar;Printf,输入要插入的位
25、置:)9canf(%dw,Apos);foi1.i=O:st/i):whik(i=pns1.)(Uri!)=Mr;i-;)strp(M-1.=ch;puts(x1.r);)11 .W:程序设计如下:4Hnc1.udcvoidmain()(charMr81.;in,zi)if(s1.riJ=VfcMricountstriJ.0,4;fi=OjprintfC%c!%dn,VOi.coum(i);)12 .解:程序设计如下:*inc1.icvoidmain()(chars1.r1.81.s1.r2=qwe1.yup123456789O;inti:(c3ir2i)!=,Uru4)Str1.IiI=St
26、rZIihMr1.i=,4y;PMS(Str1.):)13 .解,程序设计如下,#inc1.udevoidmain()(charstr81.;in”:primfC输入一个字符申:11):get:forti=Ojstri=rJ(Xzi+);PrinIR.字符中的K度是:为GnF;)14 .解:程序设计如下:*tnc1.udcvoidmain()(inA|2)|3|.B|3|4|.C(2|4|.i.j.k:Primfr输入个2行3列矩冏数据Wxforifor(j=Oij3u+)PrinI代内输入一个3行4列矩阵数必:n):fori=(hiforfj=0zj4j+)wnf(%dBiHjJ);Prin
27、Ifr两个矩阵的乘积如下:5)forti=O;i2d+)Ifor(j=OuIciu=);for(k=(hk;PrinmW):15 .解:程序设计如下:*inc1.icvoidmain(chars3)(KI;imi.j.upr.1.wr.dig,5pa.oth;fui=0:iv3;i,)gcu(s(i1.);upr=1.wr=dig=spa=oh=0;foti=Oj=,AAs1.(j=,aMi1.UI-z*)1.wr+;e1.seM)Ma+;eheU1.hi;PrinQf(Fd.%d,%d%d.%dH,uprJW1.dig.印*oh);J16 .解:程序设计如F,*inc1.dcVDidmain
28、(i11tii11.y(15J115;phnf*n=*):MZinfC1.n);fo(i=Oinu*)yii=y(i1.O=;fcXi=2for0=1.zjij+)y(J(j)三y(M)UB.y(i.1.JUhfor(i=O;ijPrinm%5d川UD:PrinM5”);)17 .Wt界序设计如下,#inc1.udevoidmain()(imij.kj,c.d.m1.01110;pnn1.f(,n=*):scanfC*!d,.n).c=kd=1.;i=Oj=O;m1.ij1.=kfutk=2k=nnk*)Iif(d=Icjnc)Ij+zif0三=n-c)d=21)e1.%cif(d2id=3:
29、)CIsCif(d3jc-1.)j-iRj=c-1.)d=4:)CIgiftc)Ii-Jfti三三c)d=iw:)miUI=k;forti=O;tn;i+)Ifor(j=(hjprimft4d.fni1.j);PrinM”);18 .朽!序设计如下,#inc1.ude“defineN3voidmain(intiMuN(7;fbrti三OiIMui(HkIMinM构入第%d位学生的数学英语物理成绩-1):I,or0=kjsnf(%dMIi)(j);Mu4=ui1.HiMiM2豕uij3;SW-Siu川4/3:if(Mu(i5=W)Mu1.i6)=Y,;e1.sestui6=,N,;JPrimfC
30、NOMTENPHSUMV90n):PrintfCn,);fmi=0;IVN)IIbf0=(hj6j4)PrimfC%4NuiUD;Prin(%cW总喊i6J):习题五一单项选择题ID2.B3.A4.C5D6,B7B8D9BIO.CIIAI2.AI3.CI4,A15D二填空题I.取内存取地址6. _g_g_7. 】行的a针Iozuyjffin8. JU1._12_9. p4)10. 611. ABCD_A_12. 6a1.31三、程序阅读分析题I,答I粽序运行的输出结果如下,IO2 .答:程序运行的勘出“;IO3 .:程序运行的检出f!R如下:eh4 .?,程序玷行的煽出结果如孰2,45 .输出
31、IS计铉组却的兀索布向的,打符串.四、程序设计以下题目均要求用指针方法实现)1.解:程序设计如下:*i1.ydcvoidmain(i11x.y.z;inip1.*p2.*pVujunfC,*p2II=p1.;p1.=p2;p2=t;Iif(p1.*p3)It=p1.;p1.=p3;p3=t;Iif(*p2*p3It=p2;p2=p3;p3=t;IPriII瞰*1.%d,%dn产PI产p2P):)2 .解:程侪设计如下:*c1.udeVOidmain(charstr81.*p;ges(s=S1.f:p-rintfC*.*p);prinf;)3 .解:程序设计如下:*c1.udeo.hvoidma
32、in()(n(IO)Afq;or(p=a1.p+1.(hp*+)vanf(%d.p);fort=aq=a+%pq:PfqTI1.kPfq=t;Ifortp=a;pa*iO.p*)Mmf(%5dTp);phnd;)4 .解:程序设计如下:*nc1.udevoidmain()(i11a10p.q:frtp=1.Xu+IOip*+)uranfC%d,.p);fortq=a,p=a+kpa+10+)iT*q*p)q=P;三raZa=tqitq=:fortq=a,p=a+kprp)q=p;t=*(u+9);4(a+9=*q;4q=t;fortp=a:p(inta101=(10.20,50,40.5(1.
33、60JOM)9小IiMx=55.*;for(p=a*8;p=a&*px;p-)p*1.)=*;*(p*)=x:futp-apa+1.(hp*)primfC%5dH?p);Prin改、TR)6 .M:程序设计如下:*inc1.udevoidmain(charx81.1.,4p.prir=gcu):fortp=sp!=rOH)Iif(prior=三,(*p=a,&,p=z*)=32:prior=*p;)prinfn4):)7 .Ki程序设计如Fi*inc1.udeo.hvoidmain()(charstri(81.),sr281.)*p1.*p2:跻Mar2);PI=NrI;p2=Mr2;whi1
34、.c(*p1.+=*p2+)!=O,);pnn1.f*n1.r1.);)8 .解:悭序设计如下:*c1.udevoidmain()(charWBI,ciu*p.*q:PrintRtft入一个字符小gcMs);PrinIf(指定一个要削除的字符巧;ch=jetchar();fortp=q=s*p!=,J,p*)ifT*p!=ch)q*=;5o:prinR*n,45);)9 .解:程陈设H如下:*inc1.icvoidmain(char-momH3=JnuaryYFcbruaryYMarchYAprirjMayJJunJu1.y,”AuU”,“SeP(Snbtfr.OC1.oberJNuyemberJD*xemtwrI:inim;(PrirnfCtft入一,个月fB1.:);wnfC%dm);whik(m1.2:pnnf*%d月份的英文名称是:%snjnjnonih(m):)10 .W:程序设计如下:*inc1.udcvoidmain(charstr81.),*pq;gcu0r):fortq=M11q!=0q+);p=Mr.q;pvq;pa4,q)if(*p!=*q)break:若不区分大小学如何修改立if(ppri!Mf(不是回X!nw);-Primfr是回文申!W):习题六一、单项选择题1.A2.D3.B4.D5.B6.B7.C8.