《C语言程序设计教程(第2版)杨路明课后习题答案2.pdf》由会员分享,可在线阅读,更多相关《C语言程序设计教程(第2版)杨路明课后习题答案2.pdf(52页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第 一 章 C 语言程序设计概述一习题答案1算法的描述有哪些基本方法?答1、自然语言2、专用工具2C 语言程序的基本结构是怎样的?举一个例子说明。答1、C 语言程序由函数构成;2、“/*”与“*/”之间的内容构成C 语言程序的注释部分;3、用预处理命令#in c l u 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 B1 2 Vl e 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#X Y X _ 762 V#_ D
3、 T 5X C.D X5说明下列T u r b o C热键的功能。答F 2:源文件存盘F 1 0:调用主菜单F 4:程序运行到光标所在行(用于调试程序)Ct r l+F9:编译并链接成可执行文件A lt+F5:将窗口切换到D O S下,查看程序运行结果。6说明下列Tu r b o C方式下输入并运行下列程序,记录下运行结果。ma in()p r int f(*n);p r int f C w e lc o me y o u n);p r int f(,z v e r y go o d n);p r int f(*n);)ma in。int a,b,c,t;p r int f(z,p le a
4、s e inp u t t hr e e nu mb e r s;);s c a nf(%d,%d,%d,&a,&b,&c);/*教材 S 是错误的*/t=ma x(ma x(a,b),c);p r int f(z,ma x nu mb e r is:%d nz,,t);int ma x(int x,int y)int z;if(x y)z=x;e ls e z=y;r e t u r n(z);)答运行结果:w e lc o me y o uv e r y go o d运行结果:p le a s e inp u t t hr e e nu mb e r s;3,1,4 /*左侧下划线内容为键
5、盘输入*/ma x nu mb e r is:47一个C程序是由若干个函数构成的,其中有且只能有一个_函数。答main()8在 Turbo C环境下进行程序调试时,可以使用Run下拉菜单的 命令或按键转到用户屏幕查看程序运行结果。答1、User screen2、Alt+F59 C语言对标识符与关键字有些什么规定?答1、标识符用来表示函数、类型及变量的名称,它是由字母、下划线和数字组成,但必须用字母或下划线开头。2、关键字是一种语言中规定具有特定含义的标识符,其不能作为变量或函数名来使用,用户只能根据系统的规定使用它们。10C源程序输入后是如何进行保存的?答是以c 为扩展名保存的纯文本文件。第
6、二 章 C语言程序的基本数据类型与表达式一习题答案1 指出下列常数中哪些是符合C语法规定的。答*V X 1 0 1-X -X e3X 019 V Oxle Vabn”-J 1.e5X(2+3)e(4-2)X 5.2e2.5X2请找出下列程序中的错误,改正后写出程序运行结果。v o i d ma inO int x,y=z=5,a v e r;x=7A VER=(x+y+z)/3p r int f(A VER=%d n,a v e r);)v o id ma inO c ha r c l=a,;c 2=b ;c 3=,c;int a=3.5,b=,Np r int f(/,a=%d b=,e n
7、d n,a,b);p r int f(z za%c b%c b c%c t a b c n/,,c l,c 2,c 3);ma inO int x,y=5,z=5,a v e r;x=7;a v e r=(x+y+z)/3;p r int f(,A VER=%d n,/,a v e r);)运行结果:A VER=5 ma in()c ha r c l=a,c 2=b,c 3=,c;int a=3,b=,A;p r int f(a=%d,b=%c e nd n,a,b);p r int f(a%c b%c b c%c t a b c n,c l,c 2,c 3);)运行结果:a=3,b=A e
8、nd a a b c c a b c写出下列赋值的结果,表格中写了数值的是要将它赋给其他类型的变量,将所有的空格填上赋值后的数据(实数保留到小数点后两位)。int99-1c ha rhu ns igne d int66flo a t5 5.78lo ng int68答int991 0 4665 568-1c ha rchB7D u n s i g n e d i n t9 91046655686553 5f lo a t9 9.00104.0066.0055.7868.00-1.00lo n g i n t9 9104665568-1写出程序运行结果。v o i d m a i n()i n
9、t i,j;i=8,j=10;p r i n t f (%d,%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 (/z%d,%d,%d,%d n,z,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,0void main()int a=10,b=20,c=30,d;d=+a=20|c+;p rin tf(%d,%d,%d,%dn,z,a,b,c,d);)答飞行结果:11,19,30,15写出下面表达式的值(设
10、 a=10,b=4,c=5,d=l,x=2.5,y=3.5)。(l)a%=(b%=3)n+,a+=a-=a*=a(3)(float)(a+c)/2+(int)x%(int)ya*=b+c(5)+a-c+b+(6)+a-c+b ab?x:A(8)b+=c(9)a+b,18+(b=4)*3,(a/b,a%b)(10)x+a%3*(int)(x+y)%2/4+sizeof(int)(ll)ab?a:c 0?x:-x 的功能是什么?答Z口果X的值是一正数,则表达式的值为X 值;如果X的值是一非正数,则表达式的值为-X。其实该表达式的值即为x 的绝对值,C 语言中提供了一个函数f a b s(x)即可完
11、成此功能,该函数包含在m a t h,h头文件中。8用一个条件表达式描述从a、b、c中找出最大都赋给m a x.答m a x=a (b c?b:c)?a:(b c?b:c);9若x 为 i n t 型变量,则执行以下语句后x的值为()。x=6;x+=x-=x*x;A.3 6 B.-60 C.60 D.-24答B.10若有以下类型说明语句:c h a r w;i n t x;f lo a t y;d o u b le z;则表达式w*x+z-y 的结果为()类型。A.f lo a t B.c h a r C.i n t D.d o u b le答D.第三章顺序结构程序设计一习题答案1变量k为f
12、lo a t 类型,调用函数s c a n f(%d”,&k),不能使变量k 得到正确数值的原因是 o答格式修饰符与变量类型不一致。因为%d 输入的数据类型应该为十进制整数,而&k 为占用4 个字节的f lo a t 类型变量的地址。2a=123 4,b=12,c=3 4,则执行“p r i n t f (1%3 43 d%-3 d|n”,a,b,c);”后的输出是 o答1123 4 123 4|分析如下:%3 d 为右对齐输出变量,且指定输出变量的值宽度为3个字符位,如果变量实际位数小于3,则左端补空格,如果变量实际位数大于3,则按实际长度输出,不受限制。汩3 d 为左对齐输出变量,在输出变
13、量时,如是变量实际位数小于3,则在右端补空格,否则按实际输出。3设有 i n t a=2 55,b=8;,则 p r i n t f (%x,%o n”,a,b);”输出是。答f f,1 0如果 p r i n t f(%X,%o n”,a,b);”则输出为FF,1 0。说明在输出十六进制字母时,其大小写受格式修饰符的限制,如果是“外 x”则输出小写,如果是“X”则输出大写。如果希望在输出十六进制时输出前导符Ox 或 0 X,则以上输出语句应改printf(%#x,%on”,a,b);为或printf(%#X,%on”,a,b);。本条解释不必须掌握。4以下 程 序 输 出 的 结 果 是。m
14、ain()int al=l,a2=0,a3=2;printf(96d,%d,%dn”,al,al+a2+a3,a3-al);)答1,3,15printf函数中用到格式符%5s,其中5 表示输出字符占用5 歹人如果字符串长度大于5,则按 输出;如果字符串长度小于5,则按 输出。答实际左端补空格6已定义变量如下:int al,a2;char cl,c2;若要求输入al、a2、cl和 c2 的值,正 确 的 输 入 函 数 调 用 语 句 是。答scanf(%d,%d,%c,枇,&al,&a2,&cl,&c2);7输入两个整型变量a、b 的值,输出下列算式以及运算结果 0a+b、a-b a*b a/
15、b、(float)a/b,a%b每个算式占一行。如a=1 0,b=5,a+b输出为:1 0+5=1 5答设 int a=1 0,b=5;以下为输出语句及结果:printf(/%d+%d=%dn,/,a,b,a+b);1 0+5=1 5printf(/%d-%d=%dn,/,a,b,a-b);1 0-5=5printf C%d*%d=%dn,,a,b,a*b);1 0*5=50printf(%d/%d=%dn”,a,b,a/b);1 0/5=2printf(%(float)d/%d=%fn”,a,b,(float)a/b);(float)1 0/5=2.000000printf(/z%d%d=%
16、dnz/,a,b,a%b);1 0%5=0输入一个非负数,计算以这个数为半径的圆周长和面积。答#d e f i n e PI 3.1 4 1 592 6m a i n Of l o a t r,1,a r e a;p r i n t f (z,In p u t a p o s i t i v e/7);s ca n f (f ,&r);l=2*PI*r;a r e a=PI*r*r;p r i n t f (z,l=%f t a r e a=%f nz,,1,a r e a);)输入任意一个3 位数,将其各位数字反序输出(例如输入1 2 3,输出3 2 1)。答m a i n O(i n t
17、x,y;p r i n t f (z,In p u t a n u m b e r(1 0 0-999):,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;/*注意分析此处算法*/p r i n t f (%d%d n ,x,y);1 0输入任意大小的3 个整数,判断其中是否有两个奇数一个偶数。若是则输出Y ES,不是则输出N OT (要求用条件表达式进行判断,不使用i f 语 句)。答m a i n Oi n t x,y,z,o d d co u n t=0;/*奇数数计数变量*/p r i n t f (In p u t
18、 x,y,z:);s ca n f (%d,%d,%d ,&x,&y,&z);x%2=l?o d d co u n t+:0;y%2=1?o d d co u n t+:0;z%2=l?o d d co u n t+:0;o d d co u n t=2?p r i n t f (Y ES ):p r i n t f C N O D ;)1 1求前驱字符和后继字符。输入一个字符,找出它的前驱字符和后继字符,并按AS CII码值,按从大到小的顺序输出这3个字符及其对应的AS CII码值。答本题考查同学们对字符类型数据的认识,如果在A SC H范围内则即可以显示为字符,又可以显示为整数值;无论是否
19、能够显示为字符,字符类型数据是可能参与数值运算的,切记。m a i n ()ch a r c;p r i n t f (/zIn p u t ch a r a ct e r/);s ca n f(%c,&c);p r i n t f (z,%c-%d n,z,c-1,c-1);p r i n t f (c-%d n,c,c);p r i n t f (%c-%d n/z,c+1,c+1);g etc hO;/*为便于调试程序,运行至此程序停顿,此时可以看到运行结果,按任意键程序真难得结束并返回到编辑环境*/1 2输入三角形的边长,求三角形 面 积(面 积=s qrt(s(s-a)(s-b)(s
20、-c),s=(a+b+c)/2)答#in c lu d ez/ma th.h /*由于程序中使用了开平方函数s qrt(),所以需要包含数学头文件*/ma in Ofloa t a,b,c,s,a rea;in t ok=0;prin tf(In pu t a,b,c:);s c a n f(%f,%f,%f,&a,&b,&c);a+b c?ok+:0;/*以下3条语句为判断是否输入的数据是否构成封闭三角形*/a+c b?ok+:0;b+c a?ok+:0;ok=3?(s=(a+b+c)/2,a rea=s qrt(s*(s-a)*(s-b)*(s-c),prin tf(,a rea=%f/,
21、,a rea):prin tf(error);getc hO;第四章选择结构程序设计一习题答案1设X、t 均为in t型变量,则执行语句“x=1 0;t=x&x 1 0;”后,t 的值为答02假定所有变量均已正确定义,则程序段:in t a=0,y=1 0;if(a=0)y-els e if(a 0)y+;els e y+=y;运行后y的值是;答2 03能表 述 2 0 x 3 0 或 x 2 0&x 3 0|+x-1 0 04若有定义语句“in t a=2 5,b=1 4,c=1 9;”,则以下语句执行结果是if(a=2 5&b=2&c)prin tf(,z*a+b=%d,a-b=%d*n,
22、/,a+b,a-b);els e prin tf(,z*a=%d,b=%d,c=%d*n,/,a,b,c);答*a=2 5,b=1 4,c=1 9*5假定i 和 j 为 in t型变量,则执行以下语句后i 的值是 oin t i=l;s w itc h(i)c a s e 1:for(j=0;j9;j+)i+=j;b rea k;c a s e 2:for(j=l;j1 0;j+)i+=j;b rea k;c a s e 3:i+;)答3 7分析:执行了 c a s e 1:和c a s e 3:中的代码。同时c a s e 1:语句中的 是可以取消的。6以下两条i f语句可合并成一条i f语
23、句,即 oif(a b)prin tf(/,*y=%d n/,y);els e prin tf(*x=%d rT,x);答if(a l)prin tf(ou ts id e);els e if(d 0)。i f(a30)m=lel s e i f(a4 0)m=2el s e i f(a50)m=3el s e i f(a60)m=4el s e m=5答s w i t ch(a/10)cas e 1:cas e 2:cas e 3:m=l;br eak;cas e 4:m=2;br eak;cas e 5:m=3;br eak;cas e 6:m=4;br eak;d efau l t:m=
24、5;)12有一函数x-l -5x 0y=x x=0 x+1 0 x-5&x 0&x-5&x 8)i f(x 0)y=x-l;el s e i f(x=0)y=0:el s e y=x+l;p r i n t f(z/y=%f n,z,y);)m ai n Ofl o at x,y;s can f&x);i f(x 0)y=x+l;el s e i f(x=0)y=0;el s e i f(x-5)y=x-l;p r i n t fC y=%f n,,y);)使用多分支语句程序如下:m ai n O(fl o at x,y;i n t m;p r i n t f(zzIn p u t x:);s
25、 can f(%f,&x);i f(x-5&x 8)i f(x 0)m=-l;el s e i f(x=0)m=0:el s e m=l;s w i t ch(m)cas e-1:y=x-l;br eak;cas e 0:y=0;br eak;cas e 1:y=x+l;br eak;)p r i n t f(尸%f n,y);)以下为假设对i n t类型的变量进行处理,但毕竟不算完美m ai n Oi n t x,y;p r i n t f(zzIn p u t x:);s can f(%d ,&x);s w i t ch(x)cas e-4:cas e-3:cas e-2:cas e-1:
26、y=x-l;br eak;cas e 0:y=0;br eak;cas e 1:cas e 2:cas e 3:cas e 4:cas e 5:cas e 6:cas e 7:y=x+l;br eak;)p r i n t fC y=%d n,z,y);第五章循环结构程序设计一习题答案输入n个整数,求 这n个数之中的偶数平均值,并输出。答m ai n()(i n t n,i,x,s u m=0,co u n t=0;p r i n t f(zzIn p u t n:);s can f(d,&n);fo r(i=0;i=,a&ch=,A&ch=,0&ch=,a&ch=,A,&ch=,Z )p r
27、 i n t f(%c,ch+32);)g et ch O ;)5设某县2000年工业总产值为200亿元,如果该县预计平均年工业总产值增长率为 4.5%,那么多少年后该县年工业总产值将超500亿元。答m ai n ()(fl o at x=200;i n t n=0;d o(x*=(l+0.04 5);n+;w h i l e(x 500);p r i n t f(n=%d ,n);g et ch O ;6输出1 999中能被3 整除,而且至少有一位数字是5 的所有数字。答m ai n O(i n t x,y,fl ag;fo r (x=l;x 1000;x+)(fl ag=0;y 二 x;i
28、 f(y%3=0)/*余数为0 说明该数能够被3 整除*/w h i l e(y%10!=0)i f(y%10=5)fl ag=l;/*依个位、十位、百位顺序判断是否余数为5*/y/=10;i f(fl ag=l)p r i n t f(z/%d tz/,x);g et ch O ;求爱因斯坦数学题。有一条长阶,若每步跨2阶,则最后剩1阶,若每步跨3阶,则最后剩2阶,若每步跨5阶,则最后剩4阶每步跨6阶,则最后剩5阶每步跨7阶,最后正好1阶。答m ai n ()i n t x=0,fl ag=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
29、(x%6=5)i f(x%7=0)printf x);br eak;g et ch O ;输入一个3位数,判断是否是一个“水仙花数”。水仙花数是指3位数的各位数字的立方和等于这个3位数本身。例如,153=1*1*1+5*5*5+3*3*3答m ai n ()i n t x,a,b,c;p r i n t f(In p u t n u m ber:);s can f(%d,&x);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
30、(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(Y E S);)el s ep r i n t f(N O T);g et ch O ;)计算斐波那契分数序列前n项之和(n是某个常数,波那契分数序列为2/1,3/2,5/3,8/5,.)om a i n()(i n t i,n=10;f l o a t f 1=1,f 2=2,f,sum=0;f o r(i=0;i n;i+)(sum+=f 2/f l;f=f l+f 2;f l=f 2;f 2=f;)pri n tf (z zto ta l=%d n
31、sum=%fz/,n,sum);g e tc h O;10输入一个正整数,各输出n行的正(倒)三角形宝塔图案。m a i n ()i n t n,i,j;pri n tf(Z/I n put n:);s canf&n);f o r(i=0;i n;i+)(f o r(j=i+l;j n;j+)pri n tf);f o r(j=0;j 2*i+l;j+)pri n tf(*);pri n tf(n);)f o r(i=0;i n-l;i+)(f o r(j=0;j i+l;j+)pri n tf;f o r(j=2*i-l;j n+l;j+)pri n tf(*);pri n tf(n);)g
32、 e tc h O;)11输出九九乘法表。答m a i n ()(i n t i,j;f o r(i=l;i =9;i+)(f o r(j=l;j =O&c h 二 9)(x=10*x+c h-O;y=10*y;i f(x!=0&10*x y)f=0;c o n ti n ue;)e l sei f(x!=O)i f(f=l)x=-x;n sum+=x;n c n t+;)e l se(psum+=x;pc n t+;pri n tf (%d n,x):f=O;x=O;y=l;c o n ti n ue;)i f(x!=0)(i f(f=l)(X=-X;n sum+=x;n c n t+;)e
33、 l se(psum+=x;pc n t+;)pri n tf (袋d n”,x);)pri n tf (n-n);pri n tf(Pl us:n);pri n tf(C o un t=%d n”,pe n t);pri n tf(A v e ra g e=%f rT,psum/pe n t);pri n tf (-n);pri n tf(Ne g a ti v e:n);pri n tf(C o un t=/d n”,pe n t);pri n tf(A v e ra g e=%f n”,n sum/n e n t);g e tc h O;)13一个整数等于该数所有因子之和,则称该数是一个
34、完数。例如,6 和 28都是完数。因为6=1+2+3,28=1+2+4+7+14。输出3 位数中所有的完数。答m a i n()(i n t k l,k 2,k 3,k 4,k 5,k 6,k 7,k 8,k 9,k l O;i n 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 pri n tf (%d,%d”,k l,k 2);/*n l 表示 a 至少有 2个因子*/i f(n2)pri n tf (,%d,z,k 3);/*注意以下i f的用法,
35、追加的方 法*/i fi fi fi fi fi fi f(n(n(n(n(n(n(n3)4)5)6)7)8)9)pri n tf (,%d,,pri n tf(,%d,pri n tfpri n tf (,%d,pri n tfpri n tf(,%d,pri n tf (,%d,k 4);k 5);k 6);k 7);k 8);k 9);k l O);pri n tf(n);g e tc h O;14编写程序按下列公式计算e的值(精度为l e-6)。e=l+l/l!+l/2!+l/3!.+l/n!答m a i n()i n t i;d o ub l e e=0,t=l;f o r(i=l;
36、t 0.000001;i+)(f o r(j=l;j 0,a b,如果 f (a+b)2=0,该点就是零点,如果 f (a+b)/20,则在区间(a+b)/2,b)内有零点,按上述方法再求该区间中点的函数值,通过每次把f(x)的零点所有小区间收缩一半的方法,使区间的两个端点逐步迫近函数的零点,以求得零点的近似值,该值即是方程的根)。答#i n c l ud e m a th.h m a i n()d o ub l e x,f x,f a,f b,a=-10,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 b
37、 0)(d o(x=(a+b)/2;f x=2*x*x*x-4*x*x+3*x;i f(f x z);pri n tf (Z/T h e ro o t i sx);)g e tc h O;)第六章函数与编译预处理一习题答案写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。答ma in()(unsigned int m,n,p,q;f or(;)(pr int f (m,n=);sc a nf (%d,%d,&m,&n);if(m0|lnn)i=m;m=n;n=i;f or (i=m;i0;i-)if(m%i=0&n%i=0)r et u
38、r n(i);)int f unq(int m,int n)int i;if(mn)i=m;m=n;n=i;f or(i=m;i47&c=A&c=Z|c=a&c 二 z)z m+;else qt+;pr int f (z,a m=%d,sz=%d,kg=%d,qt=%d n,z,z m,sz,kg,qt);)制作函数,利用函数调用:#inc lud est d io.hint a na ly s(c ha r c h);m a i n()(int i,z m=0,sz=O,qt=O,c;pr int f(I nput a st r ing:);while(c=get c ha r()-n,)i
39、=a na ly s(c);swit c h(i)(c a se 1:z m+;b r ea k;c a se 2:sz+;b r ea k;c a se 3:qt+;)pr int f (/Zz m=%d,sz=%d,qt二%d n,z m,sz,qt);)int a na ly s(c ha r c h)(if (c h=A&c h=,a&c h47&c h58)r et ur n 2;r et ur n 3;3按照第5 章第8 题的要求编写判断水仙花数的函数,从主函数输入正整数n,在主函数中调用判断水仙花数的函数,找出n 以内所有的水仙花数。【输入一个3 位数,判断是否是一个“水仙花数”
40、。水仙花数是指3 位数的各位数字的立方和等于这个3 位数本身。例如,153=1*1*1+5*5*5+3*3*3答ma in()int x,i,f;pr int f(I nput numb er:);s can f&x);f or(i=0;i=x;i+)(f=0;f=f un(i);if(f=l)pr int f (级d t ,i);)get c hO ;)int f un(int x)(int a,b,c;a=x/100;b=x/10%10;c=x%10;if(a*a*a+b*b*b+c*c*c=x)r et ur n 1;else r et ur n 0;4定义一个宏,实现将两个数互换,并写
41、出程序,输入两个数作为使用参数,并显示结果。答t t d ef ine f (a,b)(a=a+b,b=a-b,a=a-b)ma in()(int x,y;pr int f(I nput x,y:);sc a nf (/z%d,%d,&x,&y);pr int f (%d,%d/,x,y);f(x,y);pr int f (%d,%d n,x,y);get c h();o1情nn它若若其5已知二阶F ib ona c c i数列:0F ib(n)=1F ib(n-l)+F ib(n-2)定义递归函数求F ib(n)。答ma in()int i,n;pr int f(z,I nput n:);s
42、c a nf (%d ,&n);f or (i=0;i=n;i+)pr int f C%d t,,f ib(i);get c h();)int f ib (int n)(if(n=0)r et ur n 0;else if(n=l)r et ur n 1;else r et ur n(f ib(n-l)+f ib(n-2);)6定义函数求F=(n+m)!+n!,m、n均为任意正整数。要求使用递归调用。答long int f(int x);ma in()(int i,m,n;long int sum;pr int f (z zI nput m,n:);sc a nf (d,%d,&m,&n);s
43、um=f(n+m)+f(n);pr int f (961d,sum);get c hO ;)long int f (int x)int i,j;if(x=O|x=l)r et ur n 1;else r et ur n(x*f(x-1);)7定义一个函数完成第5章第11题的功能。【输出九九乘法表。】答ma in()(f un();get c hO ;f un()int i,j;f or(i=l;i=9;i+)(f or(j=l;j=i;j+)pr int f C%d*%d=%-3d,/,j,i,i*j);pr int f(n);)8如果有两个数,每一个数的所有约数(除了它本身以外)的和正好等于
44、对方,则称这两个数为互满数,求出30000以内所有的互满数,并显示输出,求一个数它的所有约数(除了它本身以处)的和,用函数实现。答ma in()int x,y;f or (x=l;x 30000;x+)(f or(y=l;y x;y+)(if (f a c sum(x)=y&f a c sum(y)=x)pr int f (,z(%d,x,y);get c hO ;)f a c sum(int n)int i,sum=O;f or (i=l;in;i+)(if(n%i=0)sum+=i;)r et ur n sum;9编写以下函数:输入职工的姓名和职工号;按职工号由小到大排序,姓名顺序也随之调
45、整;输入一个职工号,找出该职工的姓名。在主函数中调用这些函数。答10设计程序完成下列计算。已 经: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.+(T)n x 2n/(2n)!(n20)当:x=5.6,n=7 时,求:y要求通过嵌套调用完成计算。答t t inc lud e f loa t f (f loa t x,int n);f loa t f l(f loa t x,int m);f loa t f 2(int m);ma in()f loa t x=5.6,y;int n=7,i;y=l+f (x,n)/(f
46、 (x+2.3,n)+f (x-3.2,n+3);pr int f (,y=%f n n,/,y);)f loa t f(f loa t x,int n)f loa t sum=0.0;int i;f or (i=l;i=n;i+)(sum+=f 1(-1,i)*f l(x,2*i)/f 2(2*i);r et ur n sum;f loa t f l(f loa t x,int m)(int i;f loa t y=l.0;f or (i=l;i=m;i+)(y*二x;)r et ur n y;)f loa t f 2(int m)(int i;f loa t y=l;f or (i=l;i
47、 l,2,3,4,5,6);执行语句 pri nt f (c ,d l 0+*A);结果是()oA.A B.B C.D D.E4、有定义 c h a r c=A,c h 2 0 M a,b,c,0,d,0;若执行pri nt f (/z%sz z,c h);结果是()。A.a b c B.a b c C.a b e d D.a b c Od5、对数组进行初始化c h a rc a rr =s,t,u,d,e,n,t,b a rr =s t u d e nt”;则正确的是()oA.c a r r与b a r r长度相同 B.c a r r比b a r r长C.c a rr 与 b a rr 相同
48、 D.c a rr 比b a rr 短答1、BD 2、A 3、D 4、B 5、D2阅读下列程序,写出程序的执行结果。1、#i nc lu d e#i nc lu d e v oi d ma i n()i nt i,j,t e mp,d 4 4 =1,2,3,4,5 6,7,8,4,3,2,1,1,2,3,4;f or(i=0;i 4;i+)f or(j=0;j d j i )d j i =d i j:f or(i=0;i 4;i+)(pri nt f(n);f or(j=0;j4;j+)i f (j=i)pri nt f (绘6d”,d i j);e ls e pri nt f2、若输入十进制
49、数3 2 9 1时,下列程序输出为:S i nc lu d e v oi d ma i n()i nt i,d,m,n;c h a r s 8;s c a nf(“*d ,&n);i=0;/*i是用来存放转换后的数组元素下标*/d o(m=n/8;d=n%8;s i =0+d;i+;n=m;w h i le(n!=0);f or(i ;i =0;i-)pu t c h a r(s i );/*反向输出字符*/)答1、15 4 46 7 82 342、63 3 3程序填空。在 处填写合适的语句,完善下列程序:1、从键盘输入一个数,将其插入到一个升序数组中,保持数组仍然按升序排列。i nc lu
50、d e v oi d ma i n()(i nt d a t a,t e mp,k;s t a t i c i nt a 9 =-1 0,2,4,8,1 0,1 5,2 5,50);pri nt f(z z nEnt e r a d a t a:);scan ffedata);;f or(k=8;k-)i f(a k a k-l);a k=a k-l;a k-l=t e mp;)e ls e ;f or(k=0;j)_;k+)pri nt f(%7d ,a k);)2、从键盘输入一串英文字符(不含空格与其他字符),统计每个字符的个数,并输出字母及相应的个数。S i nc lu d e#i nc