大学计算机C语言函数(1 函数的定义和使用)_第1页
大学计算机C语言函数(1 函数的定义和使用)_第2页
大学计算机C语言函数(1 函数的定义和使用)_第3页
大学计算机C语言函数(1 函数的定义和使用)_第4页
大学计算机C语言函数(1 函数的定义和使用)_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、12一、函数的概念一、函数的概念 函数是形式上独立、功能上完整的程序段(块)。在C程序设计中常将一些常用功能模块编写成函数。函数可以完成特定的计算或操作处理功能。 C程序由函数组成;函数在形式上是平行的,不允许嵌套定义;C程序只执行主函数,子函数必须通过主函数或其他子函数的调用才能被执行;子函数不能调用主函数。实质上,设计程序就是设计函数。3二、函数的分类二、函数的分类(一)从用户的角度分(一)从用户的角度分1.1.标准函数,即库函数标准函数,即库函数 ANSI CANSI C预先定义的用户可直接使用的函数;预先定义的用户可直接使用的函数;使用库函数使用库函数时,必须用时,必须用#includ

2、e#include把该函数所在的头文件包含进来。把该函数所在的头文件包含进来。2.2.用户自定义函数用户自定义函数 是用户为了解决各种应用问题而自行设计的函是用户为了解决各种应用问题而自行设计的函数数。用户自定义函数必须先定义后使用用户自定义函数必须先定义后使用! !(二)从形式上分(二)从形式上分1.1.无参函数:无参函数: 即无形式参数的函数。即无形式参数的函数。 如:如:getchargetchar()()2.2.有参函数有参函数 即带有形式参数的函数即带有形式参数的函数 如:如:putcharputchar( (chch) )、sqrtsqrt(x)(x)4三、函数的定义三、函数的定义

3、1、 无参函数的定义无参函数的定义 函数名函数名( void ) 函数体函数体其中:函数返回值类型表示函数的返回结果值类型,函数只能其中:函数返回值类型表示函数的返回结果值类型,函数只能有一个返回值,若函数无返回值即用有一个返回值,若函数无返回值即用void声明;返回函数值需声明;返回函数值需使用:使用:return 变量变量|表达式;表达式; 函数名由用户按标识符的命名规则自行给定,但不能与函数名由用户按标识符的命名规则自行给定,但不能与标准函数同名;标准函数同名; 圆括号中的关键字圆括号中的关键字void表示函数无形式参数;表示函数无形式参数; 函数体是由实现函数功能必需的语句组成。函数体

4、是由实现函数功能必需的语句组成。5例例1:无参函数的定义。:无参函数的定义。#includevoid PrintMessage (void)printf(t*n);printf(t Programming is fun.n);printf(t*n);int main(void)PrintMessage ( );PrintMessage ( );PrintMessage ( );return 0;6数据类型数据类型2 2、有参函数的定义、有参函数的定义7函数首部函数首部例例2 2:定义有参函数计算两个整数的平均。:定义有参函数计算两个整数的平均。8形参为整形变量形参为整形变量x x和和y y变量

5、变量a1a1和和b1b1为实际参数为实际参数9四、函数的调用四、函数的调用10有返回值时(有返回值时(即函数功能为某种计算功能即函数功能为某种计算功能)返回值返回值 = = 函数名函数名( (实参表列实参表列););无返回值时(无返回值时(即函数功能是完成某种操作或处理)即函数功能是完成某种操作或处理)函数名函数名( (实参表列实参表列););2 2、具体调用形式、具体调用形式11 12例例3:定义求:定义求n!函数,然后调用该函数求函数,然后调用该函数求sum=1!+2!+3!+m!的值。的值。1314#include int max ( int x, int y ) int z;if (x

6、 y) z = x;else z = y;return (z);int main(void) int a = 45, b = 78, c = 99, d, e;d = max(a, b); printf(max1 = %dn, d);printf(max2 = %dn, max(a, b);e = c - max(a, b);printf(e = %dn, e);printf(max3 = %dn, max(max(a, b), c);return 0;例例4:函数定义与调用:函数定义与调用max1 = 78max2 = 78e = 21max3 = 99该程序的输出是什么?15例例5:定义求

7、素数的函数,然后调用该函数求定义求素数的函数,然后调用该函数求100到到200之间的所有素数。之间的所有素数。#include #include int Prim(int x) int i, j, k; k = (int)sqrt(i); for ( j = 2; j = k + 1) return 1; else return 0; int main(void) int i; for (i = 100; i = 200; i+) if ( Prim(i) ) printf(“%d, ”, i); return 0 ; 17五、函数原型声明(五、函数原型声明(prototype)1 1、为什么

8、要声明函数原型?、为什么要声明函数原型? 函数应该先定义,然后才能调用。但是,如果函数的调用出现在函数的定义之前,就必须对被向前调用的函数进行函数原型声明,否则就会出现函数调用错误。2 2、声明格式:、声明格式: 函数类型 函数名(类型名1 形参数1,);或 函数类型 函数名(类型名1,类型名2,);注意:如果函数严格遵循先定义后调用原则就无需进行函数原型声明。18例例6 6:函数原型声明(先调用后定义函数):函数原型声明(先调用后定义函数)#include double Fac(int n);int main(void) f1 = Fac(m); double Fac(int n) .函数F

9、ac的原型声明先调用函数Fac函数Fac的定义出现在调用之后19函数定义函数定义函数调用函数调用例例7:以下函数为先定义后调用,不用声明原型:以下函数为先定义后调用,不用声明原型20例例 8:函数的原型声明函数的原型声明(先调用后定义先调用后定义)21int main()a();return 0;a 函数函数b();return;b函数函数return;六、函数的嵌套调用六、函数的嵌套调用 在调用一个函数的过程中,又调用其他的函数,称为在调用一个函数的过程中,又调用其他的函数,称为函数的嵌套调用。函数的嵌套调用。 以下为函数调用与调用返回过程:以下为函数调用与调用返回过程:22例例9 9:函数

10、的嵌套调用:函数的嵌套调用b函数函数main调用调用add函数函数调用调用b函数函数add函数函数 结束结束23七、函数的递归调用七、函数的递归调用 在调用一个函数的过程中,出现直接或间接地调用该在调用一个函数的过程中,出现直接或间接地调用该函数本身,称为函数的递归调用。函数本身,称为函数的递归调用。int f(int x)int y, z;z = f(y);return (2 * z);f函数调用f函数f1函数调用f2函数f2函数调用f1函数24例例1010:函数的递归调用:函数的递归调用 有有3个人坐在一起,问第个人坐在一起,问第3个人多少岁?他说比第个人多少岁?他说比第2个人大个人大2岁

11、。问第岁。问第2个人多少岁?他说比第个人多少岁?他说比第1个人大个人大2岁。最后问第岁。最后问第1个人,个人,他说是他说是10岁。请问第岁。请问第3个人多大?个人多大?分析:分析:age(3)=age(2)+2;age(2)=age(1)+2;age(1)=10;归纳:归纳:n=1 age(n)=10 n1 age(n)=age(n-1)+225程序如下:程序如下:#include int age(int n) int c; if (n = 1) c = 10; else if (n 1) c = age(n - 1) + 2; return c; int main(void) printf(“%d”, age(3); return 0;程序执行过程如下:程序执行过程如下:int main(void) printf(“%d”, age(3);int age(3) int c; c = age(2) + 2; return c;int age(2) int c; c = age(1) + 2; return c;int age(1) int c; c = 10; return c;2627283下面程序的输出结果是(下面程序的输出结果是( )。)。#include int f(int a,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论