内容正文:
第6章
函
数
函数是C语言程序的基本模块,由于采用了函数模块式的结构,
C语言易于实现结构化程序设计,使程序的结构清晰、减少重复编写
程序的工作量、提高程序的可读性和可维护性。
函数的定义与调用
函数间的数据传递方法
数的递归调用
变量的作用域和存储类型
编译预处理命令
6.1丞数慨述
·如果软件可划分为可独立命名和编程的部件,则每个部件称为一个模块。
·模块化就是把系统划分成若干个模块,每个模块完成一个子功能,把这些模块集中
起来组成一个整体,从而完成指定的功能,满足问题的要求。
图书管理系统
图书采偏
读者管理
图书流通。
图书查面
输入图多信息
借书
述书
#include "spl.c"
void main()
int m,n;
int p(int),
scanf("od.%od",&m,&n);
if(m>n)
printf("od"p(m)/p(m-n)).
else
printf"mnn")方
int p(int k)
int s,i;
g=13
fo(i=1:i<=k:i计+)
s*-i,
retm(s)方
函数的分类
在C语言中,函数分为以下两种:
(1)标准库函数
这种函数用户不必定义,但可直接使用。例如scanf(0、
printf()、fabs()、sprt)、exp(0、sin()、cos(0等都是c语言
中常用的库函数,C语言功提供了六大类的库函数,比如数
学函数,字符函数,字符串函数(P359附录B)等。
#include *.h"
#include "stdio.h"
(2)用户自己定义的函数
函数的声明与定义
当用户需要利用函数来完成某一项的任务,又没有
相应的库函数可以使用时,就必须写一个函数来完成指
定的任务。
在编写的函数时候,必须遵循先声明、后定义、
再使用的原则,也就是说先要定义好函数的数据类
型、存储类型和函数体,然后才能使用。
#include"stdio.h"
main()
int a,b,c,max,min,t;
int max2(int x,int y);
int min2(int x,int y);
函数的声明
void paixu3(int x,int y,int z);
scanf("%d%d%d",&a,&b,&c);
max=max2(a,b);max=max2(max,c);
min=min2(a,b);min=min2(min,c);
函数的调用
paixu3(a,b,c);
printf("max=%d,min=%d
",max,min);
丞数定义
形参的数据类型
函数返回值
的类型
int
max(int x,int y)
声明部
{
int m;
if (x>y)
m=X;
形参名
函数名
else
m=y;
return m;
执行
部分
函数体
6.2.2函数的参数和返回值
函数的参数分为形式参数和实际参数两种。
·形式参数(形参):函数定义时设定的参数。
。实际参数(实参):调用函数时所使用的实际的参数。
·形参和实参的功能是进行数据传递。
发生函数调用时,主调函数把实参的值传递给被调函数的形参,从而实现主调函
数向被调函数的数据传递。
C语言可以从函数(被调用函数)返回值给调用函数(这与数学函数相当类似)。
。
在函数内是通过return语句返回值的。
·使用reum语句能够返回一个值或不返回值(此时函数类型是void)。
return语句的格式为:
●return
[表达式]或ehrm(表达式:
说明:
(1)函数的类型就是返回值的类型,return语句中表达式的类型应
该与函数类型一致。如果不一致,以函数类型为准(赋值转化)。
(2)函数类型省略,默认为int。
(3)如果函数没有返回值,函数类型应当说明为VOid(空类型)
6.2.3丞数的声明
函数定义的位置可以在调用它的函数之前,也可以在调用它的函数之后,甚至
可位于其他的源程序模块中。
若函数定义位置在前,函数调用在后,不必声明,编译程序产生正确的调用格
式。
若函数定义在调用它的函数之后或者函数在其他源程序模块中,且函数类型不
是整型,这时,为了使编译程序产生正确的调用格式,可以在函数使用前对函
数进行声明。
。
函数声明的格式为:
·函数类型函数名((形式参数表);
·h文件内许多都是函数声明,当源程序要使用库函数时,就应当包含相应的头
文件。