《解析c程序设计》第3章自定义函数设计

上传人:shaoy****1971 文档编号:113596729 上传时间:2019-11-09 格式:PPT 页数:73 大小:546KB
返回 下载 相关 举报
《解析c程序设计》第3章自定义函数设计_第1页
第1页 / 共73页
《解析c程序设计》第3章自定义函数设计_第2页
第2页 / 共73页
《解析c程序设计》第3章自定义函数设计_第3页
第3页 / 共73页
《解析c程序设计》第3章自定义函数设计_第4页
第4页 / 共73页
《解析c程序设计》第3章自定义函数设计_第5页
第5页 / 共73页
点击查看更多>>
资源描述

《《解析c程序设计》第3章自定义函数设计》由会员分享,可在线阅读,更多相关《《解析c程序设计》第3章自定义函数设计(73页珍藏版)》请在金锄头文库上搜索。

1、第3章 自定义函数设计,2019/11/9,解析C程序设计第3章 自定义函数设计,2,本章内容,最大值和最小值问题 条件运算符 函数的定义 函数的调用 函数的返回 参数的传递 函数的声明 交换两个变量值的问题 变量的作用域 变量的存储类型,2019/11/9,解析C程序设计第3章 自定义函数设计,3,前面的所有程序都是由一个主函数main()组成,程序的所有操作都在主函数中完成。(当然也包含一些库函数) 对于小程序可以这样做,但是,对于一个有一定规模的程序这样做就不合适了。,2019/11/9,解析C程序设计第3章 自定义函数设计,4,事实上,C程序可以 只包含一个主函数 也可以包含一个主函数

2、和若干个其它函数(库函数和自定义函数) C语言是一个函数式语言。,2019/11/9,解析C程序设计第3章 自定义函数设计,5,C函数分类,(1)用户自定义函数(包括主函数); (2)系统提供的库函数。由C系统开发商提供,程序员可以直接调用。 自定义函数以下简称函数。 下面通过一个简单问题来初步了解自定义函数的用法。,2019/11/9,解析C程序设计第3章 自定义函数设计,6,3.1 最大值和最小值问题,2019/11/9,解析C程序设计第3章 自定义函数设计,7,问题的提出,例3-1 由用户输入三个整数,编程求解三个数的最大值和最小值。,2019/11/9,解析C程序设计第3章 自定义函数

3、设计,8,问题的分析,【分析】 根据前面所学,本问题将可以所有功能都在主函数中完成。也可以用两个函数分别完成求最大值和最小值,在主函数中调用这两个函数即可。这样的好处是,可以实现代码共享,而且使相对独立功能的代码分离,便于维护。 求最大值和最小值可以使用条件运算符完成,当然还有其他办法(你知道吗?)。 另外还涉及到函数的定义、函数的调用、函数值的返回、参数的传递、函数的声明等基本知识。下面逐步介绍。,2019/11/9,解析C程序设计第3章 自定义函数设计,9,条件表达式运算符,一般形式: expr1 ? expr2 : expr3 运算规则:,例 求 a+|b| printf(“a+|b|=

4、%dn”,b0?a+b:a-b);,条件运算符可嵌套 如 x0?1:(x0?-1:0) 优先级: 13,结合方向:自右向左 如 ab?a:cd?c:d ab?a:(cd?c:d) expr1、expr2、expr3类型可不同,表达式值取较高的类型,2019/11/9,解析C程序设计第3章 自定义函数设计,10,求x和y的最大值,max=xy?x:y;,2019/11/9,解析C程序设计第3章 自定义函数设计,11,函数的定义,合法标识符,函数返回值类型:缺省int型,无返回值void,函数体,例 有参函数(现代风格) int max(int x,int y) int z; z=xy?x:y;

5、return(z); ,例 无参函数 void printstar( ) printf(“*n”); 或 void printstar(void ) printf(“*n”); ,参数:传递数 据信息的通道,2019/11/9,解析C程序设计第3章 自定义函数设计,12,传统风格的函数定义,函数类型 函数名(形式参数表) 形参类型说明 声明部分 执行部分 ,例 有参函数(传统风格) int max(x,y) int x,y; int z; z=xy?x:y; return(z); ,一般情况下,均使用现代风格定义函数,并且要指定函数类型。,2019/11/9,解析C程序设计第3章 自定义函数设

6、计,13,函数定义说明,函数类型表示在调用了该函数后,其返回值的数据类型。可为:int、char、float、double等。如果函数无数据返回时,应使用void 作类型定义符。注意,省略了类型说明符,C编译器认为函数返回值为一个整型值类型(int)。 函数名即函数的名称,是由用户取的合法标识符。C语言的关键字不能作函数名。自定义函数的名称可以使用库函数名,但这时库函数被屏蔽。 形式参数表是一个用逗号分隔的变量表,当函数被调用时这些变量接受调用参数的值。相当于函数调用时传递信息的通道。注意:每个参数必须指明类型! 在函数的定义中,如果没有函数体,即函数什么功能都不做,我们称为空函数。空函数的功

7、能主要是在程序设计中,留出该函数的功能,以后在需要的时候补充上去。,2019/11/9,解析C程序设计第3章 自定义函数设计,14,特别注意,(1)函数不能单独运行,函数可以被主函数或其它函数调用,也可以调用其它函数,但是不能调用主函数。 (2)C规定,函数体的声明部分和执行部分应严格划分,且声明部分放在函数体的开始。,2019/11/9,解析C程序设计第3章 自定义函数设计,15,课堂练习,定义两个函数: 求两个整数的最大值函数 求两个整数的最小值函数,2019/11/9,解析C程序设计第3章 自定义函数设计,16,int max(int x,int y) return(xy?x:y); ,

