c语言函数章节经典.pptVIP

  • 7
  • 0
  • 约1.27万字
  • 约 69页
  • 2018-07-05 发布于湖北
  • 举报
c语言函数章节经典

西安电子科技大学计算机学院 * 走楼梯( Fibonacci数列) 楼梯有n阶台阶,上楼可以一步上1阶,也可以一步上2阶,编一程序计算共有多少种不同的走法. 西安电子科技大学计算机学院 * 用递归方法解决求一个整数各位数字之和 假设整数为n,各位数字之和为sum 递归结束条件:n10,sum=n 递归定义: n10,sum=个位数+去掉个位数之后各位数字之和 #include stdio.h int sum(int n) { if( n10 ) return n; else return n%10 + sum(n/10); } int main() { int n; scanf(%d,n); printf(sum=%d\n,sum(n)); return 0; } * 西安电子科技大学计算机学院 * 小结 定义函数的要素 函数头 函数名—使用函数需要的名称,合法的标识符 返回值类型—函数计算结果的类型 参数表—完成计算需要的数据(数量和类型) 函数体 double c_area ( double r ) { return r * r * 3.1416; } 返回值类型 函数名 参数表 函数体 函数头 * 小结 函数定义中的形参和函数调用中的实参 #include stdio.h #include math.h double c_area (double r) { return pow(r, 2) * 3.1416; } int main () { double v; v=2.4 * c_area( 3.24 ) / 3.0; return 0; } 形参 实参 实参 实参 形参是定义函数时用来表示函数输入数据类型和名称的变量定义 实参是调用函数时实际传入的数据,可以是变量、常数、表达式或其他函数调用返回的值 西安电子科技大学计算机学院 * 小结 局部变量 在函数内部定义的变量、形式参数、复合结构内定义的变量 全局变量 在所有函数之外定义的变量 递归函数 函数直接或间接调用自己形成递归 西安电子科技大学计算机学院 * 作业 P76~P77:8,15 P129~P130:5,20 西安电子科技大学计算机学院 * 课堂练习 写一个函数判断传入的整数n(100n1000)是不是“水仙花数”,是返回1,否则返回0 如果一个3位整数各位数字的立方和等于这个数就是水仙花数 西安电子科技大学计算机学院 * 4.3 变量作用域(教材5.4) 西安电子科技大学计算机学院 * swap函数的问题 参数传递是赋值传递,修改函数参数(形参)对原来的数据(实参)没有影响,因此不能完成交换数据的任务 解决方法 方法1:修改需要交换的数据的作用域,将其变为全局变量 方法2:通过参数传递需要交换的数据的地址 西安电子科技大学计算机学院 * 变量作用域 作用域:变量的有效范围,也就是变量的生存范围 局部变量: 函数参数,其作用域为整个函数 函数内的变量,其作用域为变量定义位置到函数结束位置 复合语句内的变量,其作用域为变量定义位置到复合语句结束位置 全局变量 定义在所有函数之外的变量,其作用域为变量定义位置到程序结束位置 #include stdio.h int a=10,b=10; //全局变量 void func1(){ printf(func1:a=%d,b=%d\n,a,b); } void func2(){ int a=30,b=30; printf(func2:a=%d,b=%d\n,a,b); } int c=1,d=1; void func3(int a,int b){ printf(fuc3:a=%d,b=%d\n,a,b); } int main(){ int a=20,b=20; … { int a=40,b=40; … } … } 全局变量a,b的作用域 全局变量c,d的作用域 局部变量a,b的作用域 函数参数a,b的作用域 main函数局部变量a,b的作用域 复合结构内a,b的作用域 * 西安电子科技大学计算机学院 * 使用全局变量的swap函数 void swap(){ int t; t = a; a = b; b = t; } int main(){ printf( before swap: a= %d; b= %d\n, a, b ); swap(); printf( after swap: a= %d; b=%d\n, a, b ); return 0; } int a=5, b=3; 西安电子科技

文档评论(0)

1亿VIP精品文档

相关文档