C语言程序设计习题参考答案第二版杜友福 下载本文

#include <> #include <> int fun14(int m) {int w; if(m==1) w=1; else

w=fun14(m-1)+m; return w; }

main() { int x,i;

scanf(\

printf(\}

用递归的方法将一个整数转换成字符串。例如:输入345”。

答:程序参见文件Cprogram\\

#include <> #include <>

void fun15(int m) { if(m!=0)

{fun15(m/10);

printf(\ } }

main() { int x;

scanf(\ printf(\ fun15(x); printf(\}

用递归的方法计算下列函数的值:

2+x3-x4+……(-1)n-1xn n>0 答:程序参见文件Cprogram\\

#include \#include \

float p(float x,int n) {float f; if(n==0) f=0;

345,应输出字符串15. “ 16. p(x,n)=x-x else

f=p(x,n-1)+pow(-1,n-1)*pow(x,n); return f; }

main() {

printf(\}

17. 采用递归的方法计算x的n次方。 答:程序参见文件Cprogram\\

#include \#include \

float p(float x,int n) {float f; if(n==0) f=1; else

f=p(x,n-1)*x; return f; }

main() {

printf(\}

18. 根据勒让德多项式的定义计算Pn(x)。n和x为任意正整数,把计算Pn(x)定义成递归函数。

1 n=0 Pn(x) = x n=1 ((2n-1)Pn-1(x)-(n-1)Pn-2(x))/n) n>1

答:程序参见文件Cprogram\\

#include \

float p(float x,int n) {float f; if(n==0) f=1;

else if(n==1) f=x; else

f=((2*n-1)*p(x,n-1)-(n-1)*p(x,n-2))/n;

return f; }

main() {

printf(\}

习题八 用户标识符的作用域和存储类 一.选择题

1—10:ADBBC CABDB 11-20: DBABC CCDAC 二.填空题

1. 静态局部变量的作用域是 从定义点到函数体(或复合语句)结束 。 2. 凡在函数中未指定存储类别的变量,其隐含的存储类别为 auto 。 3. 变量的作用域是指变量的有效范围,在作用域内可以引用该变量。按作用域来说,变量可分为 ①局部 变量和 ②全局 变量。

4. 根据函数能否被其它源文件调用,函数可分为 ① 外部函数和 ②静态(或内部)函数。

5. 下列程序的输出结果是 2468 。 #include <>

#define MAX_COUNT 4 void fun();

main()

{ int count; for(count=1; count<=MAX_COUNT; count++) fun(); }

void fun()

{ static int i; i+=2; printf(\ } 6. 下列程序的输出结果是 2,5,1,2,3,-2 。

main()

{ int a=3,b=2,c=1;c-=++b; b*=a+c;

{ int b=5,c=12; c/=b*2; a-=c; printf(“%d,%d,%d,”,a,b,c); a+=--c; } printf(“%d,%d,%d\\n”,a,b,c); }

7. 下列程序的输出结果是 。

#include <> static int a=5; main()

{ printf(“a=%d\\n”,a); p1(); p2();} p1()

{ printf(“a*a=%d\\n”,a*a); a=2;} p2()

{ printf(“a*a*a=%d\\n”,a*a*a);} 8. 下列程序的输出结果是 20,10 。

#include <> main()

{ int x=10;

{ int x=20; printf(“%d,”,x); } printf(“%d\\n”,x); }

9. 下列程序由两个文件组成,其运行结果是 x=2 。

/* 文件1 */ int x; sub()

{x=4; }

/* 文件2 */

static int x=2; main()

{sub();printf(“x=%d\\n”,x); }

10. 下列程序由两个文件组成,其运行结果是 x=25,y=25 。 /* 文件1 */

#include <>

int x=10;int y=10; void add(void)

{ y=x+10; x*=2;} main()

{ extern void sub(); x+=5; add(); sub();printf(“x=%d,y=%d\\n”,x,y);} /* 文件2 */

void sub(void)

{ extern int x; x-=5;}

a=5 a*a=25