C_primer_plus(第五版)课后编程练习答案

上传人:无*** 文档编号:206727058 上传时间:2023-05-04 格式:PDF 页数:195 大小:12.01MB
收藏 版权申诉 举报 下载
C_primer_plus(第五版)课后编程练习答案_第1页
第1页 / 共195页
C_primer_plus(第五版)课后编程练习答案_第2页
第2页 / 共195页
C_primer_plus(第五版)课后编程练习答案_第3页
第3页 / 共195页
资源描述:

《C_primer_plus(第五版)课后编程练习答案》由会员分享,可在线阅读,更多相关《C_primer_plus(第五版)课后编程练习答案(195页珍藏版)》请在装配图网上搜索。

1、第一章概览编程练习1 .您刚刚被M a c ro M u sc l e有限公司(S o f t wa re f o r H a rd B o d i e s)聘用。该公司要进入欧洲市场,需要一个将英寸转换为厘米(1英寸=2.5 4 c m)的程序。他们希望建立的该程序可提示用户输入英寸值。您的工作是定义程序目标并设计该程序(编程过程的第1步和第2步。1.将英寸值转化为厘米值2.显示“输入英寸值”-得到该值-转换为厘米值-存储-告知用户一结束第二章C语言概述编程练习1.编写 个程序,调用p r i n t f O函数在行上输出您的名和姓,再调用次p r i n t f O函数在两个单独的行上输出

2、您的名和姓,然后调用一对p r i n t f O函数在一行上输出您的名和姓。输出应如下所示(当然里面要换成您的姓名):A n t o n B ru c kn e rA n t o nB ru c kn e rA n t o n B ru c kn e r第一个输出语句第二个输出语句仍然是第二个输出语句第三个和第四个输出语句#i n c l u d e i n t m a i n(v o i d)p ri n t f (,?H e J i n n);p ri n t f(H e n);p ri n t f(J i n n);p ri n t f(H e J i n n);re t u rn(0

3、);)2 .编写一个程序输出您的姓名及地址。#i n c l u d e i n t m a i n(v o i d)(p ri n t f(*N a m e:H e J i n n);p ri n t f (A d d re ss:C A U C n);re t u rn(0);)3 .编写个程序,把您的年龄转换成天数并显示二者的值。不用考虑平年(f ra c t i o n a l y e a r)和闰年(1 e a p y e a r)的问题。#i n c l u d e i n t m a i n(v o i d)(i n t a g e=2 2;p ri n t f (?,A g e

4、:%d nz,,a g e);p ri n t f(D a y:%d n”,a g e*3 5 6);re t u rn(0);4 .编写个能够产生下面输出的程序:F o r h e s a j o l l y g o o d f e l l o w!F o r h e*s a j o l l y g o o d f e l l o w!F o r h e s a j o l l y g o o d f e l l o w!W h i c h n o b o d y c a n d e n y!程序中除了 m a i n。函数之外,要使用两个用户定义的函数:一个用于把上面的夸奖消息输出一次:另

5、一个用于把最后一行输出一次。#i n c l u d e v o i d p ri n t f l(v o i d);v o i d p ri n t f 2(v o i d);i n t m a i n(v o i d)(p ri n t f l ();p ri n t f 1 ();p ri n t f l ();p ri n t f 2();re t u rn(0);)v o i d p ri n t f l(v o i d)(p ri n t f (F o r h e s a j o l l y g o o d f e l l o w!n,z);)v o i d p ri n t f

6、2(v o i d)(p ri n t f(W h i c h n o b o d y c a n d e n y!n);5.编写一个程序,创建一个名为t o e s的整数变量。让程序把t o e s设置为1 0。再让程序计算两个t o e s的和以及t o e s的平方。程序应该输出所有的3个值,并分别标识它们。#i n c l u d e i n t m a i n(v o i d)(i n t t o e s=1 0;i n t t o e s a d d;i n t t o e s一squ a re;t o e s_a d d=t o e s+t o e s;t o e s_squ a

7、 re=t o e s*t o e s;p ri n t f (/,t o e s=%d n t o e s_a d d=%d n t o e s_squ a re=%d n/z,t o e s,t o e s_a d d,t o e s_squ a re);re t u rn (0);6.编写个能够产生下列输出的程序:S m i l e !S m i l e !S m i l eS m i l e !S m i l e !S m i l e !在程序中定义个能显示字符串s m i l e卜次的函数,并在需要时使用该函数。#i n c l u d e v o i d d i sp l a y(

8、v o i d);i n t m a i n(v o i d)(d i sp l a y ();d i sp l a y ();d i sp l a y();p ri n t f(n);d i sp l a y();d i sp l a y ();pr intf;d i sp l a y ();p ri n t f ;re t u rn(0);)v o i d d i sp l a y(v o i d)(p ri n t f(S m i l e!”);)7.编写一个程序,程序中要调用名为o n e _t h re e()的函数。该函数要在一行中显示单词。n e,再调用t wo()函数,然后再在

