(精)第八章函 数.ppt

  1. 1、本文档共57页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《计算机文化基础》备课讲义 (王志强制作) 8.1 概述 一、什么是函数: 函数是一个程序模块用来实现一个特定的功能。 一个C程序由一个main函数和若干其他函数组成。 主函数可以调用其他函数;其他函数之间也可以相互调用。 由此构成模块化的程序设计。 二、使用函数的意义:结构清晰、代码重用 四、函数分类 从用户角度 标准函数(库函数):由系统提供 用户自定义函数 从函数形式 无参函数 有参函数 [例]函数调用的简单例子 #include stdio.h void main() { void printstar(); void print_message(); printstar(); print_message(); printstar(); } 8.2 函数定义的一般形式 一、无参函数定义的一般形式 函数类型 函数名() { 说明部分 语句部分 } 二、有参函数定义的一般形式 函数类型 函数名(形式参数列表) { 说明部分 语句部分 } 三、空函数 函数类型 函数名() { } 8.3 函数参数和函数的值 一、形式参数和实际参数 形式参数:定义函数时函数名后面括号中的参数(变量名),简称“形参”。 实际参数:调用函数时函数名后面括号中的参数(表达式),简称“实参”。 关于实参与形参的说明: ①实参必须有确定的值; ②形参必须指定类型; ③形参与实参必须类型一致或赋值兼容,且个数相同。若形参与实参类型不一致,则按着不同类型赋值规则(第3章)进行转换——函数调用转换; ④形参在函数被调用前不占内存;函数调用时为形参分配内存;调用结束,内存释放 ⑤实参向形参的数据传递是“值传递”,也叫做单向传递。 例:计算x的立方——理解函数参数内存分配 例:交换两个数——体会C函数调用的值传递 二、函数的返回值 返回语句: return(表达式); 或 return 表达式; 功能:将被调函数的运行结果以返回值形式带回给调用函数。 说明: ①return语句中表达式值的类型应与定义函数时的函数类型相一致,否则将自动转换为函数类型; ②对不带回值的函数,应定义为void类型,此时函数体中不能包含return语句; 8.4 函数的调用 一、函数调用的一般形式: 函数名(实参表); [例] 调用add函数,求2个数的和。 首先被调用的函数必须是已存在函数; 如果调用库函数,需用#include命令包含相关头文件。 如果使用用户自己定义的函数,而该函数的位置在调用它的函数(即主调函数)的后面(在同一个文件中),如何调用 举例对被调用的函数作声明! 二、对被调函数进行声明的一般形式: 函数类型 函数名(参数类型1 参数名1,…); 或, 函数类型 函数名(参数类型1,参数类型2,…); 对被调用的函数作声明: 可以在主调函数之中, 或者在主调函数之前。 三、实参求值的顺序: 如果实参表列中包括多个实参,对实参求值的顺序是不确定的,它取决于所采用的编译系统。 8.5 函数的嵌套调用 #include stdio.h int sub1(int); int sub2(int); void main( ) { int n=3; printf (%d\n,sub1(n)); } 分模块实现: 8.6 函数的递归调用 一、定义:函数直接或间接的调用自身叫函数的递归调用。 二、递归程序的思想方法: ⑴ 将一个问题Pi转化为与该问题类似但更为简单的问题Pi-1; ⑵ 重复以上步骤,直至Pi-1可立即求解; ⑶ 利用该结果反向逐步推出原始问题Pi的结果。 需要注意的是:递归次数过多,可能引起堆栈溢出。 ①C对递归函数的自调用次数没有限制; ②每调用函数一次,在内存堆栈区分配空间,用于存放函数变量、返回值等信息; 三、递归算法: ①递归算法要解决的二个问题: 递归计算的公式 递归结束的条件 ②递归算法描述: if (递归结束条件) return 递归结束条件下的返回值); else ………... return (递归计算公式); ③递归调用函数的调用方法和一般函数的调用方法完全相同。 /*求年龄的递归函数*/ int age(int n) { int c; if(n==1)

文档评论(0)

xiaofei2001129 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档