第7章 函数.ppt_第1页
第7章 函数.ppt_第2页
第7章 函数.ppt_第3页
第7章 函数.ppt_第4页
第7章 函数.ppt_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

1、习语言计程仪程序设定修改第7章函数、第7章函数、主要内容7.1函数概要7.2函数的定义和7.3函数中的变量属性7.4函数的嵌套和递归7.5数组作为函数的残奥参数使用,7.1函数概要、函数化结构是习语言程序的特征函数分类系统函数用户函数,long r FAAS 英特尔; for(t=1,i=1; i=n; i ) t*=i; 返回(t ); 主()长方形(入口n ); 英国、中国、日本、中国; 打印机(输入a、b、c: ); 求扫描(%d,%d,%d,n )! 函数,调用n! 函数,7.2函数的定义和使用,7.2.1函数的定义7.2.2自定义函数7.2.3函数的定义和使用示例,7.2.1函数的定

2、义,1函数定义的一般格式函数名(格式残奥表)函数名,7函数只完成特定的操作,没有特定的上限值时,函数函数的类型可以省略。 如果未指定函数类型,则系统在差动奥尔特下为int类型。 函数名称是函数的标识符,是符合标识符命名约定的任何有效标识符。 形式残奥仪表的形式是数据型1形残奥仪表1、数据型2形残奥仪表2、数据型n形残奥仪表n函数体是实现函数功能的所有语句,包含说明、定义语句及相关的可执行语句的计程仪程序。 7.2.1函数的定义,例7-1输出两个整数的最大数。 将两个整数命名为x、y,将函数命名为pmax void pmax(int x,int y ) if (xy )打印机(% dn,x )。

3、 电子打印(% dn,y ); 7.2.1函数的定义,2函数的上门值和return语句函数的上门值是函数执行后上门的结果。 函数的门值来自函数主体内的return语句。 return语句一般格式return (公式):7.2.1函数的定义,求出例7-222个实数的最大数rmax2(),将两个个数设为x、y,函数的定义为float rmax2(float x,float y) float m; m=xy? x:y; 返回(m ); 修正7.2.1函数的定义,例如7-3加法函数sum ()、1 2 3 n-1 n的值。 一和一,二和。 for(s=0,i=1; i=n; i ) s=i; 返回(s

4、 ); 7.2.1函数的定义,例如输出7-4个连续“*”字符的函数p_star() void p_star(int n) int i。 for(i=1; i=n; I )打印(% c,* ); 返回;7.2.2使用自定义函数、1函数原型和函数声明函数原型:已定义函数的概述描述是定义函数时函数主体以外的内容。 一般的形式是函数型函数名(数据型1形残奥仪表1、数据型2形残奥仪表2、数据型n形残奥仪表n ); 在函数原型中描述形状残奥仪表时,可以省略所有形状残奥仪表的名称,只保留各个形状残奥仪表的类型的说明,但它们的数量和顺序是形状残奥仪表和完全函数类型函数名(数据类型1、数据类型2、数据类型n )

5、函数声明: 函数调用函数调用是对定义函数的具体应用。 一般的形式是函数名(实际残奥仪表)实际残奥仪表传递给函数形式残奥仪表的确定值,实际残奥仪表是以“、”分隔的确定值的定径套。 实际残奥仪表中的实际残奥仪表数量、类型和顺序必须与函数原型中的残奥仪表描述完全一致。 如果使用7.2.2自定义函数,则三个实例函数调用(如函数调用)将显示为语句,通常只完成一个操作,并且不会返回返回值。 函数调用显示在表达式中,是表达式的一部分。 函数调用用作函数的实际关残奥参数。7.2.3函数的定义和使用示例,例7-5画面上交替显示“*”、“$”和“#”字符,要求每隔一定时间显示一个字符,连续显示500次。 为了解决