8、int min(int x,int y) return(xy?x:y); ,2019/11/9,解析C程序设计第3章 自定义函数设计,17,主调函数与被调函数,C语言程序是由若干个函数组成的,各函数在结构上是独立的,但它们所处理的数据却是相互联系的。 一个函数定义好后,就必须用一定的方式去调用它。一个函数调用另一个函数,将调用的函数称为主调函数,将被调用的函数称为被调函数。 主调函数和被调函数具有数据传递的关系,其传递的实施是通过函数的参数来实现的。,2019/11/9,解析C程序设计第3章 自定义函数设计,18,函数的调用,一般形式 函数名(实参表);,如: printf(“Hello,Wo

9、rld!n”); max(10,20);,2019/11/9,解析C程序设计第3章 自定义函数设计,19,int max(int x,int y) return(xy?x:y); void main() int a,b,c,d,t; . t=max(a+b,c+d); ,函数调用,被调函数,主调函数,2019/11/9,解析C程序设计第3章 自定义函数设计,20,函数调用的几种方式,(1)作为函数语句调用。函数一般无返回值。例: printf(“Hello,World!n”); (2)作为函数表达式调用。例: m=max(a,b)*2; (3)作为函数参数调用。例: printf(“%d”,m

10、ax(a,b); m=max(a,max(b,c);,2019/11/9,解析C程序设计第3章 自定义函数设计,21,函数调用说明,如果调用的是无参函数,则“实际参数表”可以没有,但括号()不能省略。 如果实参表包含多个实参,则各参数间用逗号隔开。 实参与形参的个数应相等、类型应一致。 实参与形参按顺序对应,一一传递数据。 特别说明:如果实参表包括多个实参,对实参求值的顺序并不确定,有的系统自左至右,有的则是自右至左。TurboC是按自右而左的顺序求值的。读者对自已的系统可编程试之。,2019/11/9,解析C程序设计第3章 自定义函数设计,22,函数调用说明,函数不能嵌套定义,即在一个定义好

11、的函数中,又定义另一个函数。但是函数之间允许相互调用,也允许嵌套调用。但main函数不能被调用。 函数还可以自己调用自己,称为递归调用。,2019/11/9,解析C程序设计第3章 自定义函数设计,23,例3-2:求两个整数的最大值和最小值,【分析】 首先定义两个函数:求最大值和最小值,然后在主函数中调用。 #include /* 定义求最大值的函数 */ void maxmum(int x,int y) printf(“max=%dn“,(xy) ? x : y); /* 求x与y的最大值 */ /* 定义求最小值的函数 */ void minmum(int x,int y) printf(“

12、min=%dn“,(xy) ? x : y); /* 求x与y的最小值 */ void main() /* 主函数 */ int a,b; /* 定义变量 */ scanf(“%d,%d“, /* 调用函数,求a与b的最小值,此处函数作语句 */ ,2019/11/9,解析C程序设计第3章 自定义函数设计,24,函数的返回,返回语句 形式: return(表达式); 或 return 表达式; 或 return; 功能:使程序控制从被调用函数返回到调用函数中,同时把返值带给调用函数 说明: 函数中可有多个return语句,但只能返回唯一的函数值 若无return语句,遇 时,自动返回调用函数,

13、返回值是一个不确定的值 若函数类型与return语句中表达式值的类型不一致,按前者为准,自动转换-函数调用转换 void型函数:表示“空类型”或“无类型”,例 无返回值函数 void swap(int x,int y ) int temp; temp=x; x=y; y=temp; ,例 有返回值函数 int maxmum (int x,int y) int z; z=(xy) ? x : y ; return(z); /* 返回最大值 */ ,2019/11/9,解析C程序设计第3章 自定义函数设计,25,函数返回不确定值,int printstar() printf(“*“); void

14、main() int a; a=printstar(); printf(“%d“,a); ,输出:*10,void printstar() printf(“*“); void main() int a; a=printstar(); printf(“%d“,a); ,编译错误:No an allowed type in function main,2019/11/9,解析C程序设计第3章 自定义函数设计,26,函数返回值类型转换,#include void main() float a,b; int c; scanf(“%f,%f“, ,这个程序能运行吗? 运行能得到正确结果吗?,float,

15、2019/11/9,解析C程序设计第3章 自定义函数设计,27,例3-2:求两个整数的最大值和最小值,【分析】 在前面程序的基础上使用return语句返回最大值和最小值,然后在主函数中调用。 /*LI3_2_2.c*/ #include int maxmum(int x,int y) int max; max=(xy) ? x : y; return(max); int minmum(int x,int y) int min; min=(xy) ? x : y; return min; void main() int a,b; scanf(“%4d,%4d“, ,2019/11/9,解析C程序设计第3章 自定义函数设计,28,函数参数,形参与实参 形式参数:定义函数时函数名后面括号中的变量名 实际参数:调用函数时函数名后面括号中的表达式,例 比较两个数并输出大者,#include void main() int a,b,c; scanf(“%d,%d“, ,2019/11/9,解析C程序设计第3章 自定义函数设计,29,参数传递值传递方式,值传递方式 方式:函数调用时,为形参分配单元,并将实参的值复制到形参中

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 职业教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号