9、另一行中显示单词t h re e。函数l wo()应该能在一行中显示单词”t wo m a i n()函数应该在调用o n e t h re e。函数之前显示短语“st a rt i n g n o w:,函数调用之后要显示“d o n e!o这样,最后的输出结果应如下所示:st a rt i n g n o wo n et wot h re ed o n e !#i n c l u d e v o i d o n e _t h re e(v o i d);v o i d t wo(v o i d);i n t m a i n(v o i d)(p ri n t f (st a rt i n

10、g n o w:nz,);o n e _t h re e 0;p ri n t f(d o n e!n);re t u rn(0);)v o i d o n e _t h re e(v o i d)Ip ri n t f(0 n e n);t wo ();p ri n t f (,zT h re e nz,);)v o i d t wo(v o i d)(p ri n t f(T wo n);)第三章数据和C编程练习1.通过试验的方法(即编写带有此类问题的程序)观察系统如何处理整数上溢.、浮点数上溢和浮点数下溢的情况。#i nc l ud e i nt m a i n(voi d)(unsi

11、g ne d i nt a=4294967295;f l oa t b=3.4E38;f l oa t c=b*10;f l oa t d=0.1234E-2;pri ntf(%u+l=%u n”,a,a+1);pri ntf (,%e*10=%e n/,,b,c);pri ntf d,d/10);re turn(0);2 .编写 个程序,要求输入个A S C H码值(如66),然后输出相应的字符。#i nc l ud e i nt m a i n(voi d)(c h a r a;s can f&a);pri ntf(%c n,a);re turn(0);3 .编写个程序,发出警报声,并打印

12、下列文字:Sta rtl e d by th e sud d e n sound,Sa l l y sh oute d,“By th e Gre a t P um pk i n,w h a t w a s th a t!#i nc l ud e i nt m a i n(voi d)pri ntf CAa Sta rtl e d by th e sud d e n sound,Sa l l y sh oute d,,zBy th e Gre a t pum pk i n,w h a t w a sth a t!n);re turn(0);4.编写一个程序,读入一个浮点数,并分别以小数形式和指数

13、形式打印。输出应如同下面格式(实际显示的指数位数也许因系统而不同):Th e i nput i s 21.290000 or 2.129000e+001.#i nc l ud e i nt m a i n(voi d)f I oa t a;sc a nf (线f ,&a);pri ntf (,zTh e i nput i s%f or%e n,a,a);re turn(0);)5.年约有3.156X 107S。编写 个程序,要求输入您的年龄,然后显示该年龄合多少秒。#i nc l ud e i nt m a i n(voi d)f l oa t a;pri ntf(P l e a se i n

14、put y our a g e:);s can f&a);pri ntf (,zY our a g e i s%e se c ond sX n,a*3.156E7);re turn(0);6.1个水分子的质量约为3.0X 10723g,1夸脱水大约有950g。编写一个程序,要求输入水的夸脱数,然后显示这么多水中包含多少个水分子。tti nc l ud e i nt m a i n(voi d)(f l oa t a;pri ntf(z,P l e a se i nput h ow m uc h qua rts th e w a te r i s:);sc a nf (f ,&a);pri nt

15、f (,z%f qua rts w a te r h a s%e m ol e c ul e s.n/z,a,a*950/3E-23);re turn(0);7.1英寸等于2.54c m。编写一个程序,要求输入您的身高(以英寸为单位),然后显示该身高值等于多少厘米。如果您愿意,也可以要求以厘米为单位输入身高,然后以英寸为单位进行显示。tti nc l ud e i nt m a i n(voi d)(f l oa t a;pri ntf(P l e a se i nput y our h e i g h t by i nc h e s:);sc a nf (绘f ,&a);pri ntf Y

16、our h e i g h t i s%f c m.n,z,a*2.54);re turn(0);)第4章 字符串和格式化输入/输出编程练习1.编写一个程序,要求输入名字和姓氏,然后以“名字,姓氏”的格式打印。#i nc l ud e i nt m a i n(voi d)(c h a r surna m e 20,f i rstna m e 20;pri ntf(,zP l e a se i nput y our f i rstna m e a nd surna m e:);sc a nf(%s”,f i rstna m e):sc a nf (s,surna m e);pri ntf(Y

