第七章函数_.ppt

第七章函数_

第七章 函数;本章要点;第七章 函数;【例7.1】从键盘输入一个整数,并求此数的立方。; 函数的种类;2. 不返回结算结果的函数定义;在C语言中,把函数调用也作为一个表达式。因此凡是表达式可以出现的地方都可以出现函数调用。例: ① welcome( ); /*没有返回值或没有使用返回值*/ ② if (abs (a)max) max=abs(a); /*使用返回值*/ ③ m=max(c,max(a,b)); /*使用返回值*/;int sum ( ) { int i,t=0; for (i=1; i=100; i++) t+=i; return (t); } main( ) { int s; s=sum ( ); printf(%d\n, s); };形参与实参 形式参数:定义函数时函数名后面括号中的变量名 实际参数:调用函数时函数名后面括号中的表达式; 若形参与实参类型不一致,自动按形参类型转换(隐式转换)。;int cube (int x) /* 函数定义 */ { return (x * x * x); } main( ) { int f, a; printf(\nEnter an integer number:); scanf(%d, a); f = cube (a); printf(%d * %d * %d = %d\n, a, a, a, f); };7;main() { int i=2,p; p=f(i,++i); printf(%d,p); } int f(int a, int b) { int c; if(ab) c=1; else if(a==b) c=0; else c=-1; return(c); } ;若函数类型与return语句中表达式值的类型不一致,按前者为准,自动转换------函数调用转换;【例7.7】 计算并输出圆的面积。;printstar() { printf(**********); } main() { int a; a=printstar(); printf(%d,a); }; ;main() { float add(float,float); /*function declaration*/ float a,b,c; scanf(%f,%f,a,b); c=add(a,b); printf(sum is %f,c); } float add(float x, float y) /*函数定义*/ { float z; z=x+y; return(z); };【例7.8】求100以内的全部素数,每行输出10个。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。;7.3 数组作为函数参数;7.3.2 数组名作函数参数------地址传递;【例7.10】 求10个学生的平均成绩.;【例7.11】 数组元素与数组名作函数参数比较;;【例7.12】 数组排序 --简单选择排序;【例7.13】 求二维数组中最大元素值;【例7.14】 求二维数组中各行元素之和;7.4.1 函数的嵌套调用;【例7.15】 求三个数中最大数和最小数的差值;定义:函数直接或间接的调用自身叫函数的递归调用。;【例7.16】 求n的阶乘; 递归函数的执行过程(以4!为例); 编制递归函数的方法;程序:; 变量的属性 数据类型: 决定了分配的内存单元长度, 数据存放形式, 数的范围。 一个变量数据类型定义放的位置决定该变量的作用域(在某区域中有效): 全局或局部。;1. 局部变量---内部变量 定义:在函数内定义,只在本函数内有效 说明: main中定义的变量只在main中有效 不同函数中同名变量,占不同内存单元 形参属于局部变量 可定义在复合语句中有效的变量 局部变量可用存储类型:auto static (默认为auto); 定义:在函数外定义 作用域:从定义变量的位置开始到本源文件结束,及有extern说明的其它源文件;float max,min; float average(float array[], int n) { int i; float sum=array[0]; max=min=array[0]; for(i=1;in;i++) { if(array[

文档评论(0)

1亿VIP精品文档

相关文档