文档介绍:第7章函数
课堂提问
!
,n,m =n!/(m!*(n-m)!)
引例
第八章函数
概述-为什么要用函数
模块化程序设计
基本思想:将一个大的程序按功能分割成一些小模块,
特点:
各模块相对独立、功能单一、结构清晰、接口简单
控制了程序设计的复杂性
提高元件的可靠性
缩短开发周期
避免程序开发的重复劳动
易于维护和功能扩充
开发方法: 自上向下,逐步分解,分而治之
C是模块化程序设计语言
C程序结构
C是函数式语言
必须有且只能有一个名为main的主函数
C程序的执行总是从main函数开始,在main中结束
函数不能嵌套定义,可以嵌套调用
函数分类
从用户角度
标准函数(库函数):由系统提供
用户自定义函数
从函数形式
无参函数
有参函数
使用库函数应注意:
1、函数功能
2、函数参数的数目和顺序,及各参数意义和类型
3、函数返回值意义和类型
4、需要使用的包含文件
函数的定义
为什么要定义函数
C语言要求,在程序中用到的所有函数,必须“先定义,后使用”
指定函数名字、函数返回值类型、函数实现的功能以及参数的个数与类型,将这些信息通知编译系统。
指定函数的名字,以便以后按名调用
指定函数类型,即函数返回值的类型
指定函数参数的名字和类型,以便在调用函数时向它们传递数据
指定函数的功能。
一般格式
合法标识符
函数返回值类型
缺省int型
无返回值void
函数体
函数类型函数名(形参类型说明表)
{
说明部分
语句部分
}
例有参函数(现代风格)
int max(int x,int y)
{ int z;
z=x>y?x:y;
return(z);
}
例有参函数(现代风格)
int max(int x, y)
{ int z;
z=x>y?x:y;
return(z);
}
例空函数
dummy( )
{ }
函数体为空
例无参函数
printstar( )
{ printf(“**********\n”); }
或
printstar(void )
{ printf(“**********\n”); }
调用函数
按函数调用在程序中出现的形式和位置来分,可以有以下3种函数调用方式:
1. 函数调用语句
如 printf_star();
这时不要求函数带回值,只要求函数完成一定的操作
如c=max(a,b);
3. 函数参数
函数调用作为另一函数调用时的实参
如m=max(a,max(b,c));
函数调用时的数据传递
在调用有参函数时,主调函数和被调用函数之间有数据传递关系
定义函数时函数名后面的变量名称为“形式参数”(简称“形参”)
主调函数中调用一个函数时,函数名后面参数称为“实际参数”(调用函数时函数名后面括号中的表达式,简称“实参”)
实际参数可以是常量、变量或表达式
函数调用时的数据传递
c=max(a,b);
(main 函数)
(max 函数)
max(int x, int y)
{ int z;
z=x>y?x:y;
return(z);
}
,要求输出其中值较大者。要求用函数来找到大数。
main()
{ int a,b,c;
scanf("%d,%d",&a,&b);
c=max(a,b);
printf("Max is %d",c);
}
max(int x, int y)
{ int z;
z=x>y?x:y;
return(z);
}
形参
实参