17、ou a re%s,%s.n”,f i rstna m e,surna m e);re turn(0);2.编写一个程序,要求输入名字,并执行以下操作:a.把名字引在双引号中打印出来。b.在宽度为2 0个字符的字段内打印名字,并且整个字段引在引号内。c.在宽度为2 0个字符的字段的左端打印名字,并且整个字段引在引号内。d.在比名字宽3个字符的字段内打印它。#i nc l ud e#i nc l ud e i nt m a i n(voi d)(c h a r na m e 20;i nt w i d th;pri ntf(*P l e a se i nput y our na m e:);s

18、can fn ame);pri ntf(A:%s n,na m e);pri ntf(B:%20s n,na m e);pri ntf(C:%-20s n,na m e);w i d th=strl e n(na m e)+3;pri ntf (D:%*s n,w i d th,na m e);/*对应 w i d thre turn(0);)3.编写一个程序,读取一个浮点数,并且首先以小数点记数法,然后以指数记数法打印之。输出使用下列形式(在指数位置显示的数字的位数可能会随系统而不同):a.Th e i nput i s 21.3 or 2.l e+001.b.Th e i nput i s

19、+21.290 or 2.129E+001.#i nc l ud e i nt m a i n(voi d)(f l oa t a;pri ntf (P l e a se i nput a f l oa t:z/);sc a nf (绘f ,&a);pri ntf (a.Th e i nput i s%.I f or%.l e n,a,a);pri ntf (b.Th e i nput i s%+.3f or%.3E n”,a,a);re turn(0);4.编写一个程序,要求输入身高(以英寸为单位)和名字,然后以如下形式显示:Da bne y,y ou a re 6.208 f e e t

20、ta i 1使用f l oa t类型,使用/作为除号。如果您愿意,可以要求以厘米为单位输入身高,并以米为单位进行显示。#i nc l ud e i nt m a i n(voi d)(f l oa t h e i g h t;c h a r na m e 20;pri ntf(P l e a se i nput y our h e i g h t by i nc h e s:);s can f&height);pri ntf (/zP l e a se i nput y our n a m e/);s can fn ame);pri ntf (/z%s,y ou a re%f f e e t

21、ta l l X n,na m e,h e i g h t/12);re turn(0);)5.编写一个程序,首先要求用户输入名字,然后要求用户输入姓氏。在一行打印输入的姓名,在下行打印每个名字中字母的个数。把字母个数与相应名字的结尾对齐,如下所示:M e l i ssa Hone y be e7 8然后打印相同的信息,但是字母个数与相应单词的开始对齐。#i nc l ud e#i nc l ud e i nt m a i n(voi d)(c h a r surna m e 20,f i rstna m e 20;pri ntf(*P l e a se i nput y our f i rs

22、tna m e a nd surna m e:);s ca n f f i r s t n a m e);sc a nf (线s,surna m e);pri ntf (z,%s%s.n,f i rstna m e,surna m e);pri ntf(%*d%*d n,strl e n(f i rstna m e),strl e n(f i rstna m e),strl e n(surna m e),strl e n(surna m e);/*对应宽度变量pri ntf (,z%s%s.n,f i rstna m e,surna m e);p r i n t f%d n”,str 1e n

23、(f i rstna m e),strl e n(f i rstna m e),strl e n(surna m e),strl e n(surna m e);/*对应宽度变量re turn(0);6.编写一个程序,设置一个值为1.0/3.0的d oubl e类型变量和一个值为1.0/3.0的f l oa t类型变量。每个变量的值显示三次:一次在小数点右侧显示4个数字,次在小数点右侧显示1 2个数字,另次在小数点右侧显示1 6个数字。同时要让程序包括f l o a t,h文件,并显示FLT DIG和DBL_ DIG的值。1.0/3.0的显示值与这些值致吗?#i n c l u d e#i n

24、c l u d e i n t m a i n(v o i d)d o u b l e a=l.0/3.0;f l o a t b=l.0/3.0;p r i n t f(*d o u b l e a=1.0/3.0:n);p r i n t f (%.4e n,a);p r i n t f (,z%.1 2e n/z,a);p r i n t f 1 6 e n n*,a);p r i n t f(Af l o a t b=l.0/3.0:n);p r i n t f (z,%.4f n,b);p r i n t f (%.1 2f n,b);p r i n t f (%.1 6 f n n

25、,b);p r i n t f CFLT _ DIG:%d n*,FLT _ DIG);p r i n t f(DBL_ D】G:%d n,DBL_ DG);r e t u r n(0);7.编写一个程序,要求用户输入行驶的英里数和消耗汽油的加仑数。接着应该计算和显示消耗每加仑汽油行驶的英里数,显示方式是在小数点右侧显示个数字。然后,根据1加仑约等于3.7 8 5升,1英里约等于1.6 0 9公里的规则,它应该把每加仑英里数转换成每1 0 0公里的升数(欧洲通用的燃料消耗表示法),并显示结果,显示方式是在小数点右侧显示个数字(请注意,美国方案测量每单位距离消耗的燃料数,而欧洲方案测量每单位燃料

26、的行驶距离)。用符号常量表示两个转换系数(使用c o n s t或#(“加)。#i n c l u d e t t d e f i n e GALLON 3.7 8 5/I g a l l o n =2.7 8 5 l i t r et t d e f i n e MILE 1.6 0 9 /I m i l e =1.6 0 9 k i l o m e t e ri n t m a i n(v o i d)(f l o a t m i l e,g a l l o n;p r i n t f (Pl e a s e i n p u t m i l e s a n d g a l l o n s:

27、/z);s c a n f (,z%f%f&m i l e,&g a l Io n);p r i n t f (Mi l e s p e r g a l l o n:%.l f n,z,m i l e/g a l Io n);p r i n t f (Li t r e s p e r 1 0 0 k i l o m e t r e:%.l f Xn ,g a l l o n*GALL0 N/(1 0 0*m i l e*MILE);r e t u r n(0);第5章 运算符、表达式和语句编程练习1 .编写一个程序。将用分钟表示的时间转换成以小时和分钟表示的时间。使用#d e f i n e或

28、者c o n s t来创建一个代表6 0的符号常量。使用w h i l e循环来允许用户重复键入值,并且当键入一个小于等于0的时间时终止循环。#i n c l u d e d e f i n e HOUR 6 0i n t m a i n(v o i d)(i n t m i n u t e s;p r i n t f(Pl e a s e i n p u t t h e m i n u t e s:);s c a n f (绘d ,&m i n u t e s);w h i l e(m i n u t e s 0)p r i n t f (/z%d h o u r s a n d%d m i

29、 n u t e s n ,m i n u t e s/HOUR,m i n u t e s%H0 UR);p r i n t f(Pl e a s e i n p u t t h e m i n u t e s:);s c a n f&m i n u t e s);)r e t u r n(0);2.编写一个程序,此程序要求输入一整数,然后打印出从(包括)输入的值到(包括)比输入的值大1 0的所有整数值(也就是说,如果输入为5,那么输出就从5到1 5)。要求在各个输出值之间用空格、制表符或换行符分开。#i n c l u d e i n t m a i n(v o i d)(i n t n

30、u m,i=0;p r i n t f(Pl e a s e i n p u t t h e n u m b e r:);scanf&num);w h i l e(i+l l)p r i n t f (z,%d ,n u m+);r e t u r n (0);3.编写一个程序,该程序要求用户输入天数,然后将该值转换为周数和天数。例如,此程序将把1 8天转换成2周4天。用下面的格式显示结果:使用一个w h i l e循环让用户重复输入天数;当用户输入一个非正数(如。或-20)时,程序将终止循环。#i n c l u d e t t d e f i n e W EEK 7i n t m a i

31、n(v o i d)(i n t d a y s;p r i n t f(Pl e a s e i n p u t t h e d a y s:);s c a n f&d a y s);w h i 1 e(d a y s 0)(p r i n t f(%d d a y s a r e%d w e e k s,%d d a y s.n*,d a y s,d a y s/W EEK,d a y s%W EEK);p r i n t f CPl e a s e i n p u t t h e d a y s:);s c a n f&d a y s);r et u r n (0);4 .编写个程序让用

32、户按厘米输入个高度值,然后,程序按照厘米和英尺英寸显示这个高度值。允许厘米和英寸的值出现小数部分。程序允许用户继续输入,直到用户输入一个非正的数值。程序运行的示例如下面所示:En t er a h eigh t in cen t imet er s:1 8 21 8 2.0 cm=5 feet,1 1.7 in ch esEn t er a h eigh t in cen t imet er s(=0 t o q u it):1 6 81 6 8.0 cm=5 feet,6.1 in ch esEn t er a h eigh t in cen t imet er s(=0 t o q u i

33、t):0by e#in clu det t defin e INCH 2.5 4 /1 in ch =2.5 4 cmin t main(v o id)(flo at cm;p r in t f(En t er a h eigh t in cen t imet er s:;s can f(%f,&cm);wh ile(cm 0)(p r in t f(z,%.If cm=%d feet,%.If in ch es、。“,cm,in t (cm/INCH/1 2),cm/INCH-in t (cm/INCH/1 2)*1 2);p r in t f(,zEn t er a h eigh t in

34、 cen t imet er s =0 t o q u it):);s can f&cm);)p r in t f(,by en,/);r et u r n (0);5.改写用来找到前20个整数之和的程序addemu p.c(程序清单5.1 3)(如果您愿意,可以把addemu p.c程序看成是个计算如果您第天得到$1,第二天得到$2,第三天得到$3,以此类推,您在2 0天里会挣多少钱的程序)。修改该程序,目的是您能交q地告诉程序计算将进行到哪里。也就是说,用一个读入的变量来代替2 0 o#in clu dein t main(v o id)(in t co u n t,s u m,max;c

35、o u n t=0;s u m=0;p r in t f(Pleas e in p u t t h e max:);sc a nf&m a x);wh ile(co u n t+max)s u m=s u m+co u n t;p r in t f(s u m 二 s u m);r et u r n (0);)6.现在修改编程练习5中的程序,使它能够计算整数平方的和(如果您喜欢,可以这样认为:如果您第一天得到$1,第二天得到$4,第三天得到$9,以此类推您将得到多少钱。这看起来像一个很好的买页0C没有平方函数,但是您可以利用n的平方是n*n的事实。#in clu dein t main(v o

36、 id)(in t co u n t,s u m,max;co u n t=0;s u m=0;p r in t f(/zPleas e in p u t t h e max:);s can f&max);wh ile(co u n t+max)s u m=s u m+co u n t *co u n t;p r in t f(s u m=%dn,s u m);r et u r n(0);)7 .编写一个程序,该程序要求输入一个flo at型数并打印该数的立方值。使用您自己设计的函数来计算该值的立方并且将它的立方打印出来。main。程序把输入的值传递给该函数。#in clu deflo at

37、cu be(flo at);in t main(v o id)(flo at n u mber;p r in t f(Pleas e in p u t t h e n u mber:);s can f(%f,&n u mber);p r in t f(Th e cu be o f%f is%fny z,n u mber,cu be(n u mber);r et u r n (0);)flo at cu be(flo at n u m)(r et u r n(n u m*n u m*n u m);8.编写一个程序,该程序要求用户输入一个华氏温度。程序以do u ble类型读入温度值,并将它作为个

38、参数传递给用户提供的函数Temp er at u r es。该函数将计算相应的摄氏温度和绝对温度,并以小数点右边有两位数字的精度显示这三种温度。它应该用每个值所代表的温度刻度来标识这3个值。下面是将华氏温度转换成摄氏温度的方程:通常用在科学上的绝对温度的刻度是0代表绝对零,是可能温度的下界。下面是将摄氏温度转换为绝对温度的方程:Kelv in=Cels iu s+2 7 3.1 6Temp er at u r es。函数使用co n s t来创建代表该转换里的3个常量的符号。main。函数将使用个循环来允许用户重复地输入温度,当用户输入q或其他非数字值时,循环结束。#i n c l u d e

39、 v o i d Te m p e r a t u r e s(d o u b l e);i n t m a i n(v o i d)(d o u b l e F a h r e n h e i t;p r i n t f (z,P l e a s e i n p u t t h e F a h r e n h e i t:;w h i l e (s c a n f (Z,%1 fz z,&F a h r e n h e i t)=二1)s c a n f的返回值代表成功输入的变量的数目,非数字不会被成功输入(Te m p e r a t u r e s(F a h r e n h e i t

40、);p r i n t f (Z,P 1 e a s e i n p u t t h e F a h r e n h e i t:z/);)p r i n t f(e n d n);r e t u r n(0);)v o i d Te m p e r a t u r e s(d o u b l e F a h r e n h e i t)(c o n s t d o u b l e a=l.8,b=32.0,c=273.16;p r i n t f (F a h r e n h e i t =F a h r e n h e i t);p r i n t f (C e l s i u s =a

41、*F a h r e n h e i t +b);p r i n t f(K e l v i n =%l f n,a *F a h r e n h e i t +b +c);第6章C控制语句:循环编程练习1.编写一个程序,创建一个具有26个元素的数组,并在其中存储26个小写字母。并让该程序显示该数组的内容。#i n c l u d e i n t m a i n(v o i d)(c h a r AB C 26;i n t i;f o r(i=0;i 26;i+)AB C i:a +i;f o r(i=0;i 26;i+)p r i n t f A B C i );printf;r e t u

42、 r n(0);2.使用嵌套循环产生下列图案:S$#i n c l u d e i n t m a i n(v o i d)(i n t i,j;f o r(i=0;i 5;i+)f o r(j=0;j=i;j+)p r i n t f($);p r i n t f(n);)r e t u r n(0);3.使用嵌套循环产生下列图案:FF EF E DF E D CF E D C BF E D C B A请注意:如果您的系统不使用ASC H或其他以数字顺序编码的码,您可以把一个字符数组初始化为字母表中的字母:c h a r l e t s 26 AB C D E F G I 11J K L M

43、 N O P QRSTUVWXYZ;然后就可以使用数组索引来选用单个的字母,例如l e t s 0是A,等等。#i n c l u d e i n t m a i n (v o i d)(i n t i,j;f o r(i=0;i 6;i+)f o r(j=0;j=i;j+)p r i n t f (%c,F -j);p r i n t f(r T);r e t u r n (0);)4.让程序要求用户输入一个大写字母,使用嵌套循环产生像下面这样的金字塔图案:AAB AAB C B AAB C D C D AAB C D E D C B A这种图案要扩展到用户输入的字符。例如,前面的图案是在输

44、入E时需要产生的。提示:使 用 个外部循环来处理行,在每一行中使用三个内部循环,一个处理空格,一个以升序打印字母,一个以降序打印字母。如果您的系统不使用ASC I I或类似的以严格数字顺序表示字母的编码,请参见在编程练习3中给出的建议。#i n c l u d e i n t m a i n(v o i d)(i n t i,j,k;c h a r l e t t e r;p r i n t f(P l e a s e i n p u t a c a p i t a l /);s c a n f&l e t t e r);k=l e t t e r-A*+1;f o r(i=0;i k;i+)

45、(f o r(j=0;j k-i;j+)p r i n t f C );f o r(j=0;j=0;j-)p r i n t f A+j);p r i n t f(n);)r e t u r n (0);5.编写个程序打印个表,表的每行都给出个整数、它的平方以及它的立方。要求用户输入表的上限与下限。使用一个f o r循环。#i n c l u d e i n t m a i n(v o i d)i n t i,m i n,m a x;p r i n t f(P l e a s e i n p u t t h e m i n a n d m a x:);s c a n f (刎%d ,&m i

46、n,&m a x);p r i n t f (线10s%10s M 10s n,n u m,s q u a r e,c u b e);f o r(i=m i n;i=m a x;i+)p r i n t f r%10d%10d%10d n,z,i,i*i,;)r e t u r n (0);6.编写个程序把一个单词读入个字符数组,然后反向打印出这个词。提示:使 用s t r l e n O(第4章)计算数组中最后一个字符的索引。#inc lu d e#inc lu d e int ma in(v oid)(c ha r w or d 20;int i;pr int f(P le a s e i

47、npu t a w or d:);s c a nf&w or d);f or (i=s t r le n(w or d)-1;i=0;i-)pr int f (z z%c/,,w or d i);pr int f ;r e t u r n(0);7.编写个程序,要求输入两个浮点数,然后打印出用二者的差值除以二者的乘积所得的结果。在用户键入非数字的输入之前程序循环处理每对输入值。#inc lu d e int ma in(v oid)f loa t a,b;pr int f(P le a s e inpu t t w o f loa t s:);w hile(s c a nf(f%f,&a,&b

48、)=2 )pr int f C(%.2f-%.2f)/(%.2f*%.2f)=%.2f n,a,b,a,b,(a-b)/(a*b);pr int f(P 1e a s e inpu t t w o f loa t s:);)pr int f(e nd n);r e t u r n(0);)8 .对练习7进行修改,让它使用个函数来返回计算值。#inc lu d e f loa t c a lc u la t e(f loa t,f loa t);int ma in(v oid)(f loa t a,b;pr int f(/zP le a s e inpu t t w o f loa t s:);

49、w hile(s c a nf ”,&a,&b)=2)(pr int f(%.2f-%.2f)/(%.2f*%.2f)=%.2f n,a,b,a,b,c a lc u la t e (a,b);pr int f(P le a s e inpu t t w o f loa t s:);)pr int f (z,e nd n/z);r e t u r n(0);)f loa t c a lc u la t e(f loa t x,f loa t y)(r e t u r n(x-y)/(x*y);)9 .编写一个程序,要求用户输入下限整数和一个上限整数,然后,依次计算从下限到上限的每一个整数的平方

50、的加和,最后显示结果。程序将不断提示用户输入下限整数和上限整数并显示出答案,直到用户输入的上限整数等于或小于卜.限整数为止。程序运行的结果示例应该如卜.所示:E nt e r low e r a nd u ppe r int e g e r limit s:5 9T he s u ms of t he s qu a r e s f r om 25 t O 81 is 255E nt e r ne x t s e t of limit s:3 25T he s u ms of t he s qu a r e s f r om 9 t O 625 iS 5520E nt e r ne x t s

51、e t of limit s:5 5D one#inc lu d e int ma in(v oid)(int low e r,u ppe r,s u m,i;pr int f(E nt e r 1ow e r a nd u ppe r int e g e r limit s:);s c a nf (,%d%dz,,&low e r,&u ppe r);w h i1e(1ow e r u ppe r )(f or(i二low e r,s u m=0;i二u ppe r;i+)s u m+=i*i;pr int f (Z/T he s u ms of t he s qu a t e s f r

52、om%d t o%d is%d nz,,low e r*low e r,u ppe r*u ppe r,s u m);pr int f(E nt e r ne x t s e t of limit s:);s c a nf(%d%d,&low e r,&u ppe r);)pr int f(D one n);r e t u r n(0);10.编写一个程序把8个整数读入一个数组中,然后以相反的顺序打印它们。#inc lu d e int ma in(v oid)(int nu m 8,i;pr int f (E nt e r 8 nu mb e r s:z/);f or(i=0;i=0;i)p

53、r int f (,z%d t,z,nu m i);pr int f(n);r e t u r n(0);11.考虑这两个无限序列:1.0+1.0/2.0+1.0/3.0+1.0/4.0+1.0-1.0/2.0+1.0/3.0-1.0/4.0+编 写 个程序来计算这两个序列不断变化的总和,直到达到某个次数。让用户交互地输入这个次数。看看在2 0次、100次和5 0 0次之后的总和。是否每个序列都看上去要收敛于某个值?提示:奇数个T相乘的值为T,而偶数个T 相乘的值为1。#inc lu d e int ma in(v oid)(d ou b le i,s u m1,s u m2;int s ig

54、 n,c ou nt;pr int f(E nt e r t he c ou nt:);s c a nf (机T,&c ou nt);f or(i=l.0,s ig n=l,s u ml=0,s u m2=0;i=c ou nt;i+,s ig n-=s ig n)(s u ml+=1.0/i;s u m2+=s ig n*1.0/i;pr int f (1.0+1.0/2.0+1.0/3.0+1.0/4.0.(%d t e r ms)=%lf n*,c ou nt,s u ml);pr int f (1.0-1.0/2.0+1.0/3.0-1.0/4.0.(%d t e r ms)=c ou

55、 nt,s u m2);r e t u r n(0);)12.编写个程序,创 建 个8个元素的int数组,并且把元素分别设置为2的前.8次幕,然后打印出它们的值。使用f o r循环来设置值;为了变化,使用d o w hile循环来显示这些值。#inc lu d e#inc lu d e int ma in(v oid)int nu m 8,i;f or(i=0;i 8;i+)nu m i =pow(2,i);pow乘幕函数 用到ma t h头文件i=0;d opr int f(%d t,nu m i);w hile(+i 8);pr int f(n);r e t u r n(0);13.编写一

56、个程序,创建两个8元素的d ou b le数组,使用一个循环来让用户键入第一个数组的8个元素的值。程序把第二个数组的元素设置为第个数组元素的累积和。例如,第二个数组的第4个元素应该等于第一个数组的前4个元素的和,第二个数组的第5个元素应该等于第一个数组的前5个元素的和(使用嵌套循环可以做到这点。不过利用第二个数组的第5个元素等于第二个数组的第4个元素加上第一个数组的第5个元素这一事实,可以避免嵌套而只使用单个循环来完成这个任务)。最后,使用一个循环来显示两个数组中的内容,第个数组在行中显示,而第二个数组中的每个元素在第个数组的对应元素之下进行显示。#inc lu d e int ma in(v

57、 oid)(d ou b le nu m 8,s u m 8;int i,j;pr int f(E nt e r 8 nu mb e r s:);f or(i=0;i 8;i+)(s c a nf(%lf”,&nu m i);f or(j=0,s u m i=0;j =i;j+)s u m i +=nu m j ;)f or(i=0;i 8;i+)pr int f (%8.31f,nu m i);pr int f(n);f or(i=0;i 8;i+)pr int f (%8.3I f”,s u m i);pr int f(n);r e t u r n(0);)14.编写一个程序读入一行输入,

58、然后反向打印该行。您可以把输入存储在一个c ha r数组中:假定该行不超过2 55个字符。回忆一下,您可以使用具有枇说明符的s c a n f ()从输入中一次读入一个字符,而且当您按下回车键时会产生换行字符(n)o#i n c l u d e d e f i n e LENGTH 2 0i n t m a i n(v o i d)(c h a r a 2 55;i n t i;f o r(i=0;i=0;i)p r i n t f a i );p r i n t f(n);r e t u r n(0);)1 5.Da p h n e以1 0%的单利息投资了 1 0 0美元(也就是说,每年投资

59、赢得的利息等于原始投资的1 0%)。De i r d r e则以每年5%的复合利息投资了 1 0 0美元(也就是说,利息是当前结余的5%,其中包括以前的利息)。编写一个程序,计算需要多少年De i r d r e的投资额才会超过Da p h n e,并且显示出到那时两个人的投资额。#i n c l u d e i n t m a i n(v o i d)(d o u b l e Da p h n e=1 0 0,De i r d r e=1 0 0;i n t i=0;w h i l e (Da p h n e=De i r d r e)Da p h n e +=1 0 0 *0.1;De i

60、 r d r e +=De i r d r e *0.0 5;i+;)p r i n t f (Af t e r%d y e a r s,De i r d r e,s i n v e s t m e n t i s%l f,Da p h n e,s i n v e s t m e n ti s i,De i r d r e,Da p h n e);r e t u r n(0);1 6.Ch u c k i e Lu c k y赢了 1 0 0万美元,他把它存入一个每年赢得8%的帐户。在每年的最后一天,Ch u c k i e取出1 0万美元。编写个程序,计算需要多少年Ch u c k i e就

61、会清空他的帐户。#i n c l u d e i n t m a i n (v o i d)(d o u b l e i n v e s t m e n t =1 0 0;i n t i=0;w h i l e(i n v e s t m e n t 0)i n v e s t m e n t +=i n v e s t m e n t *0.0 8;i n v e s t m e n t -=1 0;i+;)p r i n t f (?,Af t e r%d y e a r s,Ch u c k i e Lu c k y*s i n v e s t m e n t i s o u t n”,

62、i,i n v e s t m e n t);r e t u r n (0);第七章C控制语句:分支和跳转编程练习1 .编写一个程序。该程序读取输入直到遇到#字符,然后报告读取的空格数目、读取的换行符数目以及读取的所有其他字符数目。#i n c l u d e i n t m a i n(v o i d)(i n t s p a c e=0,n e w l i n e=0,o t h e r s=0;c h a r a;p r i n t f(Pl e a s e i n p u t a s t r i n g e n d b y#:);w h i 1 e(a=g e t c h a r()!

63、=#)i f(a =)s p a c e+;e l s e i f (a =n )n e w 1 i n e+;e l s e o t h e r s+;p r i n t f (s p a c e:%d,n e w l i n e:%d,o t h e r s:%d n/z,s p a c e,n e w l i n e,o t h e r s);r e t u r n(0);)2 .编写一个程序,该程序读取输入直到遇到#字符。使程序打印每个输入的字符以及它的卜进制ASCII码。每行打印8个字符,编码对。建议:利用字符计数和模运算符闾在每8个循环周期时打印 个换行符。#i n c l u d

64、 e i n t m a i n(v o i d)(c h a r a:i n t i;p r i n t f(Pl e a s e i n p u t a s t r i n g e n d b yf o r d =1;(a =g e t c h a r()!=;i+)p r i n t f (%c-%d t”,a,a);i f(i%8=0)p r i n t f C n);)p r i n l f(n);r e t u r n(0);3 .编写个程序。该程序读取整数,直到输入0。输入终止后,程序应该报告输入的偶数(不包括0)总个数、偶数的平均值,输入的奇数总个数以及奇数的平均值。#i n

65、c l u d e i n t m a i n(v o i d)i n t i _ e v e n =0,s u m _ e v e n =0,i _ o d d =0,s u m _ o d d =0,n u m;p r i n t f(Pl e a s e i n p u t n u m b e r s (0 t o q u i t):);w h i l e(l)scanf&num);i f (n u m =0)b r e a k;i f (n u m%2 =0)i _ e v e n+;s u m _ e v e n +=n u m;e l s e i _ o d d+;s u m _

66、o d d +=n u m;p r i n t f(e v e np r i n t f(e v e np r i n t f(o d dp r i n t f(o d dr e t u r n(0);n u m b e r,sn u m b e r,sn u m b e r sn u m b e r,sc o u n t:%d n,i _ e v e n);s u m :%d n”,s u m _ e v e n);c o u n t:%d n”,i o d d);s u m :%d n”,s u m _ o d d);4.利 用i f e l s e语句编写程序读取输入,直到用一个感叹号代替每个句号,将原有的每个感叹号用两个感叹号代替,最后报告进行了多少次替代。#i n c l u d e i n t m a i n(v o i d)i n t a=0,b=0;c h a r c h;p r i n t f(Pl e a s e i n p u t a s t r i n g e n d b yw h i l e (c h =g e t c h a r ()!=#)i f (c h

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!