内容正文:
项目六 函数
1
C语言程序设计基础
知识目标
理解函数
掌握函数的用法
掌握函数的嵌套调用
掌握动态存储变量、静态存储变量及寄存器变量的使用
掌握内部函数和外部函数的使用
技能目标
学会函数的定义与调用
学会函数参数的传递
学会函数的返回值使用
学会函数的嵌套调用
学会动态存储变量、静态存储变量的使用
思政目标
提高学习能力,培养顽强意志、不怕挫折的人生态度
培养团队合作精神
2
任务1
——函数的定义及调用
基础篇
3
1. 概念:
一个较大的程序可由若干程序模块组成,每一个模块用来实现一个特定的功能;用子程序可实现该模块功能,在C语言中,子程序称为子函数。在C程序中,可由一个主函数和若干个子函数构成。
函数——基础篇
1.1函数概述
4
2. 分类:
(1)根据参数分为:
1)无参函数
2)有参函数
(2)根据定义分为:
1)标准函数(库函数)
2)用户自定义函数:
函数——基础篇
5
定义函数应包括以下几个内容:
指定函数的名字,以便以后按名调用。
指定函数的类型,即函数返回值的类型。
指定函数的参数的名字和类型,以便在调用函数时向它们传递数据。对无参函数不需要这项。
指定函数应当完成什么操作,也就是函数是做什么的,即函数的功能。这是最重要的,是在函数体中解决的。
函数——基础篇
1.2函数的定义
6
对于C编译系统提供的库函数,是由编译系统事先定义好的,库文件中包括了对各函数的定义。程序设计者不必自己定义,只须用#include指令把有关的头文件包含到本文件模块中即可。
例如:在程序中若用到数学函数(如sqrt,fabs,sin,cos等),就必须在本文件模块的开头写上: #include <math.h>
函数——基础篇
7
定义一个C函数的语法格式如下:
返回值类型 函数名([形参表列])
{
函数体
[return 返回值;]
}
函数——基础篇
8
返回值类型:用于限定函数返回值的数据类型,默认int型。
函数名:用户定义的合法的标识符来代表该函数的名称,尽量使用该函数实现功能的英文单词来命名。
形参表列:函数调用时传递信息的通道,由零个或多个形参组成,多个形参彼此之间用逗号分隔。有形参的函数称为有参函数,没有形参的函数称为无参函数,但函数名后的“()”不能省略。
函数体:该函数实现功能的具体代码。包括定义部分、执行部分。
return:用于结束函数,将程序的执行流程返回到函数调用处或将返回值返回给函数调用处。
返回值:函数实现功能必须传递数据给函数调用处,则该数据即为返回值。
函数——基础篇
9
【例6-1】打印两行等号作分割线,中间输出信息。
【解题思路】定义printSign函数输出等号分割线,定义printMessage函数输出信息。在主函数中分别调用两次printSign函数和一次printMessage函数。
函数——基础篇
10
【程序代码】
函数——基础篇
11
【运行结果】
函数——基础篇
12
【例6-2】求期末考试平均分。
【解题思路】定义printSign函数输出等号分割线,定义printMessage函数输出信息。在主函数中分别调用两次printSign函数和一次printMessage函数。
函数——基础篇
13
【程序代码】
函数——基础篇
14
【运行结果】
函数——基础篇
15
【例6-3】判断是否支付成功。
【解题思路】定义checkPay函数接收主函数传递过来的付款金额pay和商品价格price,进行比较,相同返回1,不相同返回0。main()函数负责定义pay和price变量,负责pay、price变量的初始化,调用checkPay函数,根据返回值判断支付结果并在屏幕上输出结果。
函数——基础篇
16
【程序代码】
函数——基础篇
17
【运行结果】
函数——基础篇
18
1. 格式
函数调用的一般形式为:
函数名([实参表列])
例如:调用例6-3的函数的语句为
result=checkPay(pay,price);
函数——基础篇
1.3函数的调用
19
2.方式
(1)函数调用语句:把函数调用单独作为一个语句。
如:printfSign();
(2)函数表达式:函数调用出现在另一个表达式中,
如:max=maximum(a,b);,maximum(a,b)是一次函数调用,它是赋值表达式中的一部分。
(3) 函数参数:函数调用作为另一个函数调用时的实参。
如:max=maximum(a,maximum(b,c));
函数——基础篇
20
3.对被调函数的声明和函数原型
调用一个函数应该具备以下条件:
函数已经存在,可以是库函数或自定义函数。
如果使用库函数,应该在源文件的头部用#include命令将相应的库文件包含到源文件中。
如果使用自定义函数,且该函数与调用它的函数在同一个源文件中,则一般在主调函数中对被调函数作声明,也称为函数原型。
函数——基础篇
21
(1)声明方法:
一般形式为:
函数类型 函数名(参数类型1,参数类型2,…,参数类型n);
或:
函数类型 函数名(参数类型1 参数名1,参数类型2 参数名2,…);。
函数——基础篇
22
(2)声明作用:
在调用函数之前,通知编译系统关于被调用函数的名字、函数类型、形参类型、个数、顺序等信息,以便在调用该函数时,系统按照次进行检查,查看是否函数名正确,形参和实参是否匹配。
函数——基础篇
23
(3)注意事项:
如果在函数调用之前,没有对函数进行声明,则编译系统把第一次遇到的该函数的形式(函数定义或调用),作为函数的声明。函数类型默认为int型。
函数的返回值是整型或字符型,则可以不进行函数声明。
如果函数定义在调用函数之前,则可以不进行函数声明。
函数声明是通知编译系统关于被调用函数的信息,函数定义是对函数功能的确立。
函数——基础篇
24
(4)声明的位置:
函数声明与变量声明类似,函数声明的位置决定了函数的使用范围,如果函数定义或函数声明出现在主函数的外部,则在主函数中省略函数声明。
函数——基础篇
25
【例6-4】使用函数声明的方式实现判断是否支付成功。
【解题思路】为了检验函数声明的作用,首先将checkPay函数放置在main()函数后。如果报错,则在程序的最开头加上函数声明语句。
函数——基础篇
26
【程序代码1】
函数——基础篇
27
【运行结果】
函数——基础篇
28
【程序代码2】
//函数声明
函数——基础篇
29
【运行结果】
函数——基础篇
30
$$