引 言
一、教学目的
通过介绍C语言的函数的概念、定义和调用,要求掌握函数的定义、调用方式,了解函数形参和实参的特点,掌握函数的嵌套调用和递归调用,并能熟练编写具有一定功能的函数。
二、知识要点
1.概述
(1)C语言函数的分类
(2)C语言中函数的执行过程
2.函数的定义
(1)函数的定义的一般形式
(2)函数形参的使用及其注意事项
3.函数的返回值
4.函数的调用
(1)函数调用的形式
(2)函数实参的使用及其注意事项
(3)函数实参和形参的关系
(4)函数的声明
(5)函数的嵌套调用
5.函数的递归调用
(1)编写递归调用函数的方法
(2)函数递归调用的注意事项
三、边用边学
§6.1 概述
C程序是由一个主函数和其它若干函数构成,每个函数实现一定的功能,其中主函数main()是必需的,其它函数被主函数调用或者其它函数之间相互调用。C语言的函数可以分为三类:主函数main()、库函数(如printf()、scanf()等)和用户自定义函数。函数的使用不仅简化了主函数,而且符合模块化程序设计方法。
C程序总是从主函数开始执行,其它函数只有在被主函数或其它正在执行的函数调用时才能被程序执行,执行后返回调用函数,最后返回到主函数,在主函数中结束整个程序的运行。
所有的函数在定义时是相互独立的,它们之间是平行关系,所以不能在一个函数内部定义另一个函数,即不能嵌套定义。函数间可以互相调用,但是不能调用主函数。
§6.2 函数的定义
一、函数的定义
常见的函数定义的形式如下:字符串函数用法
类型标识符函数名(形参类型说明表列)
{
函数体
}
类型标识符为函数的类型,与return语句返回值的类型相同,可以理解为函数最终的结果的类型。它可以是任何一种有效的类型,当函数类型标识符缺省时默认是整型。如果函数无返回值时,类型标识符为void。
函数名要符合C语言规定的标识符的命名规则,函数名字必须唯一,不能与函数体内变量或形式参数名相同。
形参类型说明表中的形参用于接受主调函数传递过来的数值。形参的命名只要符合变量的命名规则即可,无需与主调函数中的变量名一致。如果函数不需要从主调函数处接受数据,可以不带形参,此时形参类型说明表是空的,但是函数名后面的圆括号不能省。
函数体也可以是空的。
§6.3 函数的返回值
在调用函数时,有时需要将运算结果返回主调函数,此时需要使用return语句返回一个值,称作函数返回值。return语句形式如下:
return (表达式);
表达式可以是一个变量、常量或者表达式。
函数返回值的类型应该与函数类型一致,如果不一致时,函数类型决定返回值的类型。
函数没有返回值时,函数类型说明为void。
§6.4 函数的调用
一、函数调用的一般形式
函数调用的一般形式为:
函数名(实参表列);
关于参数调用注意以下几点:
1.如果实参表列中含有多个参数,则各参数用逗号间隔。实参表列也可以没有,但括号不能省略。
2.实参和形参必须个数相等、类型一致、顺序对应,进行数据的“值传递”。特别要注意的是:实参和形参之间是“单向的值传递”。
3.实参可以是常量、变量、表达式或函数。例如:
4.函数同变量一样,在调用前应该在主调函数中事先说明,即“声明”。
声明的方法是在主调函数开始位置加上被调函数的“函数原型”,即函数定义的第一行。有两种情况可以不用声明:一是当被调用函数的定义的位置在主调函数之前,二是被调用函数是整型int。
二、函数的嵌套调用
C语言中函数不能嵌套定义,但是可以嵌套调用,即在调用一个函数的过程中可以又调用另一个函数。
§6.5 函数的递归调用
C语言的函数调用允许直接或间接地调用该函数本身,称为函数的递归调用。递归调用函数的使用可以解决具有递归性质的问题。
在编写递归算法的时要特别注意:递归调用必须可以满足一定条件时结束递归调用,否则无限地递归调用将导致程序无法结束。
作业与上机练习
1.写一个函数int prime(int x),如果x是素数返回值为1,否则返回0。并用主函数验证它。
2.写一个函数double power(double x, int n),其返回值为,并用此函数计算。
3.求1到10共10个数中取出3个不同的数,共有多少种组合方式?
算法:使用数学中的组合公式,其中m=10,n=3。
4.用递归算法编写求Fibonacci数列第n项值的函数fib(int n),并用主函数输出它的前20项来验证该函数。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论