- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 函数 学习目标与要求 1、掌握C语言函数的定义 2、掌握C程序调用函数的方法 3、了解递归函数的用法 4、掌握宏定义和文件包含的使用方法 本章要点 函数概要 函数的定义 函数的参数和函数的值 函数的调用 函数的嵌套调用 函数的递归调用 数组作为函数参数 局部变量和全局变量 变量的存储类别 预处理命令 5.1 函数概要 一个C程序可由一个主函数和若干个函数构成。由主函数调用其他函数,其他函数也可以互相调用。同一个函数可以被一个或多个函数调用任意多次。 一个C程序只能有一个也必须有一个main函数,而子函数的数目实际上是不限的。 示意图 5.1 函数概要 函数的分类: 按用户使用分类: (1)标准 (2)自定义函数 按函数形式分类: (1)无参函数 (2)有参函数 5.2 函数的定义 5.3 函数参数和函数的值 形式参数和实际参数 形参:在定义函数时,函数名后面括号中的变量称为形式参数 实参:在调用函数时,函数名后面括号中的参数(可以是表达式)称为实际参数。 说明: 5.3 函数参数和函数的值 例5-1 调用函数时的数据传递 例5-2返回值类型与函数类型不同 5.4 函数的调用 函数调用的一般形式 函数名(实参表列); 函数调用的方式 1)函数语句 如:printstar(); 2)函数表达式 如: c=2*max(a,b); 3)函数参数 如: m=max(a,max(b,c)); 例 5-3函数调用和函数定义 例 5-4 对被调用的函数作声明 5.5 函数的嵌套调用 C语言不能嵌套定义,即在定义一个函数时,其函数体内不能包含另一个函数的定义。但可以嵌套调用函数,在调用一个函数的过程中又调用另一个函数。 例5-5 函数的嵌套调用。 main( ) { int n=3; printf (%d\n,sub1(n)); } 5.6 函数的递归调用 递归的基本概念 递归调用:在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。 递归函数:在函数体内调用该函数本身。 5.6 函数的递归调用 数值型问题递归函数的编程方法 对于数值型问题,首先要找出解题的数学公式,这个公式必须是递归定义的,且所处理的对象要有规律地递增或递减,然后确定递归结束条件。 例5-6 编一递归函数求n! f (4)的执行过程 5.6 函数的递归调用 有些问题不能直接用数学公式求解,非数值问题比数值问题更难找出递归算法,它不能用一个递归公式表示。首先要把问题由繁化简,由大化小,而某个小问题的解法与原问题解法相同,并且越来越简单直到有确定的解。 例5-7 编制一递归函数,将一个十进制正整数(如:15613)转换成八进制数形式输出。 思路:十进制整数转换成八进制整数的方法是除8逆向取余。 例5-7 编制一递归函数,将一个十进制正整数(如:15613)转换成八进制数形式输出。 ① 先求出余数m:m=x%8; ② 求x除以8取余后的整数商:x=x/8; ③ 如果x不等于0,递归调用该函数,否则执行④。 ④ 输出余数m。 ⑤ 返回调用点。 #include stdio.h void dtoo(int x) { int m; m=x%8; x=x/8; if (x!=0) dtoo(x); printf(%d,m); } 5.7 数组作为函数参数 数组元素作函数实参 数组名作函数参数 用多维数组名作函数参数 例5-8 数组元素作为函数实参举例说明 数组名作为参数的说明: 数组名作为参数的说明: 例5-9 编程序,实现字符串连接。 例5-9 编程序,实现字符串连接。 例5-10 数组名作函数参数举例说明3 例5-10 数组名作函数参数举例说明3 例5-10数组名作函数参数举例说明3 例5-10数组名作函数参数举例说明3 用多维数组名作函数参数的说明 例5-11 编程序,将矩阵转置。 5-8 局部变量和全局变量 全局变量的图示说明 例5-12 外部变量与内部变量同名举例 5-9 变量的存储类别 例5-13 静态局部变量的值 例5-13 静态局部变量的值 5.10 预处理命令 宏定义 文件包含 条件编译 宏定义 例5-14无参宏定义 例5-15 带参宏定义 文件包含 条件编译 条件编译 例5-16条件编译 scat函数还可简化为: void scat(char str1[ ],char str2[ ]) { int i=0,k=0; while (str1[i]) i++;
原创力文档


文档评论(0)