《C语言程序设计教程(第2版)课后习题答案杨路明.pdf》由会员分享,可在线阅读,更多相关《C语言程序设计教程(第2版)课后习题答案杨路明.pdf(48页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第 一 章C语言程序设计概述一习题答案1算法的描述有哪些基本方法?答1、自然语言2、专用工具2 C语言程序的基本结构是怎样的?举一个例子说明。答1、C语言程序由函数构成;2、“/*”与“*/”之间的内容构成C语言程序的注释部分;3、用预处理命令#i n c l u d e、#d e f i n e可以包含有关文件或预定义信息;4、大小写字母在C语言中是有区别的;5、除m a i n。函数和标准库函数外,用户也可以自己编写函数,应用程序一般由多个函数组成,这些函数指定实际所需耍做的工作。3 c语言有什么特点?答1、a有结构语.的特点,程序之间很容易实现段的共享;2、主要结构成分为函数,函数可以在
2、程序中被定义完成独立的任务,独立地编译代码,以实现程序的模块化;3、运算符丰富,包含的范围很广;4、数据类型丰富;5、允许直接访问物理地址,即可直接对硬件进行损伤,实现汇编语言的大部分功能;6、限制不太严格,程序设计自由度大,这样使C语言能够减少对程序员的束缚;7、生成的目标代码质量,程序执行效率高,同时C语言编写的程序的可移植性好。4指出合法与不合法的标识符命名。答A B 1 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 i f X X Y Z 4 3 K2 V AV E#X Y X _ 762 J#_ D T 5
3、 X C.D X5说明下列T u r b o C热键的功能。答F 2:源 文 件 存 盘F 1 0:调用主菜单F 4:程序运行到光标所在行(用于调试程序)Ct r l+F9:编译并链接成可执行文件A l t+F5:将窗口切换到D O S下,查看程序运行结果。6说明下列Tu r b o C方式下输入并运行下列程序,记录下运行结果。ma in()p r int f(*n);p r int f(,z w e l c ome you n);p r int f(z,v e r y good n);p r int f(*n);)ma in()int a,b,c,t;p r int f(z,p l e a
4、s e inp u t t hr e e nu mb e r s;z,);s c a nf(/%d,%d,%d ,&a,&b,&c);/*教材 S 是错误的*/t=ma x(ma x (a,b),c);p r int f(z zma x nu mb e r is:%d n,t);int ma x(int x,int y)int z;if(x y)z=x;e l s e z=y;r e t u r n(z);)答运行结果:w e l c ome youv e r y good运行结果:p l e 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 程序是由若干个函数构成的,其中有且只能有一个 函数。答ma in()8在 Tu r b o C 环境下进行程序调试时,可以使用Ru n下拉菜单的 命令或按 键转到用户屏幕查看程序运行结果。答1 Us e r s c r e e n2、A l t+F59 C语言对标识符与关键字有些什么规定?答1、标识符用来表示函数、类型及变量的名称,它是由字母、下划线和数字组成,但必须用字母或下划线开头。2、关键字是一种语言中规定具有特定含义的标识符,其不能作为变量或函数名来使用,用户只能根据系统的规定使用它们。1 0C 源程序输入后是如何进行保存的
6、?答是以c为扩展名保存的纯文本文件。第 二 章 C 语言程序的基本数据类型与表达式一习题答案1指出下列常数中哪些是符合c语法规定的。答X 1 0 1-X V X e 3 X 0 1 9 V Ox l e V a b n”J 1.e 5 X (2+3)e (4-2)X 5.2e 2.5 X2请找出下列程序中的错误,改正后写出程序运行结果。v oid ma in()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 oid ma in()c ha r c l=a ;c 2=b ;c 3=c;int a=3.
7、5,b=A p r int f(,/a=%d b=,e nd n,a,b);p r int f(z,a%c b%c b c%c t a b c n/z,c l,c 2,c 3);)答ma in()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
8、n/,c l,c 2,c 3);运行结果:a=3,b=A e nd a a b c c a b c3写出下列赋值的结果,表格中写了数值的是要将它赋给其他类型的变量,将所有的空格填上赋值后的数据(实数保留到小数点后两位)。i n t99-1c h ar,h u n s i g n ed i n t66f l o at55.7 8l o n g i n t68答i n t99104665568-1c h ar,c h,B,T,D u n s i g n ed i n t9910466556865535f l o at99.00104.0066.0055.7 868.00-1.00l o n g i
9、 n t99104665568-1写出程序运行结果。v o i d m ai n()i n 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=30;p r i n t f (,z%d,%d,%d,%d r T,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 v o i d m ai n()i n t a=10,b=20,c=30,d;d=+a=20|c+;p r i
10、n t f (z/%d,%d,%d,%d n”,a,b,c,d);)答运行结果:11,19,30,1写出下面表达式的值(设 a=10,b=4,c=5,d=l,x=2.5,y=3.5)。(l)a%=(b%=3)(2)n+,a+=a-=a*=a(3)(f l o at)(a+c)/2+(i n t)x%(i n t)y(4)a*=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*(i n t)(x+y)%2/4+s i z eo f (i n t)(ll)ab?a:c0?x:-x的功能是什么?答7口果X
11、的值是一正数,则表达式的值为X值;如果X的值是一非正数,则表达式的值为-X。其实该表达式的值即为X的绝对值,C语言中提供了一个函数fabs(x)即可完成此功能,该函数包含在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.10若有以下类型说明语句:c h 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
12、 at B.c h ar C.i n t D.do u b l e答D.第 三 章 顺序结构程序设计一习题答案1变量k 为 f l o at 类型,调用函数s c an f (级d,&k),不能使变量k 得 到 正 确 数 值 的 原 因 是。答格式修饰符与变量类型不一致。因为%d 输入的数据类型应该为十进制整数,而&k 为占用4 个字节的f l o at 类型变量的地址。2a=1234,b=12,c=34,则执行“p r i n t f (|%3d%3d%-3d|n,a,b,c);”后的输出是_。答|1234 1234|分析如下:%3 d 为右对齐输出变量,且指定输出变量的值宽度为3 个字符
13、位,如果变量实际位数小于3,则左端补空格,如果变量实际位数大于3,则按实际长度输出,不受限制。%-3 d 为左对齐输出变量,在输出变量时,如是变量实际位数小于3,则在右端补空格,否则按实际输出。3设有i n t a=25 5,b=8;,则 pr i n t f(%x,%o n”,a,b);”输出是。答ff,1 0如果pr i n t f(%X,%o n ,a,b);”则输出为FF,1 0。说明在输出十六进制字母时,其大小写受格式修饰符的限制,如果是“姒”则输出小写,如果是,X”则输出大写。如果希望在输出十六进制时输出前导符O x 或 0 X,则以上输出语句应改“pr i n t f(“翻x,%
14、o n,/,a,b):为或pr i n t f(耕X,%o n”,a,b);。本条解释不必须掌握。4以下 程 序 输 出 的 结 果 是。main()(int al=l,a2=0,a3=2;printf(d,%d,%dn,al,al+a2+a3,a3-al);答1,3,15printf函数中用到格式符%5 s,其中5表示输出字符占用5歹如果字符串长度大于5,则按输出;如果字符串长度小于5,则按 输出。答实际左端补空格6已定义变量如下:int al,a2;char cl,c2;若要求输入al、a2、c l和c 2的值,正 确 的 输 入 函 数 调 用 语 句 是。答scanf(d,%d,%c,
15、%c,&al,&a2,&cl,&c2);7输入两个整型变量a、b的值,输出下列算式以及运算结果 oa+b、a-b、a*b、a/b(float)a/b a%b每个算式占一行。如a=10,b=5,a+b输出为:10+5=15答设int a=10,b=5;以下为输出语句及结果:printf(/z%d+%d=%dnz/,a,b,a+b);10+5=15 printf(,%d-%d=%dn,/,a,b,a-b);10-5=5 printf(%d*%d二%dn,a,b,a*b);10*5=50 printf(%d/%d=%dn,a,b,a/b);10/5=2 printf(%(float)d/%d二%fn
16、,a,b,(float)a/b);(float)10/5=2.000000 printf(z/%d%d=%dn,z,a,b,a%b);10%5=08输入一个非负数,计算以这个数为半径的圆周长和面积。答define PI 3.1415926main()float r,1,area;pr i n t f(In pu t a pos i t i v e:,z);s c a n f(M,&r);l=2*PI*r;a r e a=PI*r*r;pr i n t f Czl=%f t a r e a=%f nz z,1,a r e a);输入任意一个3位数,将其各位数字反序输出(例如输入1 2 3,输出3
17、 2 1)。答m a i n ()(i n t x,y;pr i n t f(Z/In pu t a n u m b e r (1 0 0-9 9 9):z,);s c a 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 S,不是则输出NO T(要求用条件表达式进行判断,不使用i f语 句)。答m a i n ()i n t x,y,z,od d c ou n t=0;/*奇数数计数变量
18、*/pr i n t f(z/In pu t x,y,z:);s c a n f(%d,%d,%d”,&x,&y,&z);x%2=l?od d c ou n t+:0;y%2=l?od d c ou n t+:0;z%2=l?od d c ou n t+:0;od d c ou n t=2?pr i n t f(Y ES):pr i n t f(NO T);1 1求前驱字符和后继字符。输入一个字符,找出它的前驱字符和后继字符,并按AS CII码值,按从大到小的顺序输出这3个字符及其对应的AS CII码值。答本题考查同学们对字符类型数据的认识,如果在A SC H范围内则即可以显示为字符,又可以显
19、示为整数值;无论是否能够显示为字符,字符类型数据是可能参与数值运算的,切记。m a i n()(c h a r c;pr i n t f(/?In pu t c h a r a c t e r:,z);s c a n f(%c ,&c);pr i n t f(,z%c-%d n,/,c-l,c-l);pr i n t f(z,%c-%d n ,c,c);pr i n t f(c-%d nz,,c +1,c+1);g e t c h O;/*为便于调试程序,运行至此程序停顿,此时可以看到运行结果,按任意键程序真难得结束并返回到编辑环境*/12输入三角形的边长,求三角形面积(面积=s q r t(
20、s 的-a)(s-b)(s-c),s=(a+b+c)/2)。#in clu dez,m at h.hz,/*由于程序中使用了开平方函数s q r t (),所以需要包含数学头文件*/m ain()(f lo at a,b,c,s,ar e a;in t o k=0;p r in t f (I n p u t a,b,c:);s can f (,z%f,%f,%fz/,&a,&b,&c);a+bc?o k+:0;/*以下3 条语句为判断是否输入的数据是否构成封闭三角形*/a+cb?o k+:0;b+ca?o k+:0;o k=3?(s=(a+b+c)/2,ar e a=s q r t(s*(s-
21、a)*(s-b)*(s-c),p r in t f(ar e a=%f ,ar e a):p r in t f(e r r o r );ge t ch();第四章 选择结构程序设计一习题答案1设x、t 均为in t 型变量,则执行语句“x=10;t=x&x 10;”后,t的值为答02假定所有变量均已正确定义,则程序段:in t a=0,y=10;if(a=0)y ;e ls e if(a0)y+;e ls e y+=y;运行后y的值是;答203能表 述 20 x 30或 x 20&x 30|+x -1004若有定义语句“in t a=25,b=14,c=19;,则 以 下 语 句 执 行 结
22、果 是。if(a=25&b=2&c)p r in t f(*a+b=%d,a-b=%d*n ,a+b,a-b);e ls e p r in t f(*a=/d,b=%d,c=%d*n ,a,b,c);答*a=25,b=14,c=19*5假定i 和 j 为 in t 型变量,则执行以下语句后i 的值是 0in t i=l;s w it ch(i)(cas e 1:f o r(j=0;j 9;j+)i+=j;br e ak;cas e 2:f o r(j=l;j 10;j+)i+=j;br e ak;cas e 3:i+;答37分析:执行了 cas e 1:和 cas e 3:中的代码。同时cas
23、 e 1:语句中的 是可以取消的。6以下两条i f 语句可合并成一条i f 语句,即 oif(ab)p r in t f(*y=%dn”,y);e ls e p r in t f(*x=%dn”,x);答if(al)p r in t f(o u t s ide );e ls e if(dl)p r in t f(in s ide );e ls e p r in t f(in s ide );)10输入年号和月份,输出这一年该月的天数(一个年份,先判断是否闰年)。答m ain()(in t y,m,d,f;p r in t f (I n p u t y e ar an d m o n t h y
24、-m:);s can f (%d-%d”,&y,&m);f=(y%4=0&y/100!=0|y/400=0);if (m=2)d=28+f;/*依据是否闰年决定2 月份的实际天数,若是闰年,则 f=l,d 即为29天*/e ls ed=31-(m=4)+(m=6)+(m=9)+(m=lD;/*m=4 时其值为 1,则本月为 30 天,典型算法,重要啊*/p r in t f is%d day s.n ,y,m,d);)11请将以下语句改写成s w it c h语 句(a 0)。if(a 3 0)m=le l s e if (a 4 0)m=2e l s e if(a 5 0)m=3e l s
25、e if(a 6 0)m=4e l s e m=5答s w it c h(a/1 0)(c a s e 1:c a s e 2:c a s e 3:m=l;b r e a k;c a s e 4:m=2;b r e a k;c a s e 5:m=3;b r e a k;c a s e 6:m=4;b r e a k;d e f a u l t:m=5;1 2有一函数x-l -5 x 0y=x x=0 x+1 0 x -5&x 0&x -5&x 8)if(x 0)y=x-l;e l s e if(x=0)y=0:e l s e y=x+l;p r in t f (,y=%f nz/,y);m
26、a in ()f l o a t x,y;scanf&x);if(x 0)y=x+l;e l s e if(x=0)y=0;e l s e if (x -5)y=x-l;p r in t f r y=%f nz;y);)使用多分支语句程序如下:m a in()(f l o a t x,y;in t m;p r in t f (In p u t x:);s c a n f&x);if(x -5&x 8)if (x 0)m=-l;e l s e if(x=0)m=0:e l s e m=l;s w it c h(m)c a s e -1:y=x-l;b r e a k;c a s e 0:y=0;
27、b r e a k;c a s e 1:y=x+l;b r e a k;)p r in t f(/,y=%f n,/,y);)以下为假设对in t 类型的变量进行处理,但毕竟不算完美m a in ()(in t x,y;p r in t f (,zIn p u t x:);s c a n f (%d ,&x);s w it c h(x)(c a s e -4:c a s e -3:c a s e -2:c a s e -1:y=x-l;b r e a k;c a s e 0:y=0;b r e a k;c a s e 1:c a s e 2:c a s e 3:c a s e 4:c a s
28、e 5:c a s e 6:c a s e 7:y=x+l;b r e a k;)p r in t f C y=%d n/,y);)第五章循环结构程序设计一习题答案1输入n个整数,求 这 n个数之中的偶数平均值,并输出。答m a in ()(in t n,i,x,s u m=0,c o u n t=0;p r in t f(In p u t n:);s c a n f (绘d”,&n);f o r(i=0;i=,&c h=,&c h=,0,&c h=a&c h=,A&c h=,Z)p r in t f c h+3 2);)g e t c hO ;5设某县2 0 0 0 年工业总产值为2 0 0
29、 亿元,如果该县预计平均年工业总产值增长率为4.5%,那么多少年后该县年工业总产值将超5 0 0 亿元。答m a in()(f l o a t x=2 0 0;in t n=0;d o(x*=(l+0.0 4 5);n+;w hil e(x 5 0 0);p r in t f(n=%d,n);g e t c hO ;6输出1-9 9 9 中能被3 整除,而且至少有一位数字是5的所有数字。答m a in ()(in t x,y,f l a g;f o r(x=l;x 1 0 0 0;x+)(f l a g=0;y=x;if(y%3=0)/*余数为0说明该数能够被3整除*/(w hil e(y%1
30、 0!=0)(if (y%1 0=5)f l a g=l;/*依个位、十位、百位顺序判断是否余数为5*/y/=1 0;if(f l a g=l)p r in t f(%d t”,x);g e t c h();求爱因斯坦数学题。有一条长阶,若每步跨2阶,则最后剩1阶,若每步跨3阶,则最后剩2阶,若每步跨5阶,则最后剩4阶每步跨6阶,则最后剩5阶每步跨7阶,最后正好1阶。m a in ()in t x=0,f l a g=0;w hil e(1)(x+;if(x%2=l)if(x%3=2)if(x%5=4)if(x%6=5)if(x%7=0)pri ntfx);b r e a k;g e t c
31、h();输入一个3位数,判断是否是一个“水仙花数”。水仙花数是指3位数的各位数字的立方和等于这个3位数本身。例如,1 5 3 =1*1*1+5*5*5+3*3*3m a in ()in t x,a,b,c;p r in t f (In p u t n u m b e r:z,);scanf&x);a=x/1 0 0;/*变量a中记录x的百位数字*/b=x/1 0%1 0;/*变量b中记录x的十位数字*/c=x%1 0;/*变量c中记录x的个位数字*/if(a*a*a+b*b*b+c*c*c=x)(p r in t f (/,%d=%d*%d*%d+%d*%d*%d+%d*%d*%d n/,,x
32、,a,a,a,b,b,b,c,c,c);p r in t f(Y E S);)e l s ep r in t f CN OD;g e t c h();9计算斐波那契分数序列前n项之和(n是某个常数,波那契分数序列为2/1,3/2,5/3,8/5,.)0答m a in ()in t i,n=1 0;f l o a t f 1=1,f 2=2,f,s u m=0;f o r(i=0;i n;i+)s u m+=f 2/f l;f=f l+f 2;f l=f 2;f 2=f;)p r in t f (,t o t a l=%d n s u m=%fz/,n,s u m);g e t c hO ;)1
33、 0输入一个正整数,各输出n行的正(倒)三角形宝塔图案。答ma i n()i nt n,i,j;pr i ntf(I nput n:);s can f&n);f o r(i=0;i n;i+)f o r (j=i+l:j n;j+)pr i ntf (,z);f o r(j=0;j 2*i+l;j+)pr i ntf(*);pr i ntf(n);f o r(i=0;i n-l;i+)(f o r(j=0;j i+l;j+)pr i ntf C /);f o r(j=2*i-l;j n+l;j+)pr i ntf(*);pr i ntf(n);)g e tc h();)1 1输出九九乘法表。答
34、ma i n()(i nt i,j;f o r(i=l;i =9;i+)(f o r(j=l;j =i;j+)pr i ntf (,%d*%d=%-3d/z,j,i,i*j);pr i ntf(n);)g e tc h();)1 2输入一串字符,直到输入一个星号为止,统计(输出)其中的正整数和负整数个数以及所有正整数的平均值和所有负整数的平均值。答#i nc l ud ez/std i o.h#i nc l ud e ma th.h ma i n()(c h a r c h;i nt x=0,y=l,f=0,pc nt=0,nc nt=0;f l o a t psum=0,nsum=0;w h
35、 i l e(c h=g e tc h a r 0)!=O&ch=9)(x=10*x+ch-O;y=10*y;if (x!=0&10*xy)f=0;continue;)else(if(x!=0)(if(f=l)(x=x;nsum+=x;ncnt+;)else(psum+=x;pcnt+;)p rin tf(%dn,x);)f=O;x=O;y=l;continue;)if(x!=0)(if(f=l)x=-x;nsum+=x;ncnt+;e l se(psum+=x;pc nt+;pr i ntf(%d n,x);)pr i ntf (n-n);pr i ntf (P l us:n);pr i n
36、tf (C o unt二%d n,pe nt);pr i ntf (,A v e r a g e=%f n,z,psum/pe nt);pr i ntf (-n);pr i ntf (N e g a ti v e:n);pr i ntf (C o unt二%d n,pe nt);pr i ntf (,A v e r a g e=%f n/z,nsum/ne nt);g e tc h();1 3一个整数等于该数所有因子之和,则称该数是一个完数。例如,6和2 8都是完数。因为6=1+2+3,2 8=1+2+4+7+1 4。输出3位数中所有的完数。答ma i n()(i nt k l,k 2,k 3
37、,k 4,k 5,k 6,k 7,k 8,k 9,k l O;i nt i,a,n,s;f o r (a =1 0 0;a =9 9 9;a+)(n=0;/*n累计因子的个数*/s=a;/*s存放未求出的因子之和,初值为被测数本身*/f o r (i =1;i 1)p r i n t f C M%d k l,k 2);/*n l 表示 a 至少有 2 个因子*/i f (n 2)pr i ntf (,%d”,i f (n 3)pr i ntf (,%d,i f (n 4)pr i ntf (,喋d”,i f (n 5)pr i ntf (,%d,i f (n 6)pr i ntf (,%d”,
38、i f (n 7)pr i ntf (“制d,i f (n 8)pr i ntf (,%d,i f (n 9)pr i ntf (,%d,k 3)k 4)k 5)k 6)k 7)k 8)k 9)/*注意以下i f的用法,追加的方法*/k l O);pr i ntf (n);)g e tc h O ;1 4编写程序按下列公式计算e的值(精度为l e-6)。e=l+l/l!+l/2!+l/3!.+l/n!答ma i n()(i nt i;d o ub l e e=0,t=l;f o r(i=l;t 0.0 0 0 0 0 1:i+)(f o r(j=l;j =i;j+)t*=j;t=l/t;e+=
39、t;pr i ntf(e=%f n”,e);g e tc h O ;1 5用二分法求方程2 x 3-4x 2+3x=0在(TO,1 0)附近的根(二分法:先找到a、求 使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)的零点所有小区间收缩一半的方法,使区间的两个端点逐步迫近函数的零点,以求得零点的近似值,该值即是方程的根)。答tti nc l ud e ma th.h ma i
40、 n()(d o ub l e x,f x,f a,f b,a=-1 0,b=1 0,z=0.0 0 0 1;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);pr i ntf(Th e r o o t i s:%l f n,x);)g e tc h O ;第六章函数与编译预处理一习题答案1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。答ma i n()(unsi g n
41、e d i nt m,n,p,q;f o r (;)pr i ntf (m,n=);sc a nf (为d,%d”,&m,&n);i f (m 0|nn)i=m;m=n;n=i;for(i=m;i0;i-)if(m%i=0&n%i=0)return(i);)int funq(int m,int n)(int i;if(mn)i=m;m=n;n=i;for(i=m;i47&c=A&c二 a&c=,A&c h=,a&c h 47&c h 58)r e tur n 2;r e tur n 3;)3按照第5 章第8 题的要求编写判断水仙花数的函数,从主函数输入正整数n,在主函数中调用判断水仙花数的函数
42、,找出n以内所有的水仙花数。【输入一个3 位数,判断是否是一个“水仙花数”。水仙花数是指3 位数的各位数字的立方和等于这个3 位数本身。例如,153=1*1*1+5*5*5+3*3*3答m a i n ()(i n t x,i,f;p r i n tf(,zI n p ut n um b e r:);scanf&x);fo r(i=0;i=x;i+)(f=0;f=fun(i);i f(f=l)p r i n tf C%d t/Z,i);)g e tc h O ;i n t fun(i n t x)(i n t a,b,c;a=x/100;b=x/10%10;c=x%10;i f(a*a*a+b
43、*b*b+c*c*c=x)r e tur n 1;e l s e r e tur n 0;4定义一个宏,实现将两个数互换,并写出程序,输入两个数作为使用参数,并显示结果。答#d e fi n e f(a,b)(a=a+b,b=a-b,a=a-b)m a i n()(i n t x,y;p r i n tf(z,I n p ut x,y:);s c a n f(%d,%d ,&x,&y);p r i n tf(,z%d,%d ,x,y);f(x,y);p r i n tf(%d,%d n ,x,y);g e tc h O ;若若其5已知二阶F i b o n a c c i 数列:0F i b(
44、n)=1F i b (n-l)+F i b(n-2)定义递归函数求F i b(n)o答m a i n ()(i n t i,n;p r i n tf(I n p ut n:);scanf&n);fo r (i=0;i=n;i+)print f f ib(i);g e tc h 0;)i n t fi b(i n t n)(i f(n=0)r e tur n 0;e l s e i f(n=l)r e tur n 1;e l s e r e tur n (fi b(n-l)+fi b(n-2);6定义函数求F=(n+m)!+n!,m、n均为任意正整数。要求使用递归调用。答l o n g i n
45、t f(i n t x);m a i n ()(i n t i,m,n;l o n g i n t s um;p r i n tf(z,I n p ut m,n:);s c a n f%d/?,&m,&n);s um=f(n+m)+f(n);print f su m);g e tc h();)l o n g i n t f(i n t x)(i n t i,j;i f(x=0|x=l)r e tur n 1;e l s e r e tur n(x*f(x-1);)7定义一个函数完成第5章第11题的功能。【输出九九乘法表。】答m a i n ()(fun();g e tc h O ;fun()(
46、i n t i,j;fo r(i=l;i=9;i+)(fo r(j=l;j=i;j+)p r i n tf(,%d*%d=%-3d,;j,i,i*j);p r i n tf(r T);)8如果有两个数,每一个数的所有约数(除了它本身以外)的和正好等于对方,则称这两个数为互满数,求出30000以内所有的互满数,并显示输出,求一个数它的所有约数(除了它本身以处)的和,用函数实现。答m a i n ()i n t x,y;fo r(x=l;x30000;x+)(fo r(y=l;yx;y+)(i f(fa c s um (x)=y&fa c s um (y)=x)p r i n tf(z/(%d,%
47、d)t”,x,y);)g e tc h O ;fa c s um(i n t n)(i n t i,s um=0;fo r(i=l;i n;i+)(i f(n%i=0)s um+=i;)r e tur n s um;)9编写以下函数:输入职工的姓名和职工号;按职工号由小到大排序,姓名顺序也随之调整;输入一个职工号,找出该职工的姓名。在主函数中调用这些函数。答10设计程序完成下列计算。已经:y=f(x,n)/(f(x+2.3,n)+f(x-3.2,n+3)其 中:f(x,n)=l-x2/2!+x4/4-.+(T)n x2n/(2n)!(n 20)当:x=5.6,n=7 时,求:y要求通过嵌套调用
48、完成计算。答S i n c l ud e fl o a t f(fl o a t x,i n t n);fl o a t fl(fl o a t x,i n t m);fl o a t f2(i n t m);m a i n ()(fl o a t x=5.6,y;i n t n=7,i;y=l+f(x,n)/(f(x+2.3,n)+f(x-3.2,n+3);p r i n tf(/,y=%f n n/,y);fl o a t f(fl o a t x,i n t n)(fl o a t s um=0.0;i n t i;fo r(i=l;i=n;i+)(s um+=f 1(-1,i)*fl
49、(x,2*i)/f2(2*i);)r e tur n s um;)fl o a t fl(fl o a t x,i n t m)(i n t i;fl o a t y=l.0;fo r (i=l;i=m;i+)(y*二X;)r e tur n y;)fl o a t f2(i n t m)(i n t i;fl o a t y=l;fo r (i=l;i+)(y*二 i;r e tur n y;第 七 章 数 组一习题答案1以下各题中,选择一个正确的答案。1、能正确对一维数组a中所有元素进行初始化的是()。A.i n t a 5 =B.i n t a =0C.i n t a 5=0,0,0,0
50、,0 D.i n t a 5 =02、有说明i n t k=3,a 10;则下列可以正确引用数组元素的表达式是()。A.ak B.a10 C.al,3 D.a 3*53、有定义 int d 3=1,2,3,4,5,6);执行语句 printf(枇,dl 0+A);结果是()。A.A B.B C.D D.E4、有定义 charc=A,ch20k a,b,c,0,d,0;若执行 printf(如 ,ch);结果是()oA.abc B.abc C.abed D.abc0d5、对数组进行初始化 char carr=s,t,u,d,e,n,t,barr 二 student;则正确的是()oA.carr与