6、问题,分两步进行时间延迟函数delay (); 使用main ()函数显示字符,并在每次显示字符时调用delay (),以确保有时间间隔显示字符。void delay() /*定义延迟函数* /浮动I; i=1; while(i10000)i=0.01; 返回;完整的plume计程仪,7.2.3函数的定义和使用示例,示例7-6编写一个函数p_string (),该函数输出n个连续的任意字符,调用该函数输出“*”模式,每行输出25个“*”的更正5行。 一个字符串,一个字符串。 for(i=1; i=n; I )打印(% c,ch ); 返回; 主()语音字符串(int,char ); 英特尔;

7、for(i=1; i=5; p _字符串(25,* ); printf(n ); 在7.3函数中的变量的属性、7.3.1局部变量和全局变量7.3.2变量的存储类型、7.3.1局部变量和全局变量、1局部变量在函数内定义的变量也称为局部变量。 局部变量只能用于定义它的函数。 函数的变形残奥仪表是局部变量。 执行完函数后,变形残奥参数会立即消失,但函数中定义的局部变量是否随函数结束而消失取决于变量的存储类型。 例7-8局部变量的示例(程序计程仪)、7.3.1局部变量和全局变量、2 .全局变量全局变量是程序函数以外定义的变量。 您可以在任何函数以外的任何位置定义全局变量。 在一个计程仪程序中,全局变量

8、之后定义的所有函数都可以使用之前定义的全局变量。 因此,一个全局变量可以用于多个函数,但不一定可以用于普通堆计程仪列中的每个函数。 全局变量也有一定的范围。 7.3.1局部变量和全局变量、2 .全局变量全局变量是在普计程仪程序的函数以外定义的变量。 您可以在任何函数以外的任何位置定义全局变量。 在一个计程仪程序中,全局变量之后定义的所有函数都可以使用之前定义的全局变量。 因此,可以在多个函数中使用一个全局变量,但不一定可以在存在的普拉姆中的每个函数中使用,全局变量也具有一定的作用范围。7.3.1局部变量和全局变量、7.3.1局部变量和全局变量、例7-9局部变量和全局变量的例子。 int a=3

9、,b=5; 最大,最小,最大? a:b ); 主() int a=8; printf(MAX=%dn,max(a,b ) )、7.3.2变量的存储类型、1auto类型变量auto类型变量通常称为自动变量,只有函数的局部变量才能定义为auto类型。 auto型变量在调用函数时分配内存空间,并存储在存储器的动态存储区域,在函数执行终止时自动释放内存空间。 auto型变量在代入前具有不确定的值。 auto类型变量的定义格式定义auto数据类型变量名称在定义局部变量时,对于默认奥尔特的存储类型条目,在默认奥尔特下,存储类型为auto类型。 2static类型变量定义的形式static数据类型变量名称函

10、数内定义的静态变量称为静态局部变量,函数外定义的静态变量为静态全局变量。 静态局部变量始终存在,不会因函数的执行终止而丢失,再次进入该函数时,将保留上次的结果。 7.3.2变量的存储类型。 例7-10将1到5的阶乘值进行校正后输出。 主()进入传真(进入); 英特尔; for(i=1; i6; I )打印(% d )!=%d、I、fac(i ) ); printf(n ); 国际传真机(国际传真机f=1)。 f*=n; 返回(f ); 静态局部变量,1,函数嵌套,2,递归函数,7.4函数嵌套和递归,7.4.1函数嵌套,1 .函数嵌套的概念,函数嵌套是指在一个自定义函数的函数主体上出现了对另一个

11、自定义函数的调用。 函数嵌套反映了自定义函数之间的调用和调用关系。、函数的嵌套堆计程仪斯坦共和国、7.4.1函数的嵌套、int max2(int x,int y )返回(xy )? x:y ); 英特尔最大4 (英特尔n 1、英特尔n 2、英特尔n 3、英特尔n4)英特尔m 1、m2。 m1=最大2 (n 1,n2):m2=最大2 (n 3,n4) :返回(m1m2)? m 13360米2 ); 主()、主a、b、c、d; 打印机(企业a、b、c、d: ); 用scanf(%d,%d,%d,%d,%d,%d,max4()函数调用max2()函数,用主函数调用max4()函数,输入四个整数,输出

12、其中的最大数,喀呖声求两个,求一个数的阶乘函数定义fac ()的组合数在主函数main ()中输入m,n的值,然后调用求出组合数的函数cmn (),求出结果并输出。过程分析、实现计程仪程序(e2.c ),其次,求出组合数程序计程仪程序的函数嵌套图,求出组合数程序计程仪程序的函数嵌套图,第一次调用fac(m ),第二次调用fac(n ),第三次调用fac (m-n ) (2) 的双曲馀弦值。 7.4.2函数的递归、递归函数由递归定义生成。 如果定义的函数本身是在函数定义期间直接或间接调用的,则此定义是递归定义,而定义的函数称为递归函数。 可以用递归方法描述的问题是可以用递归函数来实现。 递归函数

13、可以使计程仪程序简洁,使查询密码紧凑。 如果问题可以用递归公式描述,则可以定义公式的递归函数。有些问题不能直接用递归公式描述,但如果求解问题的过程是递归的,则可以定义流程递归函数。 对于1、递归函数概念、表达式递归和7.4.2函数的递归,表达式递归函数解决了可由递归表达式描述的问题。 实现公式递归函数的基本过程分为两个步骤:编写递归公式和编写递归公式。通过喀呖声对递归公式进行函数化,可获得公式递归函数的过程、公式递归函数示例、公式递归函数示例、递归公式,以及示例2-1sum(n )的值。 的双曲馀弦值。 递归表达式按以下顺序求和: sum(n)=sum(n-1) n、sum(n-1)=sum(

14、n-2 )。 在此,到达递归校正运算的最下层,从而分阶段上溯求sum(2)、sum (3)、sum(n ),最后求sum(n ),解决了问题,并且递归处理也结束。 2、公式递归函数(递归函数的2 )、公式递归函数的示例(得到示例2-1和(n )的值)、递归函数、intsum (intn ) if (n=1) return (1elsereturn (sum (n-1 ) n ) :递归公式、下一个递归函数sum ()的执行过程、再以sum(3)为例说明函数的执行过程、sum ()函数的执行过程的第一步骤:调用从高到低递归地记述问题的sum(2),记述为sum(1) 2。 调用sum(1),问题

15、到达最下位层,确定值为1的步骤2 :从低到高阶段性地求上位的回答(从简单到复杂)求sum(2)求sum(3)的问题结束。公式递归函数的示例(示例2-1计算sum(n )的值)、sum(3)执行进程格拉夫,计算sum(3)的递归进程格拉夫,选择公式递归函数的示例(示例2-1计算sum(n )的值)。 长传真if (n=1)返回(1)。 else return(n*fact(n-1 ) )、递归函数、函数fact ()的执行过程请参照sum ()函数进行自我分析。 下一张:流程递归,3 .流程递归函数(三个递归函数),汉诺威问题:有三个柱和n个大小各不相同的盘子,开始时所有的盘子都是塔状的。移动规

16、则一次只能移动一个盘子。你不能随时在比那个小的盘子上放盘子。 的双曲馀弦值。 有些问题不能直接用递归公式描述,但处理过程包含递归思维方法。 这样的问题称为进程递归。 过程回归的经典问题是汉诺威问题。 3、当n=1时,过程递归函数(递归函数的3 )、汉化问题递归过程的函数描述以及汉化问题递归过程的函数描述原样从a移至b,并且问题结束。 移动过程包括移动(a,b ); 在n-1的情况下,根据移动规则,将a上的n-1个碟子移向c,并且这时b应该经历三个步骤: b是中间柱。 汉诺I (n-1,a,b,c ); 第二步骤:把a上的唯一的碟子(当前最大的碟子)直接移到柱子b上。 移动(a,b ); 第三步骤:将c柱上的n-1个盘子按照第一步骤描述的方式移动到b柱上,其中a是中间柱。 汉诺I (n-1,c,a,b ); 用递归函数实现汉诺威问题,n盘汉诺威问题的函数: hanoi(n,a,c,

温馨提示

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

评论

0/150

提交评论