#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