版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、关于大学计算机C语言函数函数的定义和使用第一张,PPT共二十九页,创作于2022年6月一、函数的概念 函数是形式上独立、功能上完整的程序段(块)。在C程序设计中常将一些常用功能模块编写成函数。函数可以完成特定的计算或操作处理功能。 C程序由函数组成;函数在形式上是平行的,不允许嵌套定义;C程序只执行主函数,子函数必须通过主函数或其他子函数的调用才能被执行;子函数不能调用主函数。实质上,设计程序就是设计函数。5.1 程序设计的艺术 (略)5.2 函数的定义和使用第二张,PPT共二十九页,创作于2022年6月二、函数的分类(一)从用户的角度分1.标准函数,即库函数 ANSI C预先定义的用户可直接
2、使用的函数;使用库函数时,必须用#include把该函数所在的头文件包含进来。2.用户自定义函数 是用户为了解决各种应用问题而自行设计的函数。用户自定义函数必须先定义后使用!(二)从形式上分1.无参函数: 即无形式参数的函数。 如:getchar()2.有参函数 即带有形式参数的函数 如:putchar(ch)、sqrt(x)第三张,PPT共二十九页,创作于2022年6月三、函数的定义1、 无参函数的定义函数返回值类型 函数名( void ) 函数体其中:函数返回值类型表示函数的返回结果值类型,函数只能有一个返回值,若函数无返回值即用void声明;返回函数值需使用:return 变量|表达式;
3、 函数名由用户按标识符的命名规则自行给定,但不能与标准函数同名; 圆括号中的关键字void表示函数无形式参数; 函数体是由实现函数功能必需的语句组成。第四张,PPT共二十九页,创作于2022年6月例1:无参函数的定义。#includevoid PrintMessage (void)printf(t*n);printf(t Programming is fun.n);printf(t*n);int main(void)PrintMessage ( );PrintMessage ( );PrintMessage ( );return 0;第五张,PPT共二十九页,创作于2022年6月函数返回值类型
4、 函数名(数据类型 参数1, 数据类型 参数2, )函数体说明: 函数返回值类型、函数名、函数体的含义与无参函数相同;形式参数的格式如:数据类型 形式参数1 形式参数(简称形参)必须单个独立定义,形参是用来接收函数被调用时对应实际参数传递的值或地址的,因此形参只能是变量,形参的存储空间是函数被调用时临时分配的动态空间、用完即释放(不能永久存储数据)。2、有参函数的定义第六张,PPT共二十九页,创作于2022年6月int Average(int x, int y)int result;result = (x + y) / 2;return result;函数首部函数体例2:定义有参函数计算两个整
5、数的平均。第七张,PPT共二十九页,创作于2022年6月#include int Average(int x, int y)int result;result = (x + y) / 2;return result;int main(void)int a1 = 12, b1 = 36, a2 = 24, b2 = 46, a3 = 5, b3 = 25;int ave1, ave2, ave3; ave1 = Average(a1, b1);ave2 = Average(a2, b2);ave3 = Average(a3, b3);printf(Average of %d and %d is
6、%d.n, a1, b1, ave1);printf(Average of %d and %d is %d.n, a2, b2, ave2);printf(Average of %d and %d is %d.n, a3, b3, ave3); return 0;形参为整形变量x和y变量a1和b1为实际参数第八张,PPT共二十九页,创作于2022年6月1、函数调用的一般形式: 函数名(实在参数表)其中: 形参(形式参数)定义函数时在函数名后括号中声明的参数;实参( 实际参数 )在主调函数中调用函数时函数名后面括号中的参数(或表达式); 调用函数时实参的个数、顺序、类型必须与形参一一对应(赋值相
7、容);实参可是常量、变量、函数或表达式; 函数调用时实参和形参是采用单向值传递形式即将实参的数值或地址单向传给对应的形参。四、函数的调用第九张,PPT共二十九页,创作于2022年6月有返回值时(即函数功能为某种计算功能) 返回值 = 函数名(实参表列);例如:以赋值语句形式调用函数如 c = max(a,b);例如:作为另一个函数的参数形式调用函数如 c = max(max(a, b), c); printf(%dn, max(a, b);无返回值时(即函数功能是完成某种操作或处理)例如:以表达式语句形式调用函数如 display(a, b); 函数名(实参表列);2、具体调用形式第十张,PP
8、T共二十九页,创作于2022年6月理解函数的调用参数的传递int main(void)int a = 12;int b = 24;int ave;ave = Average(a, b);printf(Average of %d and %d is %d.n, a, b, ave);return 0;#include int Average(int x, int y) int result; result = (x + y) / 2; return result;第十一张,PPT共二十九页,创作于2022年6月例3:定义求n!函数,然后调用该函数求sum=1!+2!+3!+m!的值。#inclu
9、de double Fac(int n) int i; double p = 1.0; for (i = 1; i n; i+) p *= i; return p; 第十二张,PPT共二十九页,创作于2022年6月int main(void) int i, m; double sum = 0; printf (“Please input m data:”); scanf(“%d”, &m); for (i = 1; i = m; i+) sum += Fac(i); printf(“Sum=%.0fn”, sum); return 0;第十三张,PPT共二十九页,创作于2022年6月#incl
10、ude int max ( int x, int y ) int z;if (x 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 =
11、 21max3 = 99该程序的输出是什么?第十四张,PPT共二十九页,创作于2022年6月例5:定义求素数的函数,然后调用该函数求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 ; 第十六张,PPT共二十
12、九页,创作于2022年6月五、函数原型声明(prototype)1、为什么要声明函数原型? 函数应该先定义,然后才能调用。但是,如果函数的调用出现在函数的定义之前,就必须对被向前调用的函数进行函数原型声明,否则就会出现函数调用错误。2、声明格式: 函数类型 函数名(类型名1 形参数1,);或 函数类型 函数名(类型名1,类型名2,);注意:如果函数严格遵循先定义后调用原则就无需进行函数原型声明。第十七张,PPT共二十九页,创作于2022年6月例6:函数原型声明(先调用后定义函数)#include double Fac(int n);int main(void) f1 = Fac(m); dou
13、ble Fac(int n) .函数Fac的原型声明先调用函数Fac函数Fac的定义出现在调用之后第十八张,PPT共二十九页,创作于2022年6月#include int Average(int x, int y)int result;result = (x + y) / 2;return result;int main(void)int a = 12;int b = 24;int ave = Average(a, b);printf(Average of %d and %d is %d.n, a, b, ave);return 0;函数定义函数调用例7:以下函数为先定义后调用,不用声明原型第
14、十九张,PPT共二十九页,创作于2022年6月#include int Average(int x, int y); /*声明Average()函数*/ int main(void) int a = 12; int b = 24; int ave = Average(a, b); printf(Average of %d and %d is %d.n, a, b, ave); return 0; int Average(int x, int y)int result;result = (x + y) / 2;return result;例 8:函数的原型声明(先调用后定义)第二十张,PPT共二
15、十九页,创作于2022年6月int main()a();return 0;a 函数b();return;b函数return;六、函数的嵌套调用 在调用一个函数的过程中,又调用其他的函数,称为函数的嵌套调用。 以下为函数调用与调用返回过程:第二十一张,PPT共二十九页,创作于2022年6月例9:函数的嵌套调用#include float b (float m) float n;n = m * 10;return (n);float add (float x, float y) float z;z = b(x) + y; return (z);int main(void)float a = 1.2
16、, b = 3.4, c; c = add(a, b); printf (“c = %fn”, c); return 0;b函数main调用add函数调用b函数add函数 结束第二十二张,PPT共二十九页,创作于2022年6月七、函数的递归调用 在调用一个函数的过程中,出现直接或间接地调用该函数本身,称为函数的递归调用。int f(int x)int y, z;z = f(y);return (2 * z);f函数调用f函数f1函数调用f2函数f2函数调用f1函数第二十三张,PPT共二十九页,创作于2022年6月例10:函数的递归调用 有3个人坐在一起,问第3个人多少岁?他说比第2个人大2岁。
17、问第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)+2第二十四张,PPT共二十九页,创作于2022年6月程序如下:#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;程序执行过
18、程如下: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;第二十五张,PPT共二十九页,创作于2022年6月课堂习题#include void func1(int i);void func2(int i);char st = hello,friend!;void func1(int i) printf(%c, sti); if (i 3) i += 2; func2(i); void func2(int i) printf(%c, sti); if (i 3) i += 2; func
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 肩腱鞘炎护理查房
- 结核性骨坏死护理查房
- 深度解析(2026)《GBT 35866-2018粮油检验 小麦粉溶剂保持力的测定》
- 深度解析(2026)《GBT 35753-2017空调器室外机安装用支架》
- 深度解析(2026)《GBT 35564-2017生物质清洁炊事炉具》
- 城市轨道交通运营管理习题库 模块八 城市轨道交通成本效益分析 课后习题及答案
- 跆拳道试卷及分析
- 公共营养师题库及分析
- 小区消防应急预案
- 算力基础设施分层分级建设方案
- 公司劳动争议预防与处理流程
- 2026苏州名城保护集团第二批招聘13人笔试参考试题及答案详解
- 23G409先张法预应力混凝土管桩
- 探索心理学的奥秘智慧树知到期末考试答案章节答案2024年北京大学
- 北师大版八年级数学下册第5章分式与分式方程课件全章
- 动火许可证(模板)
- DB15T 1895-2020 建筑消防设施维护保养技术规程
- 【华与华】2018得到APP品牌战略提报方案
- 30th燃煤蒸汽锅炉烟气除尘脱硫系统设计毕业设计
- TRIZ实战与汇报模板解析课件
- 外科学2016急性化脓性腹膜炎
评论
0/150
提交评论