《C语言程序设计教程(第2版)杨路明课后习题答案.pdf》由会员分享,可在线阅读,更多相关《C语言程序设计教程(第2版)杨路明课后习题答案.pdf(52页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第 一 章C语言程序设计概述一习题答案1算法的描述有哪些基本方法?答1、自然语言2、专用工具2C语言程序的基本结构是怎样的?举一个例子说明。答:、C语言程序由函数构成;2、“/*”与“*/”之间的内容构成C语言程序的注释部分;3、用预处理命令#in c lu d e、#d e f in e可以包含有关文件或预定义信息;4、大小写字母在C语言中是有区别的;5、除m a in。函数和标准库函数外,用户也可以自己编写函数,应用程序一般由多个函数组成,这些函数指定实际所需要做的工作。3C语言有什么特点?答;、具有结构语言的特点,程序之间很容易实现段的共享;2、主要结构成分为函数,函数可以在程序中被定义
2、完成独立的任务,独立地编译代码,以实现程序的模块化;3、运算符丰富,包含的范围很广;4、数据类型丰富;5、允许直接访问物理地址,即可直接对硬件进行损伤,实现汇编语言的大部分功能;6、限制不太严格,程序设计自由度大,这样使C语言能够减少对程序员的束缚;7、生成的目标代码质量,程序执行效率高,同时C语言编写的程序的可移植性好。4指出合法与不合法的标识符命名。答A B 1 2 Vle e d _3 a*b 2 X 8s t u X D.K.Jo n X E F 3 _3 V PA S V if XX Y Z 4 3 K2 V A V E t t X Y X _762 V#_D T 5 X C.D X
3、说明下列T u r b o C 热键的功能。答F 2:源 文 件 存 盘 F 1 0:调 用 主 菜 单 F 4:程序运行到光标所在行(用于调试程序)Ct r l+F9:编译并链接成可执行文件Alt+F5:将窗口切换到D O S 下,查看程序运行结果。说明下列Tu r b o C 方式下输入并运行下列程序,记录下运行结果。m a i n。p r i n t f(*n);p r i n t f(,z w elc o m e y o u n);p r i n t f(,z v er y g o o d n);p r i n t f(*n);)m a i n。i n t a,b,c,t;p r i
4、n t f(,zp lea s e i n p u t t h r ee n u m b er s;,z);s c a n f(%d,%d,%d,&a,&b,&c);/*教材 S 是错误的*/t=m a x(m a x(a,b),c);p r i n t f(,zm a x n u m b er i s:%dn ,t);)i n t m a x(i n t x,i n t y)i n t z;i f(x y)z=x;els e z=y;r et u r n (z);答飞行结果:w elc o m e y o uv er y g o o d运行结果:p lea s e i n p u t t h
5、 r ee n u m b er s;3,1,4 /*左侧下划线内容为键盘输入*/m a x n u m b er i s:4一个C 程序是由若干个函数构成的,其中有且只能有一个 函数。答main()8在Turbo C环境下进行程序调试时,可以使用Run下拉菜单的 命令或按键转到用户屏幕查看程序运行结果。答1、User screen2、Alt+F59 C语言对标识符与关键字有些什么规定?答;、标识符用来表示函数、类型及变量的名称,它是由字母、下划线和数字组成,但必须用字母或下划线开头。2、关键字是一种语言中规定具有特定含义的标识符,其不能作为变量或函数名来使用,用户只能根据系统的规定使用它们。
6、10C源程序输入后是如何进行保存的?答是以c为扩展名保存的纯文本文件。第 二 章C语言程序的基本数据类型与表达式一习题答案1指出下列常数中哪些是符合C语法规定的。答 -X 101,X -X e3-X 019 V Oxle-Vabn”J 1.e5X(2+3)e(4-2)X 5.2e2.5X2请找出下列程序中的错误,改正后写出程序运行结果。v o i d m a i n()i n t x,y=z=5,a v er;x=7AVER=(x+y+z)/3p r i n t f(AVER=%dn,a v er);)v o i d m a i n()c h a r c l=,a;c 2=b ;c 3=c;i
7、 n t a=3.5,b=,Ap r i n t f(,a=%db=,en dn,a,b);p r i n t f(,za%c b%c b c%c t a b c n,z,c l,c 2,c 3);)答m a i n()i n t x,y=5,z=5,a v er;x=7;a v er=(x+y+z)/3;p r i n t f(/,AVER=%dn/,a v er);)运行结果:AVER=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(z/a=%d,b=,枇 en dr T,a,b);p r i n t
8、 f(z/a%c b%c b c%c t a b c nz,,c l,c 2,c 3);)运行结果:a=3,b=Aen da a b c c a b c写出卜列赋值的结果,表格中写了数值的是要将它赋给其他类型的变量,将所有的空格填上赋值后的数据(实数保留到小数点后两位)。i n t99-1c h a rh u n s i g n ed66flo a t55.78lo n g i n t68答i n t991 0 4665568-1c h a rintch B,T,Du n s i g n ed i n t991 0 46655686553 5flo a t99.0 01 0 4.0 066.0
9、 055.7868.0 0-1.0 0lo n g i n t991 0 4665568-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 (z,%d,%d,%d,%d n,i,j,+i,j+);)m ai n。i n t a=l,b=2,c=3 0;p r i n t f (z,%d,%d,%d,%d n,a=b=c,a=b=c,a=(b=c),a=(b=c);注 意:a=b二c,a=b=c之 间 应 为 逗 号,教材有误答工 行 结 果:9,11,9,10运 行 结 果:30,1,0,0(3)void main()int
10、a=10,b=20,c=30,d;d=+a=20|c+;p rin tf(z,%d,%d,%d,%dn,a,b,c,d);答 运行结果:11,19,30,15 写 出 下 面 表 达 式 的 值(设a=10,b=4,c=5,d=l,x=2.5,y=3.5)。a%=(b%=3)(2)n+,a+=a-=a*=a(3)(float)(a+c)/2+(int)x%(int)y(4)a*=b+c+a-c+b+(6)+a-c+bA(8)b+=c(9)a+b,18+(b=4)*3,(a/b,a%b)x+a%3*(int)(x+y)%2/4+sizeof(int)(ll)ab?a:c(b c?b:c)?a:(
11、b c?b:c);9若x为 i n t 型变量,则执行以下语句后x的 值 为()。x=6;x+=x-=x*x;A.3 6 B.-6 0 C.6 0 D.-2 4答B.1 0若有以下类型说明语句:ch ar w;i n t x;f l o at y;do u b l e z;则表达式w*x+z-y 的结果为()类型。A.f l o at B.ch ar C.i n t D.do u b l e答D.第 三 章 顺序结构程序设计一习题答案1变量k为f l o at 类型,调用函数s can f(%d”,&k),不能使变量k得到正确数值的原因是 o答格式修饰符与变量类型不一致。因为%d 输入的数据类
12、型应该为十进制整数,而&k 为占用4 个字节的f l o at 类型变量的地址。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为左对齐输出变量,在输出变量时,如是变量实际位数小于3,则在右端补空格,否则按实际输出。3设有 i nt a=2 5 5,b=8;,则 p r i nt f (%x,%
13、o n”,a,b);”输出是。答f f,1 0如果 p r i nt f(%X,%o n”,a,b);”则输出为FF,1 0。说明在输出十六进制字母时,其大小写受格式修饰符的限制,如果是 吃x”则输出小写,如果是“蛛”则输出大写。如果希望在输出十六进制时输出前导符Ox 或0 X,则以上输出语句应改“p r i nt f (%#x,%o n/z,a,b);为或 p r i nt f (%#X,%o n”,a,b);。本条解释不必须掌握。4以下程序输出的结果是 oma i n()(i nt a l=l,a 2=0,a 3=2;p r i nt f (%d,%d,%dnz,,a l,a l+a 2+
14、a 3,a 3-a l);)答1,3,15p r i nt f函数中用到格式符舫s,其中5表示输出字符占用5歹U。如果字符串长度大于5,则按 输出;如果字符串长度小于5,则按 输出。答P 实 际 左端补空格6已定义变量如下:i nt a l,a 2;c h a r c l,c 2;若要求输入a l、a 2、c l和c 2的值,正 确 的 输 入 函 数 调 用 语 句 是。答s c a nf (刎,%d,%c,%c”,&a l,&a 2,&c l,&c 2);7输入两个整型变量a、b的值,输出下列算式以及运算结果 oa+b、a-b a*b、a/b、(f lo a t)a/b、a%b每个算式占一
15、行。如a=1 0,b=5,a+b输出为:1 0+5=1 5答设i nt a=1 0,b=5;以下为输出语句及结果:p r i nt f(%d+%d=%dn”,a,b,a+b);1 0+5=1 5p r i nt f (%dT d=%dn”,a,b,a-b);1 0-5=5p r i nt f(%d*%d=%dn”,a,b,a*b);1 0*5=5 0p r i nt f (/%d/%d=%dn,/,a,b,a/b);1 0/5=2p r i nt f (线(f lo a t)d/%d=%f n”,a,b,(f lo a t)a/b);(f lo a t)1 0/5=2.0 0 0 0 00p
16、r i nt f (z/%d%d=%dn,z,a,b,a%b);1 0%5=0输入一个非负数,计算以这个数为半径的圆周长和面积。答#de f i ne PI 3.1 4 1 5 92 6ma i n()(f lo a t r,1,a r e a;p r i nt f (z zInp u t a p o s i t i v e/);s c a nf (/f ,&r);l=2*PI*r;a r e a=PI*r*r;p r i nt f (l=%f t a r e a=%f n,1,a r e a);输入任意一个3 位数,将其各位数字反序输出(例如输入1 2 3,输 出 3 2 1)。答ma i
17、n()(i nt x,y;p r i nt f (/zInp u t a nu mb e r(1 0 0-999):z,);s c a nf (%d,&x);y=1 0 0*(x%1 0)+1 0*(x/1 0%1 0)+x/1 0 0;/*注意分析此处算法*/p r i nt f (%d-%dn,x,y);)1 0输入任意大小的3 个整数,判断其中是否有两个奇数一个偶数。若是则输出Y ES,不 是 则 输 出 N OT (要求用条件表达式进行判断,不 使 用i f 语 句)。答ma i n()(i nt x,y,z,o ddc o u nt=0;/*奇数数计数变量*/p r i nt f (
18、Inp u t x,y,z:);s c a nf (%d,%d,%d,&x,&y,&z);x%2=l?o ddc o u nt+:0;y%2=l?o ddc o u nt+:0;z%2=l?o ddc o u nt+:0;o ddc o u nt=2?p r i nt f (,Y ES,/):p r i nt f (N OT );)1 1求前驱字符和后继字符。输入一个字符,找出它的前驱字符和后继字符,并按AS CII码值,按从大到小的顺序输出这3个字符及其对应的AS CII码值。答黑题考查同学们对字符类型数据的认识,如果在A S C H 范围内则即可以显示为字符,又可以显示为整数值;无论是否能
19、够显示为字符,字符类型数据是可能参与数值运算的,切记。m ai n()(c h ar c;p r i n tf (/z I n p ut c h ar ac te r:z,);s c an f (c ,&c);p r i n tf (,z%c-%d n,z,c-l,c-l);p r i n tf C%c-%d nz/,c,c);p r i n tf (,z%c-%d nz/,c +1,c+1);g e tc h O ;/*为便于调试程序,运行至此程序停顿,此时可以看到运行结果,按任意键程序真难得结束并返回到编辑环境*/)1 2输入三角形的边长,求三角形 面 积(面 积=s q r t(s (s
20、-a)(s-b)(s-c),s=(a+b+c)/2)。答#i n c l ud ez,m ath.hz,/*由于程序中使用了开平方函数s q r t(),所以需要包含数学头文件*/m ai n()(f l o at a,b,c,s,ar e a;i n t o k=0;p r i n tf (z/I n p ut a,b,c:);s c an f%f,%fz/,&a,&b,&c);a+b c?o k+:0;/*以下3条语句为判断是否输入的数据是否构成封闭三角形*/a+c b?o k+:0;b+c a?o k+:0;o k=3?(s=(a+b+c)/2,ar e a=s q r t(s*(s-a
21、)*(s-b)*(s-c),p r i n tf(ar e a二,ar e a):p r i n tf(e r r o r);g e tc h O ;第四章选择结构程序设计一习题答案1设X、t均为int型变量,则执行语句“x=10;t=x&x10;”后,t的值为答02假定所有变量均已正确定义,则程序段:int a=0,y=10;if(a=O)y;else if(aO)y+;else y+=y;运行后y的值是;答203能表 述20 x30或x20&x30|+x-1004若有定义语句int a=25,b=14,c=19;”,则以下语句执行结果是if(a=25&b=2&c)printf(*a+b=%
22、d,a-b=%d*n,a+b,a-b);else printf(z/*a=%d,b=%d,c=*d*n,a,b,c);答*a=25,b=14,c=19*5假定i和j为i n t型变量,则执行以下语句后i的值是 oint i=l;switch(i)(case 1:for(j=0;j9;j+)i+=j;break;case 2:for(j=l;j10;j+)i+=j;break;c as e 3:i+;)答3 7分析:执行了 c as e 1:和 c as e 3:中的代码。同时c as e 1:语 句 中 的 是可以取消的。6以下 两 条 if语句可合并成一条if语句,即。i f(a b)p r
23、 i n tf(*y=%d n”,y);e l s e p r i n tf 二%d n ,x);答i f(a l)p r i n tf(o uts i d e);e l s e i f(d 0)。i f (a 30)m=1;e l se i f(a 40)m=2;e l se i f(a 50)m=3;e l se i f(a 60)m=4;e l se m=5sw i t c h(a/10)(c a se 1:c a se 2:c a se 3:m=l;b r e a k;c a se 4b r e a k;c a se 5:m=3;b r e a k;c a se 6:m=4;b r e
24、 a k;d e f a u l t:m=5;)12有一函数x-l -5 x 0y=x x=0 x+1 0 x-5&x 0&x-5&x 8)i f(x 0)y=x-l;e l se i f(x=0)y=0:e l se y=x+l;p r i n t f(,zy=%f nz/,y);m a i n()f l o a t x,y;sc a n f&x);i f(x 0)y=x+l;e l se i f (x=0)y=0;e l se i f(x-5)y=x-l;p r i n t f C y=%f n ,y);)使用多分支语句程序如下:m a i n()(f l o a t x,y;i n t
25、m;p r i n t f(I n p u t x:);sc a n f&x);i f(x-5&x 8)i f(x 0)m=-l;e l se i f (x=0)m=0:e l se m=l;sw i t c h(m)(c a se -1:y=x-l;b r e a k;c a se 0:y=0;b r e a k;c a se 1:y=x+l;b r e a k;)p r i n t f (尸f n,y);)以下为假设对i n t类型的变量进行处理,但毕竟不算完美m a i n()i n t x,y;p r i n t f (/zI n p u t x:);sc a n f(%d ,&x);
26、sw i t c h(x)p r i n t f(y=%d n”,y);c a se-4:c a se-3:c a se-2:c a se-1:y=x-l;b r e a k;c a se 0:y=0;b r e a k;c a se 1:c a se2:c a se3:c a se4:c a se5:c a se6:c a se 7:y=x+l;b r e a k;第五章循环结构程序设计一习题答案1 输 入 n个整数,求 这 n个数之中的偶数平均值,并输出。答m a i n ()(i n t n,i,x,su m=O,c o u n t=0;p r i n t f(I n p u t n:)
27、;sc a n f&n);f o r(i=0;i=,a&c h=,A,&c h=,O&c h=,a&c h-A&c h=,Z )printfch+3 2);)g e t c h O ;)5设某县2000年工业总产值为200亿元,如果该县预计平均年工业总产值增长率为 4.5%,那么多少年后该县年工业总产值将超500亿元。答m a i n ()f l o a t x=200;i n t n=0;d o(x*=(1+0.045);n+;w h i l e(x 500);p r i n t f (n=/d ,n):g e t c h O ;)6输出1-9 9 9 中能被3 整除,而且至少有一位数字是5
28、 的所有数字。答m a i n ()(i n t x,y,f l a g;f o r (x=l;x 1000;x+)(f l a g=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 a g=l;/*依个位、十位、百位顺序判断是否余数 为5*/y/=10;i f (f l a g=l)p r i n t f (/%d t/,x);)g e t c h O ;)7求爱因斯坦数学题。有一条长阶,若每步跨2阶,则最后剩1阶,若每步跨3阶,则最后剩2阶,若每步跨5阶,则最后剩4阶每步跨6阶,则最后剩5阶每步跨7阶
29、,最后正好1阶。答m a i n ()i n t x=0,f l a g=0;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 r i n t f (d ,x);b r e a k;)g e t c h O ;)8输入一个3位数,判断是否是一个“水仙花数”。水仙花数是指3位数的各位数字的立方和等于这个3位数本身。例如,153=1*1*1+5*5*5+3*3*3答m a i n()i n t x,a,b,c;p r i n t f (I n p u t n u m b e r/);sc a n f (d,&x
30、);a=x/100;/*变量a中记录x的百位数字*/b=x/10%10;/*变量b中记录x的十位数字*/c=x%10;/*变 量c中记录x的个位数字*/i f(a*a*a+b*b*b+c*c*c=x)(p r i n t f (z,%d=%d*%d*%d+%d*%d*%d+%d*%d*%d nz/,x,a,a,a,b,b,b,c,c,c);p r i n t f(YE S);p r i n t f(N O T);g e t c h();计算斐波那契分数序列前n项 之 和(n是某个常数,波那契分数序列为2/1,3/2,5/3,8/5,.)o答m a i n ()i n t i,n=10;f l
31、o a t f 1=1,f 2=2,f,su m=0;f o r(i=0;i n;i+)(su m+=f 2/f 1;f=f l+f 2;f l=f 2;f 2=f;p r i n t f Czt o t a l=z%d n su m=%f,z,n,su m);g e t c h ();输入一个正整数,各输出n行 的 正(倒)三角形宝塔图案。答m ai n()i n t n,i,j;p r i n t f I n p u t n:);s can f&n);f o r(i=0;i n;i+)f o r (j=i+l;jn;j+)p r i n t f (/z);f o r(j=0;j 2*i+l
32、;j+)p r i n t f(*);p r i n t f(n);)f o r(i=0;i n-l;i+)(f o r (j=O;ji+l;j+)p r i n t f (,z/z);f o r(j=2*i-l;jn+l;j+)p r i n t f(*);p r i n t f (r T);)get ch();)11输出九九乘法表。答m ai n ()(i n t i,j;f o r(i=l;i=9;i+)(f o r(j=l;j=O&ch 二9 )(x=10*x+chO ;y=10*y;i f (x!=0&10*x y)f=0;co n t i n u e;els e(i f(x!=0)
33、(i f(f=l)(X=-X ;n s u m+=x;n cn t+;)els e(p s u m+二x;p cn t+;)p r i n t f(dn,x);)f=O;x=O;y=l;co n t i n u e;)i f(x!=0)(i f(f=l)(x=-x;n s u m+=x;n cn t+;)els e(p s u m+=x;p cn t+;)p r i n t f(%dn ,x);)p r i n t f (n-n);p r i n t f(P lu s:n);p r i n t f(C o u n t 二%dn ,p en t);p r i n t f (z,A v er ag
34、e=%f n,z,p s u m/p en t);p r i n t f (-n);p r i n t f(N egat i v e:n);p r i n t f CzC o u n t=%dn,z,p en t);p r i n t f (z/A v er age=%f nz/,n s u m/n en t);get ch0;)13一个整数等于该数所有因子之和,则称该数是一个完数。例如,6和 2 8 都是完数。因为6 =1+2+3,28 =1+2+4+7+14。输 出 3 位数中所有的完数。答m ai n()(i n t kl,k2,k3,k4,k5,k6,k7,k8,k9,klO;i n
35、t i,a,n,s;f o r (a=100;a=9 9 9;a+)(n =0;/*n累计因子的个数*/s=a;/*s 存放未求出的因子之和,初值为被测数本身*/f o r (i =1;i 1)p r i n t f (%d,%d”,kl,k2);/*n l 表示 a 至少有 2个 因 子*/i f (n 2)p r i n t f (,%d,k3);/*注意以下i f的用法,追加的方 法*/i f (n 3)p r i n t f(,%d,i f (n 4)p r i n t f(,%d”,i f (n 5)p r i n t f (,%d,i f (n 6)p r i n t f(,%d”
36、,i f (n 7)p r i n t f (,%d”,i f (n 8)p r i n t f (,%d”,i f (n 9)p r i n t f (%dk4);k5);k6);k7);k8);k9);klO);p r i n t f(n);)get ch();14编写程序按下列公式计算e的 值(精 度 为l e-6)。e=l+l/l!+l/2!+l/3!.+l/n!答m ai n ()(i n t i;do u ble 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+=t;)p r i n t f (/e=%
37、f n/,e);get ch();)15用二分法求方程2x 3-4 x 2+3 x=0在(T O,10)附近的根(二分法:先找到a、b,使f(a)、f(b)异 号,说明在区间(a,b)内一定有零点,然后求f(a+b)/2,现在假设 f(a)0,ab,如果 f(a+b)2=0,该点就是零点,如果 f (a+b)/20,则在区间(a+b)/2,b)内有零点,按上述方法再求该区间中点的函数值,通过每次把f(x)的零点所有小区间收缩一半的方法,使区间的两个端点逐步迫近函数的零点,以求得零点的近似值,该值即是方程的根)。答#i n clu dem at h.hm ai n ()(do u ble x,f
38、 x,f a,f b,a=T 0,b=10,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 b0)dox=(a+b)/2;f x=2*x*x*x-4*x*x+3*x;i f (f x z);p r i n t f (/T he r o o t i s x);)get chO ;第六章函数与编译预处理一习题答案1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。答m ai n ()(u n s i gn ed i n t m,n,p,q;f o r(;)p r
39、i n t f(m,n=);s can f(%d,%d”,&m,&n);i f(m 0|n n)i=m;m=n;n=i;f o r(i=m;i 0;i )i f(m%i=0&n%i=0)r et u r n(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=a&c=A&ch=,a&ch47&ch58)return 2;return 3;3按照 第 5章第8题的要求编写判断水仙花数的函数,从主函数输入正整数n,在主函数中调用判断水仙花数的函数,找 出n 以内所有的水仙花数。【输
40、入一个3 位数,判断是否是一个“水仙花数”。水仙花数是指3位数的各位数字的立方和等于这个3位数本身。例如,1 5 3=1*1*1+5*5*5+3*3*3 答main()(int x,i,f;print f(/zI npu t nu mber:);s c a n f&x);for(i=0;i=x;i+)(f=0;f=fu n(i);if(f=l)print f(%dt”,i);)get chO;)int fu n(int x)int a,b,c;a=x/1 0 0;b=x/1 0%1 0;c=x%1 0;if(a*a*a+b*b*b+c*c*c=x)ret u rn 1;else ret u r
41、n 0;)4定义一个宏,实现将两个数互换,并写出程序,输入两个数作为使用参数,并显示结果。答#define f(a,b)(a=a+b,b=a-b,a=a-b)main()(int x,y;print f(/zI npu t x,y:);scanf(z/%d,%d”,&x,&y);print f(%d,%d”,x,y);f(x,y);print f(%d,%dn,x,y);get chO;)5已知二阶F ibonacci数列:0若 n=0F ib(n)=1 若 n=lF ib(n-1)+F ib(n-2)其它情况定义递归函数求F ib(n)o答main()(int i,n;print f(,zI
42、 npu t n:);scanf(%d,&n);for(i=0;i=n;i+)print f(%dt,fib(i);get ch();)int fib(int n)(if(n=0)ret u rn 0;else if(n=l)ret u rn 1;else ret u rn(fib(n-l)+fib(n-2);6定义函数求F=(n+m)!+n!,m、n均为任意正整数。要求使用递归调用。答long int f(int x);main()(int i,m,n;long int su m;print f(,zI npu t 叫 n:);scanf(d,%d,&m,&n);su m=f(n+m)+f(
43、n);print f(z/%ldz/,su m);get chO;)long int f(int x)int i,j;if(x=O|x=l)ret u rn 1;else ret u rn(x*f(x-l);)7定义一个函数完成第5章 第1 1题的功能。【输出九九乘法表。】答main()fu n();get chO;)fu n()int i,j;for(i=l;i=9;i+)(for(j=l;j=i;j+)print f(/%d*%d=%-3 d,/,j,i,i*j);print f(rT);)8如果有两个数,每一个数的所有约数(除了它本身以外)的和正好等于对方,则称这两个数为互满数,求 出3
44、 0 0 0 0以内所有的互满数,并显示输出,求一个数它的所有约数(除了它本身以处)的和,用函数实现。答main()(int x,y;for(x=l;x 3 0 0 0 0;x+)(for(y=l;y x;y+)(if(facsu m(x)=y&facsu m(y)=x)print f C(%d,%d)t/z,x,y);get ch();facsu m(int n)(int i,su m=O;for(i=l;i n;i+)(if(n%i=0)su m+=i;)ret u rn su m;)编写以下函数:输入职工的姓名前职工号;按职工号由小到大排序,姓名顺序也随之调整;输入一个职工号,找出该职工
45、的姓名。在主函数中调用这些函数。答1 0设计程序完成下列计算。已 经:y=f(x,n)/(f(x+2.3,n)+f(x-3.2,n+3)其中:f(x,n)=l-x 2/2!+x 4/4 .+(-l)n x 2 n/(2 n)!(n2 0)当:x=5.6,n=7 时,求:y要求通过嵌套调用完成计算。答#inclu de float f(float x,int n);float fl(float x,int m);float f2(int m);main()(float x=5.6,y;int n=7,i;y=l+f(x,n)/(f(x+2.3,n)+f(x-3.2,n+3);print f(y=
46、%fnn,y);float f(float x,int n)float su m=0.0;int i;for(i=l;i=n;i+)(su m+=fl(-l,i)*fl(x,2*i)/f2(2*i);)ret u rn su m;)float fl(float x,int m)(int i;float y=l.0;for(i=l;i=m;i+)(y*=x;)ret u rn y;)float f2(int m)(int i;float y=l;for(i=l;i=m;i+)(y*=i;)ret u rn y;第 七 章 数 组习题答案1以下各题中,选择一个正确的答案。1、能正确对一维数组a 中
47、所有元素进行初始化的是()。A.int a5 =B.int a =0 C.int a5=0,0,0,0,0 D.inta5=0 2、有 说 明 int k=3,a1 0;则下列可以正确引用数组元素的表达式是()。A.ak B.a1 0 C.al,3 D.a3*5 3、有定义 int d3 =l,2,3,4,5,6 ;执行语句 print f(%c,dl 0+A );结果是()。A.A B.B C.D D.E4、有定义 char c=A ,ch2 0 =,a ,b ,c,0 ,d,0 ;若执行print f(,z%sz,,ch);结果是()。A.abc B.abc C.abed D.abc0 d
48、5、对 数 组 进 行 初 始 化charcarr =s,t ,u ,d,e,n,t ,barr=st u dent;则正确的是()oA.c a r r与b a r r长度相同 B.c a r r比b a r r长C.c a r r 与 b a r r 相同 D.c a r r 比b a r r 短答1、BD 2、A 3、D 4、B 5、D2阅读下列程序,写出程序的执行结果。1、#in c lu d e t t in c lu d e v o id m a i n()(in t i,j,t e m p,d 4 4 =1,2,3,4,5,6,7,8,4,3,2,1,1,2,3,4 ;f o r(
49、i=0;i4;i+)f o r(j=0;jd j i)d j i=d i j;f o r(i=0;i4;i+)(p r in t f (n);f o r(j=0;j=i)p r in t f (,z%6dz z,d i j);e ls e p r in t f(/z%cz,,)2、若输入十进制数3 291时,下列程序输出为:t t in c lu d e v o id m a i n()(in t i,d,m,n;c ha r s 8;s c a n f(%d,&n);i=o;A i是用来存放转换后的数组元素下标*/d o(m=n/8;d=n%8;s i=O+d;i+;n=m;w hile(n
50、!=O);f o r (i-;i=0;i)p u t c ha r (s Li);/*反向输出字符*/答1、15 4 46 7 82 342、63333程序填空。在 处填写合适的语句,完善下列程序:1、从键盘输入一个数,将其插入到一个升序数组中,保持数组仍然按升序排列。S in c lu d e v o id m a in()(in t d a t a,t e m p,k;s t a t ic in t a 9=-10,2,4,8,10,15,25,50);p r in t f(/z n En t e r a d a t a:);s c a n f (“/d ,f e d a t a);_ _