《高级语言程设计教学课件》第7章2次课.pptVIP

  • 1
  • 0
  • 约1.23万字
  • 约 49页
  • 2018-12-02 发布于浙江
  • 举报

《高级语言程设计教学课件》第7章2次课.ppt

《高级语言程设计教学课件》第7章2次课

* 【例7-11】编写函数计算数组元素的均方差。方差等于数组中所有元素与其平均值的平方和,它描述的是数据波动的情况,均方差等于方差的平方根。 float rms(float a[], int n) { int i; float ave, var; ave = average(a, n); var = variance(a, n, ave); var = sqrt(var); //计算均方差 return var; } 输入10个数值: 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 这些数值的均方差为:9.0830 * int f(int x) { int y,z; …… z=f(y); ……. return(2*z); } 7.5 函数的递归调用 定义:函数直接或间接的调用自身叫函数的递归调用 int f1(int x) { int y,z; …… z=f2(y); ……. return(2*z); } int f2(int t) { int a,c; …… c=f1(a); ……. return(3+c); } * 说明 C编译系统对递归函数的自调用次数没有限制 每调用函数一次,在内存堆栈区分配空间,用于存放函数变量、返回值等信息,所以递归次数过多,可能引起堆栈溢出 * 【例7-12】编写函数计算整数的阶乘 double fact(int n); main() { int n; scanf(“%d”,n); printf(“%d!=%.0f\n,fact(n)); } double fact(int n) { double f; if(n==1 || n==0) f=1; else f=n*fact(n-1); return (f); } * double fac(int n) { double f; if(n==1 || n==0) f=1; else f=fac(n-1)*n; return(f); } n=4 double fac(int n) { double f; if(n==1 || n==0) f=1; else f=fac(n-1)*n; return(f); } n=3 double fac(int n) { double f; if(n==1 || n==0) f=1; else f=fac(n-1)*n; return(f); } n=2 double fac(int n) { double f; if(n==1 || n==0) f=1; else f=fac(n-1)*n; return(f); } n=1 fac(int n) double f; if(n==1 || n==0) fac(n-1) return(24); 1 fac(int n) double f; if(n==1 || n==0) fac(n-1) return(6); 2 fac(int n) double f; if(n==1 || n==0) fac(n-1) return(2); 3 fac(int n) double f; if(n==1 || n==0) f=1; return(1); 4 * 7.6 变量的作用域 变量定义的3个基本位置 函数内部 函数参数 函数外部 内部变量 外部变量 (局部变量) (全局变量) * 局部变量 定义:在函数内定义,只在本函数内有效 说明 main中定义的变量只在main中有效 形参属于局部变量,即只在函数中有效 不同函数中同名变量,占不同内存单元 复合语句中定义的变量,只在复合语句中有效 float f1(int a) { int b,c; ……. } char f2(int x,int y) { int i,j; …… } main() { int m,n; ……. } a,b,c有效 x,y,i,j有效 m,n有效 * main() { int a=3, b=4; printf(main:a=%d,b=%d\n, a, b); sub(); printf(main:a=%d,b=%d\n, a, b)

文档评论(0)

1亿VIP精品文档

相关文档