《C语言程序设计教程第2版_杨路明_著_课后习题答案.pdf》由会员分享,可在线阅读,更多相关《C语言程序设计教程第2版_杨路明_著_课后习题答案.pdf(53页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C语言程序设计教程(第 2 版)杨路明著课后习题答案第 一 章 C语言程序设计概述一习题答案1算法的描述有哪些基本方法?答1、自然语言2、专用工具2C语言程序的基本结构是怎样的?举一个例子说明。答:、C语言程序由函数构成;2、“/*”与“*/”之间的内容构成C语言程序的注释部分;3、用预处理命令#include、#define可以包含有关文件或预定义信息;4、大小写字母在C语言中是有区别的;5、除main。函数和标准库函数外,用户也可以自己编写函数,应用程序一般由多个函数组成,这些函数指定实际所需要做的工作。3C语言有什么特点?答1、具有结构语言的特点,程序之间很容易实现段的共享;2、主要结构
2、成分为函数,函数可以在程序中被定义完成独立的任务,独立地编译代码,以实现程序的模块化;3、运算符丰富,包含的范围很广;4、数据类型丰富;5、允许直接访问物理地址,即可直接对硬件进行损伤,实现汇编语言的大部分功能;6、限制不太严格,程序设计自由度大,这样使C语言能够减少对程序员的束缚;7、生成的目标代码质量,程序执行效率高,同时C语言编写的程序的可移植性好。4指出合法与不合法的标识符命名。答AB 1 2 Vleed_3-a*b2 X 8stu-X D.K.Jon-X EF3_3-J PAS V if XXYZ43K2 V AVE#XY X _76 2 V#_DT5 X C.D-X5说明下列Tur
3、bo C 热键的功能。答F2:源 文件存盘F1 0:调用主菜单F4:程序运行到光标所在行(用于调试程序)Ctrl+F9:编译并链接成可执行文件Alt+F5:将窗口切换到DOS下,查看程序运行结果。6说明下列Turbo C 方式下输入并运行下列程序,记录下运行结果。main。printf(*n);printf(z,welcome you n);printf(very good n);printf(*n);)main。int a,b,c,t;printf(please input three numbers;z,);scanf(%d,%d,%d,&a,&b,&c);/*教材 S 是错误的*/t=m
4、ax(max(a,b),c);printf(z,max number is:%dnz,,t);)int max(int x,int y)int z;if(xy)z=x;else z=y;return(z);)答运行结果:welcome youvery good运行结果:please input three numbers;3,1,4/*左侧下划线内容为键盘输入*/max number is:47一个C程序是由若干个函数构成的,其中有且只能有一个 函数。答main()8在 Turbo C环境下进行程序调试时,可以使用Run下拉菜单的 命令或按键转到用户屏幕查看程序运行结果。答1、User scr
5、een2、Alt+F59 C语言对标识符与关键字有些什么规定?答1、标识符用来表示函数、类型及变量的名称,它是由字母、下划线和数字组成,但必须用字母或下划线开头。2、关键字是一种语言中规定具有特定含义的标识符,其不能作为变量或函数名来使用,用户只能根据系统的规定使用它们。10C源程序输入后是如何进行保存的?答是以C为扩展名保存的纯文本文件。第 二 章 C语言程序的基本数据类型与表达式一习题答案1指出下列常数中哪些是符合C语法规定的。答V X 101X -X e3X 019 V Oxle Vabn”-J 1.e5X(2+3)e(4-2)X 5.2e2.5X请找出下列程序中的错误,改正后写出程序运
6、行结果。v o i d m a i n()i n t x,y=z=5,a v e r;x=7A V E R=(x+y+z)/3p r i n t f(A V E R二%d n,a v e r);)v o i d m a i n()c h a r c l=,a*;c 2=b ;c 3=c,;i n t a=3.5,b=,A p r i n t f (,a=%d b=,e n d n,a,b);p r i n t f (,a%c b%c b c%c t a b c n/,c l,c 2,c 3);m a i n O i n t x,y=5,z=5,a v e r;x=7;a v e r=(x+y+
7、z)/3;p r i n t f (,A V E R=%d n/,,a v e r);)运行结果:A V E R=5 m a i n。c h a r c l=,a*,c 2=b ,c 3=c ;i n t a=3,b=A ;p r i n t f (,a=%d,b=%c e n d n,a,b);p r i n t f (,a%c b%c b c%c t a b c r)z/,c l,c 2,c 3);)运行结果:a=3,b=A e n d a a b c c a b c写出下列赋值的结果,表格中写了数值的是要将它赋给其他类型的变量,将所有的空格填上赋值后的数据(实数保留到小数点后两位)。i
8、n t9 9-1c h a r,h u n s i g n e d i n t66f l o a t55.78l o n g i n t68答i n t99104665568-1c h a r,c h,B,T,D u n s i g n e d i n t9 91 0 46 65 56 86 5 5 3 5f l o a t9 9.0 01 0 4.0 06 6.0 05 5.7 86 8.0 0-1.0 0l o n g i n t9 91 0 46 65 56 8-1写出程序运行结果。v o i d m a i n()i n t i,j;i=8,j=1 0;p r i n t f (%d,
9、%d,%d,%d n,,i,j,+i,j+);)m a i n ()i n t a=l,b=2,c=3 0;p r i n t f (%d,%d,%d,%d n,a=b=c,a=b=c,a=(b=c),a=(b=c);)注意:a=b=c,a=b=c之间应为逗号,教材有误答篙亍结果:9,1 1,9,1 0运行结果:3 0,1,0,0 v o i d m a i n()i n t a=1 0,b=2 0,c=3 0,d;d=+a =2 0|c+;p r i n t f (d,%d,%d,%d n,a,b,c,d);答运行结果:1 1,1 9,3 0,15写出下面表达式的值(设a=1 0,b=4,c
10、=5,d=l,x=2.5,y=3.5)。(l)a%=(b%=3)(2)n+,a+=a-=a*=a(3)(f l o a t)(a+c)/2+(i n t)x%(i n t)y a*=b+c+a-c+b+(6)+a-c+b水b?x:A(8)b+=c(9)a+b,1 8+(b=4)*3,(a/b,a%b)(1 0)x+a%3*(i n t)(x+y)%2/4+s i z e o f (i n t)(l l)a b?a:c 0?x:-x的功能是什么?答7口果X的值是一正数,则表达式的值为X值;如果X的值是一非正数,则表达式的值为-X。其实该表达式的值即为X的绝对值,C语言中提供了一个函数fabs(x
11、)即可完成此功能,该函数包含在math,h头文件中。8用一个条件表达式描述从a、b、c中找出最大都赋给max.答max=a(bc?b:c)?a:(bc?b:c);9若x为i n t型变量,则执行以下语句后x的值为()。x=6;x+=x-=x*x;A.36 B.-60 C.60 D.-24答B.1 0若有以下类型说明语句:c h a r w;i n t x;f l o a t y;d o u b l e z;则表达式w*x+z-y 的结果为()类型。A.f l o a t B.c h a r C.i n t D.d o u b l e答D.第 三 章 顺序结构程序设计一习题答案1变量k 为 f
12、l o a t 类型,调用函数s c a n f(%d”,&k),不能使变量k 得到正确数值的原因是 o答格式修饰符与变量类型不一致。因为%d 输入的数据类型应该为十进制整数,而&k 为占用4 个字节的f l o a t 类型变量的地址。2a=1 2 3 4,b=1 2,c=3 4,则执行“p r i n t f (|%3 d%3 d%-3 d|n”,a,b,c);”后的输出是 o答|1 2 3 4 1 2 3 4|分析如下:%3 d 为右对齐输出变量,且指定输出变量的值宽度为3 个字符位,如果变量实际位数小于3,则左端补空格,如果变量实际位数大于3,则按实际长度输出,不受限制。对3 d 为左
13、对齐输出变量,在输出变量时,如是变量实际位数小于3,则在右端补空格,否则按实际输出。3设有 i n t a=2 5 5,b=8;,则 p r i n t f (%x,%o n”,a,b);”输出是。答f f,1 0如果 p r i n t f (级X,枇 n ,a,b)则输出为F F,1 0。说明在输出十六进制字母时,其大小写受格式修饰符的限制,如果是“姒”则输出小写,如果是“%X”则输出大写。如果希望在输出十六进制时输出前导符O x 或 0 X,则以上输出语句应改“p r i n t f%o n”,a,b);为或 p r i n t f (耕X,%o n”,a,b);。本条解释不必须掌握。4
14、以下程序输出的结果是 om a i n ()(i n t a l=l,a 2=0,a 3=2;pr i n t f(级d,%d,%d n”,a l,a l+a 2+a 3,a 3-a l);答1,3,15pr i n t f函数中用到格式符%5 s,其中5 表示输出字符占用5 歹人如果字符串长度大于5,则按 输出;如果字符串长度小于5,则按 输出。答实际左端补空格6已定义变量如下:i n t a l,a 2;ch a r cl,c2;若要求输入a l、a 2、cl 和 c2 的值,正 确 的 输 入 函 数 调 用 语 句 是。答s ca n f(/z%d,%d,%c,%c”,&a l,&a
15、2,&cl,&c2);7输入两个整型变量a、b的值,输 出 下 列 算 式 以 及 运 算 结 果。a+b、a-b、a*b、a/b (fl o a t)a/b a%b每个算式占一行。如 a=1 0,b=5,a+b 输出为:1 0+5=1 5答设 i n t a=1 0,b=5;以下为输出语句及结果:pr i n t f(,%d+%d=%d n/,a,b,a+b);1 0+5=1 5pr i n t f(z/%d-%d=%d n/z,a,b,a-b);1 0-5=5pr i n t f(z/%d*%d=%d n,z,a,b,a*b);1 0*5=5 0pr i n t f(/,%d/%d=%d
16、n,/,a,b,a/b);1 0/5=2pr i n t f(%(fl o a t)d/%d二%f n ,a,b,(fl o a t)a/b);(fl o a t)1 0/5=2.0 0 0 0 00pr i n t f C%d%d=%d n,z,a,b,a%b);1 0%5=08输入一个非负数,计算以这个数为半径的圆周长和面积。答 defi n e P I 3.1 4 1 5 9 2 6m a i n()(fl o a t r,1,a r ea;pr i n t f(,zI n pu t a po s i t i v e:z,);s ca n f(f”,&r);l=2*P I*r;a r e
17、a=P I*r*r;pr i n t f(,zl=%f t a r ea=%f nz,,1,a r ea);)输入任意一个3 位数,将其各位数字反序输出(例如输入1 2 3,输出32 1)。答m a i n()(i n t x,y;pr i n t f(z,I n pu t a n u m b er(1 0 0-9 9 9):,z);s ca n f(%d,&x);y=1 0 0*(x%1 0)+1 0*(x/1 0%1 0)+x/1 0 0;/*注意分析此处算法*/pr i n t f(d%d n ,x,y);1 0输入任意大小的3 个整数,判断其中是否有两个奇数一个偶数。若是则输出Y E
18、S,不是则输出N O T(要求用条件表达式进行判断,不使用i f语 句)。答m a i n()(i n t x,y,z,o ddco u n t=0;/*奇数数计数变量*/pr i n t f(z,I n pu t x,y,z:);s ca n f(/z%d,%d,%d,&x,&y,&z);x%2=l?o ddco u n t+:0;y%2=l?o ddco u n t+:0;z%2=l?o ddco u n t+:0;o ddco u n t=2?pr i n t f(Y E S):pr i n t f(N O T);1 1求前驱字符和后继字符。输入一个字符,找出它的前驱字符和后继字符,并按
19、A S C I I 码值,按从大到小的顺序输出这3 个字符及其对应的A S C I I 码值。答本题考查同学们对字符类型数据的认识,如果在A S C H 范围内则即可以显示为字符,又可以显示为整数值;无论是否能够显示为字符,字符类型数据是可能参与数值运算的,切记。m a i n ()(ch a r c;pr i n t f(I n pu t ch a r a ct er:/z);sc anf&c);pr i n t f(/%c-%d nz z,c-l,c-l);pr i n t f(/%c-%d nz/,c,c);pr i n t f(/%c-%d n,c+1,c+1);g et ch O;/
20、*为便于调试程序,运行至此程序停顿,此时可以看到运行结果,按任意键程序真难得结束并返回到编辑环境*/1 2输入三角形的边长,求三角形面积(面积=s qr t(s(s-a)(s-b)(s-c),s=(a+b+c)/2)0答#i n cl u dem a t h.h /*由于程序中使用了开平方函数s qr t (),所以需要包含数学头文件*/m ai n()(f l oat a,b,c,s,ar e a;i n t ok=0;p r i n t f (z/I n p ut a,b,c:);s c an f (/z%f,%f,%fz/,&a,&b,&c);a+b c?ok+:0;/*以下3条语句为判
21、断是否输入的数据是否构成封闭三角形*/a+c b?ok+:0;b+c a?ok+:0;ok=3?(s=(a+b+c)/2,ar e a=s q r t(s*(s-a)*(s-b)*(s-c),p r i n t f(ar e a=%f”,ar e a):p r i n t f(e r r or);g e t c h();第四章选择结构程序设计一习题答案1设X、t均为i n t型变量,则执行语句“x=1 0;t=x&x 1 0;”后,t的值为答02假定所有变量均已正确定义,则程序段:i n t a=0,y=1 0;i f(a=0)y-;e l s e i f(a 0)y+;e l s e y+=
22、y;运行后y的值是;答2 03能表 述2 0 x 3 0或x 2 0&x 3 0|+x -1 0 04若有定义语句i n t a=2 5,b=1 4,c=1 9;”,则以下语句执行结果是i f(a=2 5&b=2&c)p r i n t f(*a+b=%d,a-b=%d*n,a+b,a-b);e l s e p r i n t f(*a=/d,b=%d,c=%d*n,a,b,c);答*a=2 5,b=1 4,c=1 9*5假定i和j为i n t型变量,则执行以下语句后i的值是 0i n t i=l;s wi t c h (i)(c as e 1:f or(j=0;j 9;j+)i+=j;br
23、e ak;c as e 2:f or(j=l;j 1 0;j+)i+=j;br e ak;c as e 3:i+;)答3 7分析:执行了 c as e 1:和 c as e 3:中的代码。同时c as e 1:语句中的 是可以取消的。6以下两条i f 语句可合并成一条i f 语句,即 oi f(a b)p r i n t f(*y=%d n”,y);e l s e p r i n t f(*x=%d n”,x);答i f(a l)p r i n t f Cout s i d e);e l s e i f(d l)p r i n t f(i n s i d e);e l s e p r i n
24、t f(i n s i d e);1 0输入年号和月份,输出这一年该月的天数(一个年份,先判断是否闰年)。答m ai n()(i n t y,m,d,f;p r i n t f (,zI n p ut y e ar an d m on t h y-m:);s c an f (%d-%d”,&y,&m);f=(y%4=0&y/1 0 0!=0|y/4 0 0=0);i f(m=2)d=2 8+f;/*依据是否闰年决定2月份的实际天数,若是闰年,则 f=l,d即为2 9 天*/e l s ed=3 1-(m=4)+(m=6)+(m=9)+(m=l 1);/*m=4 时其值为 1,则本月为 3 0天
25、,典型算法,重要啊*/p r i n t f (z,%d-%d i s%d d ay s.n ,y,m,d);1 1请将以下语句改写成s wi t c h语 句(a0)。i f(a 3 0)e l s e i f(a 4 0)m=2e l s e i f(a 5 0)m=3e l s e i f(a 6 0)m=4e l s es wi t c h(a/1 0)c as e 1:c as e 2:c as e 3:m=l;br e ak;c as e 4:m=2;br e ak;c as e 5:m=3;br e ak;c as e 6:m=4;br e ak;d e f aul t:m=5;
26、1 2有一函数x-1 -5 x 0y=xx+1 0 x -5&x 0&x -5&x 8)i f(x 0)y=x-l;e l s e i f(x=0)y=0:e l s e y=x+l;p r i n t f (,y=%f n/,,y);m ai n()f l oat x,y;s c an f&x);i f(x 0)y=x+l;e l s e i f(x=0)y=0;e l s e i f (x -5)y=x-l;p r i n t f (,y=%f nz,,y);使用多分支语句程序如下:m ai n ()(f l oat x,y;i n t m;p r i n t f(z,I n p ut x
27、:);s c an f (%f,&x);i f(x -5&x 8)i f(x 0)m=-l;e l s e i f(x=0)m=0:e l s e m=l;s wi t c h(m)(c as e -1:y=x-l;br e ak;c as e 0:y=0;br e ak;c as e 1:y=x+l;br e ak;)p r i n t f (y=%f n,y);以下为假设对i n t类型的变量进行处理,但毕竟不算完美m ai n()(i n t x,y;p r i n t f (I n p ut x:);s c an f (%d ,&x);s wi t c h(x)(c as e -4:c
28、 as e -3:c as e -2:c as e -1:y=x-l;br e ak;c as e 0:y=0;br e ak;c as e 1:c as e 2:c as e 3:c as e 4:c as e 5:c as e 6:c as e 7:y=x+l;br e ak;)p r i n t f(y=%d n”,y);)第五章循环结构程序设计一习题答案1输入n个整数,求 这n个数之中的偶数平均值,并输出。答m ai n()(i n t n,i,x,s um=0,c oun t=0;p r i n t f(,zI n p ut n:);s c an f (%d,&n);f or(i=0
29、;i =a&c h=z|c h=A&c h=,0&c h=,a&c h =A&c h=,Z)pr i nt f (枇“,c h+32);)g e t c h O ;5设某县2000年工业总产值为2 0 0亿元,如果该县预计平均年工业总产值增长率为4.5%,那么多少年后该县年工业总产值将超5 00亿元。答mai n()(f l o at x=200;i nt n=0;do(x*=(l+0.045);n+;w h i l e(x 500);pr i nt f(n=%d,n);g e t c h O ;6输出1-9 9 9中能被3整除,而且至少有一位数字是5的所有数字。答mai n()i nt x,
30、y,f l ag;f o r(x=l;x 1000;x+)(f l ag=0;y=x;i f (y%3=0)/*余数为0 说明该数能够被3 整除*/(w h i l e(y%10!=0)(i f (y%10=5)f l ag=l;/*依个位、十位、百位顺序判断是否余数为5*/y/=10;)i f (f l ag=l)pr i nt f C%dt/Z,x);g e t c h();)7求爱因斯坦数学题。有一条长阶,若每步跨2 阶,则最后剩1阶,若每步跨3阶,则最后剩2 阶,若每步跨5 阶,则最后剩4 阶每步跨6 阶,则最后剩5 阶每步跨7 阶,最后正好1阶。答mai n()(i nt x=0,f
31、 l ag=O;w h i l e (1)(x+;i f(x%2=l)i f(x%3=2)i f(x%5=4)i f(x%6=5)i f(x%7=0)(p rin tfx);br e ak;)g e t c h O ;8输入一个3位数,判断是否是一个“水仙花数”。水仙花数是指3位数的各位数字的立方和等于这个3位数本身。例如,153=1*1*1+5*5*5+3*3*3mai n()i nt x,a,b,c;pr i nt f (Inpu t nu mbe r:z z);s c anf&x);a=x/100;/*变量a中记录x的百位数字*/b=x/10%10;/*变量b中记录x的十位数字*/c=x
32、%10;/*变量c中记录x的个位数字*/i f(a*a*a+b*b*b+c*c*c=x)(pr i nt f (/,%d=%d*%d*%d+%d*%d*%d+%d*%d*%dn,/,x,a,a,a,b,b,b,c,c,c)pr i nt f CY ES);e l s epr i nt f(N O T);g e t c h O ;计算斐波那契分数序列前n项之和(n是某个常数,波那契分数序列为2/1,3/2,5/3,8/5,.)omai n()i nt i,n=10;f l o at f l=l,f 2=2,f,s u m=0;f o r(i=0;i n;i+)(s u m+=f 2/f l;f=
33、f l+f 2;f l=f 2;f 2=f;)pr i nt f (z/t o t al=%dns u m=%fz/,n,s u m);g e t c h O ;10输入一个正整数,各输出n行的正(倒)三角形宝塔图案。答mai n()(i nt n,i,j;pr i nt f (Inpu t n:);sca n f&n);f o r(i=0;i n;i+)(f o r (j=i+l ;j n;j+)pr i nt f (,/,?);f o r(j=0;j 2*i+l;j+)pr i nt f (*);pr i nt f (n);f o r(i=0;i n-l;i+)(f o r (j=0;j
34、i+l;j+)pr i nt f (z/z/);f o r(j=2*i-l;j n+l;j+)pr i nt f(*);pr i nt f C W);g e t c h O ;11输出九九乘法表。答mai n()(i nt i,j;f o r(i=l;i=9;i+)(f o r(j=l;j=i;j+)pr i nt f (,%d*%d=%-3d/,,j,i,i*j);pr i nt f C W);g e t c h O ;12输入一串字符,直到输入一个星号为止,统 计(输出)其中的正整数和负整数个数以及所有正整数的平均值和所有负整数的平均值。答S i nc l u de s t di o.h#
35、i nc l u dez,mat h.h mai n()(c h ar c h;i nt x=0,y=l,f=0,pc nt=0,nc nt=0;f l o at ps u m=0,ns u m=0;w h i l e (c h=g e t c h ar ()!=*)(i f (c h=,)i f(x!=0)(i f(f=l)(x=-x;ns u m+二 x;nc nt+;)e l s e(ps u m+=x;pc nt+;pr i nt f(%dn,x);f=l;x=0;y=l;c o nt i nu e;)e l s e i f (c h =O&c h =9)(x=10*x+c h-O;y
36、=10*y;i f(x!=0&10*x y)f=0;c o nt i nu e;e l s e(i f(x!=0)(i f(f=l)(x=-x;ns u m+=x;nc nt+;e l s e(ps u m+=x;pc nt+;)pr i nt f(%dn,x);)f=O;x=O;y=l;c o nt i nu e;)i f(x!=0)(i f(f=l)(x=-x;ns u m+=x;nc nt+;)e l s e(ps u m+=x;pc nt+;pr i nt f(%dn,x);pr i nt f Cn-n);pr i nt f(P l u s:n);pr i nt f(Co u nt 二
37、%dn,pe nt);pr i nt f (/zAv e r ag e=%f nz,,ps u m/pe nt);pr i nt f (,z-n);pr i nt f(N e g at i v e:n);pr i nt f (,Co u nt=%dn/,pe nt);pr i nt f (/zAv e r ag e=%f n,z,ns u m/ne nt);g e t c h O ;)13一个整数等于该数所有因子之和,则称该数是一个完数。例如,6 和 28都是完数。因为6=1+2+3,28=1+2+4+7+14。输出3 位数中所有的完数。答mai n()i nt k l,k 2,k 3,k 4
38、,k 5,k 6,k 7,k 8,k 9,k l O;i nt i,a,n,s;f o r (a=100;a=999;a+)(n=0;/*n累计因子的个数*/s =a;/*s存放未求出的因子之和,初值为被测数本身*/f o r (i =1;i 1)pr i nt f (%d,%d”,k l,k 2);/*n l 表示 a 至少有 2个因子*/i f (n 2)p ri n t f (%d k 3);/*注意以下i f的用法,追加的方 法*/i f (n 3)p ri n t fi f (n 4)p ri n t f(,%d ,i f (n 5)p ri n t f(,%d ,i f (n 6)
39、p ri n t f (,%d”,i f (n 7)p ri n t fi f (n 8)p ri n t f(,%d ,i f (n 9)p ri n t f (,%d”,k 4);k 5);k 6);k 7);k 8);k 9);k l O):p ri n t f (n );g e t c h O;1 4编写程序按下列公式计算e的值(精度为l e-6)。e=l+l/l!+l/2!+l/3!.+l/n!答m a i n()(i n t i;d o u b l e e=0,t=l;f o r(i=l;t 0.000001;i+)(f o r(j=l;j =i;j+)t*=j;t=l/t;e+=
40、t;p ri n t f (,/e=%f nz,,e);g e t c h O;)1 5用二分法求方程2x 3-4x 2+3x=0在(TO,1 0)附近的根(二分法:先找到a、b,使f(a)、f(b)异号,说明在区间(a,b)内一定有零点,然后求f(a+b)/2,现在假设 f(a)0,a b,如果 f(a+b)2=0,该点就是零点,如果 f (a+b)/2 0,则在区间(a+b)/2,b)内有零点,按上述方法再求该区间中点的函数值,通过每次把f(x)的零点所有小区间收缩一半的方法,使区间的两个端点逐步迫近函数的零点,以求得零点的近似值,该值即是方程的根)。答#i n c l u d e m a
41、 t h.h m a i n()(d o u b l e x,f x,f a,f b,a=-1 0,b=1 0,z=0.0001;f a=2*a*a*a-4*a*a+3*a;f b=2*b*b*b-4*b*b+3*b;i f(f a*f b 0)(d o(x=(a+b)/2;f x=2*x*x*x-4*x*x+3*x;i f(f x z);p ri n t f(Th e ro o t i s:%l f n,x);)g e t c h O;第六章 函数与编译预处理一习题答案写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。答m a i n
42、 ()(u n s i g n e d i n t m,n,p,q;f o r(;)(p ri n t f (m,n=);s c a n f (d,%d ,&m,&n);i f (m 01|n n)i=m;m=n;n=i;f o r(i=m;i 0;i-)i f(m%i=0&n%i=0)re t u rn(i);)i n t f u n q(i n t m,i n t n)i n t i;i f(m n)i=m;m=n;n=i;f o r(i=m;i 47&c =A&c=Z|c =a&c =A&c h|c h=,a&c h 47&c h 58)re t u rn 2;re t u rn 3;)
43、按照 第5章 第8题的要求编写判断水仙花数的函数,从主函数输入正整数n,在主函数中调用判断水仙花数的函数,找 出n以内所有的水仙花数。【输入一个3位数,判断是否是一个“水仙花数”。水仙花数是指3位数的各位数字的立方和等于这个3位数本身。例如,1 53=1*1*1+5*5*5+3*3*3m a i n()(i n t x,i,f;p ri n t f (In p u t n u m b e r:,z);s c a n f&x);f o r(i=0;i =x;i+)(f=0;f=f u n(i);i f (f=l)p ri n t f C%d t i):g e t c h O;)i n t f u
44、 n(i n t x)(i n t a,b,c;a=x/1 00;b=x/1 0%1 0;c=x%1 0;i f(a*a*a+b*b*b+c*c*c=x)re t u rn 1;e l s e re t u rn 0;)4定义一个宏,实现将两个数互换,并写出程序,输入两个数作为使用参数,并显示结果。#d e f i n e f (a,b)(a=a+b,b=a-b,a=a-b)m a i n()(i n t x,y;p ri n t f(In p u t x,y:);s c a n f (%d,%d,&x,&y);p ri n t f (%d,%d,x,y);f (x,y);p ri n t f
45、 (一%d,%d n,x,y);g e t c h O;已知二阶Fi b o n a c c i数列:0Fi b(n)=1Fi b(n-l)+Fi b(n-2)定义递归函数求Fi b(n)onn它若若火m a i n ()(i n t i,n;p ri n t f (In p u t n:);s c a n f(%d,&n);f o r(i=0;i=n;i+)p ri n t f(d t”,f i b (i);g e t c h O;)i n t f i b(i n t n)(i f(n=0)re t u rn 0;e l s e i f(n=l)re t u rn 1;e l s e re
46、t u rn (f i b(n-l)+f i b(n-2);6定义函数求F=(n+m)!+n!,m、n均为任意正整数。要求使用递归调用。l o n g i n t f(i n t x);m a i n ()i n t i,m,n;l o n g i n t s u m;p ri n t f (,zIn p u t m,n:);s c a n f (z/%d,%d ,&m,&n);s u m=f(n+m)+f (n);p ri n t f (“断d ,s u m);g e t c h O;l o n g i n t f(i n t x)(i n t i,j;i f(x=0|x=l)re t u
47、rn 1;e l s e re t u rn(x*f(x-l);)7定义一个函数完成第5 章第11题的功能。【输出九九乘法表。】答m a in()(fu n 0 ;get chO ;)fu n()(in t i,j;fo r(i=l;i=9;i+)(fo r(j=l;j =i;j+)p r in t f(,%d*%d=%-3d,/,j,i,i*j);p r in t f(n);8如果有两个数,每-个数的所有约数(除了它本身以外)的和正好等于对方,则称这两个数为互满数,求出30000以内所有的互满数,并显示输出,求一个数它的所有约数(除了它本身以处)的和,用函数实现。答m a in ()in t
48、 x,y;fo r(x=l;x 30000;x+)fo r(y=l;y x;y+)(if(fa cs u m(x)=y&,&fa cs u m(y)=x)p r in t f(z,(%d,%d)t”,x,y);)get chO ;)fa cs u m(in t n)(in t i,s u m=0;fo r(i=l;i n;i+)(if(n%i=0)s u m+=i;)r et u r n s u m;)9编写以下函数:输入职工的姓名和职工号;按职工号由小到大排序,姓名顺序也随之调整;输入一个职工号,找出该职工的姓名。在主函数中调用这些函数。答10设计程序完成下列计算。已 经:y=f(x,n)/
49、(f(x+2.3,n)+f(x-3.2,n+3)其中:f(x,n)=l-x 2/2!+x 4/4-.+(-1)n x 2n/(2n)!(n 20)当:x=5.6,n=7 时,求:y要求通过嵌套调用完成计算。答S in cl u de fl o a t f(fl o a t x,in t n);fl o a t fl(fl o a t x,in t m);fl o a t f2(in t m);m a in()fl o a t x=5.6,y;in t n=7,i;y=l+f(x,n)/(f(x+2.3,n)+f(x-3.2,n+3);p r in t f(z,y=%f n nz,,y);)fl
50、 o a t f(fl o a t x,in t n)(fl o a t s u m=0.0;in t i;fo r(i=l;i=n;i+)(s u m+=f 1(-1,i)*fl(x,2*i)/f2(2*i);r et u r n s u m;)fl o a t fl(fl o a t x,in t m)(in t i;fl o a t y=l.0;fo r (i=l;i=m;i+)(y*二x;)r et u r n y;)fl o a t f2(in t m)(in t i;fl o a t y=l;fo r (i=l;i 0C.in t a 5=0,0,0,0,0 D.in ta 5 =