第七章函数_
第七章 函数;本章要点;第七章 函数;【例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)