本次课内容:函数
教学目的:掌握 C程序结构、函数定义、函数声明、函数的传值
调用和嵌套调用。
重点:函数定义、函数声明、传值调用和嵌套调用。
难点:形参、实参和传值。
预习,main()
{
double af(double r),cf(double r);
printf(“面积 =%f”,af(2.0));
printf(“\t周长,=%f\n”,cf(2.0));
}
double af(double r)
{
return(3.141592654*r*r);
}
double cf(double r)
{
return(2.0*3.141592654*r);
}
main()
{
,
af();
,
cf();
,
}
af()
{
,
}
cf()
{
,
}
一,C程序结构
执行 C程序,就是执行相应的 mani()函数。
在 main()函数中可以调用其他函数,这些函数还可以调用另外的
函数。
main()
{
,
f1();
,
f2();
,
}
f1()
{
,
f11();
,
}
f2()
{
,
f21();
,
f22();
,
}
f11()
{
,
}
f21()
{
,
}
f22()
{
,
}
main()
f1() f11()
f2() f21()
f22()
二,函数的定义与声明
定义函数:就是在程序中设定一个模块。
函数声明:是对所用到的函数的特征进行必要的声明。
1、函数定义
定义内容:函数类型、函数名、形参类型及数目、函数体
内容。
(1)函数名
符合 C语言对标识符的规定。
(2)形式参数
函数后括号内的内容
作用:表示从主调函数中接收哪些类型的信息。
如,double new_style(int a,double x)
函数体中可引用形参。
注:形参不调用时不分配空间,调用结束空间释放。
(3)函数体
函数体是一个分程序结构,由变量定义部分和语句组成。
(4) 函数的返回
函数执行完毕后返回。返回意义,
* 返回到主调函数,释放函数分配的空间;
* 送函数值到调用表达式中。
函数值通过 return(表达式)完成。无此句仅返回主调函数,无值。
如,p106_例 4.4
(5)函数的类型
函数类型即函数返回值的类型。
如,double new_style(int a,double x)
(6)函数的外部性
函数定义不能嵌套。
2、函数声明
主调函数中,对要调用的函数要事先声明。
格式,
类型标识符 函数名(类型标识符 形参,类型标识符 形参,…) ;
如,double new_style(int a,double x)
注:定义写在调用之前,可以略去声明。
三、函数的传值调用
参数是函数调用时进行信息交换的载体。
采用变量参数时,实参与形参是按值方式传递的。
传值调用过程,
实参 形参(临时)
特点:形参变量的操作不会影响实参。
四、函数的嵌套调用
在调用一个函数的过程中又调用另一个函数的过程。
如图 P111 _ 4.7所示。
如,P109_例 4.7
例:求两个数的最大公约数。(下页)
例,P137_4.9,4.10,4.11,4.12
x y
return
求最大公约数
main()
{
int m,n;
int fu(int x,int y);
scanf(“%d,%d\n”,&m,&n);
printf(“%d\n”,fu(m,n));
}
int fu(int x,int y)
{
int r,t;
do
{
if (x<y)
{
t=x;x=y;y=t;
}
r=x%y;
if (r==0)
return(y);
else
{
x=y;
y=r;
}
}while(r!=0);
}
小结,
1、函数的定义、声明;
2、函数的传值和嵌套。
课后阅读,P104~P110
教学目的:掌握 C程序结构、函数定义、函数声明、函数的传值
调用和嵌套调用。
重点:函数定义、函数声明、传值调用和嵌套调用。
难点:形参、实参和传值。
预习,main()
{
double af(double r),cf(double r);
printf(“面积 =%f”,af(2.0));
printf(“\t周长,=%f\n”,cf(2.0));
}
double af(double r)
{
return(3.141592654*r*r);
}
double cf(double r)
{
return(2.0*3.141592654*r);
}
main()
{
,
af();
,
cf();
,
}
af()
{
,
}
cf()
{
,
}
一,C程序结构
执行 C程序,就是执行相应的 mani()函数。
在 main()函数中可以调用其他函数,这些函数还可以调用另外的
函数。
main()
{
,
f1();
,
f2();
,
}
f1()
{
,
f11();
,
}
f2()
{
,
f21();
,
f22();
,
}
f11()
{
,
}
f21()
{
,
}
f22()
{
,
}
main()
f1() f11()
f2() f21()
f22()
二,函数的定义与声明
定义函数:就是在程序中设定一个模块。
函数声明:是对所用到的函数的特征进行必要的声明。
1、函数定义
定义内容:函数类型、函数名、形参类型及数目、函数体
内容。
(1)函数名
符合 C语言对标识符的规定。
(2)形式参数
函数后括号内的内容
作用:表示从主调函数中接收哪些类型的信息。
如,double new_style(int a,double x)
函数体中可引用形参。
注:形参不调用时不分配空间,调用结束空间释放。
(3)函数体
函数体是一个分程序结构,由变量定义部分和语句组成。
(4) 函数的返回
函数执行完毕后返回。返回意义,
* 返回到主调函数,释放函数分配的空间;
* 送函数值到调用表达式中。
函数值通过 return(表达式)完成。无此句仅返回主调函数,无值。
如,p106_例 4.4
(5)函数的类型
函数类型即函数返回值的类型。
如,double new_style(int a,double x)
(6)函数的外部性
函数定义不能嵌套。
2、函数声明
主调函数中,对要调用的函数要事先声明。
格式,
类型标识符 函数名(类型标识符 形参,类型标识符 形参,…) ;
如,double new_style(int a,double x)
注:定义写在调用之前,可以略去声明。
三、函数的传值调用
参数是函数调用时进行信息交换的载体。
采用变量参数时,实参与形参是按值方式传递的。
传值调用过程,
实参 形参(临时)
特点:形参变量的操作不会影响实参。
四、函数的嵌套调用
在调用一个函数的过程中又调用另一个函数的过程。
如图 P111 _ 4.7所示。
如,P109_例 4.7
例:求两个数的最大公约数。(下页)
例,P137_4.9,4.10,4.11,4.12
x y
return
求最大公约数
main()
{
int m,n;
int fu(int x,int y);
scanf(“%d,%d\n”,&m,&n);
printf(“%d\n”,fu(m,n));
}
int fu(int x,int y)
{
int r,t;
do
{
if (x<y)
{
t=x;x=y;y=t;
}
r=x%y;
if (r==0)
return(y);
else
{
x=y;
y=r;
}
}while(r!=0);
}
小结,
1、函数的定义、声明;
2、函数的传值和嵌套。
课后阅读,P104~P110