书签 分享 收藏 举报 版权申诉 / 57
上传文档赚钱

类型[理学]C语言第6章课件.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:3515515
  • 上传时间:2022-09-10
  • 格式:PPT
  • 页数:57
  • 大小:502.02KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《[理学]C语言第6章课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    理学 语言 课件
    资源描述:

    1、Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计2 2/72/72第第6章章 函数与函数与编译预处理编译预处理6.16.1库函数库函数6.26.2函数定义和说明函数定义和说明6.36.3函数调用函数调用6.46.4函数参数函数参数6.56.5函数的嵌套调用和递归调用函数的嵌套调用和递归调用6.66.6变量的存储类型变量的存储类型6.76.7内部函数、外部函数内部函数、外部函数6.86.8编译预处理命令编译预处理命令第第6 6章章 函数与编译预处理函数与编译预处理Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程

    2、序设计语言程序设计3 3/72/72第第6章章 函数与函数与编译预处理编译预处理(1)(1)函数的调用函数的调用(2)(2)函数的嵌套调用函数的嵌套调用(3)(3)函数的递归调用函数的递归调用(4)(4)局部变量和全局变量局部变量和全局变量(5)(5)变量的存储类别变量的存储类别(6)(6)编译预处理命令编译预处理命令本章重点本章重点第第6 6章章 函数与编译预处理函数与编译预处理Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计4 4/72/72第第6章章 函数与函数与编译预处理编译预处理第第6 6章章 函数与编译预处理函数与编译预处理常用方

    3、法常用方法:#includevoid main()printf(“Hello world”);例例:在屏幕上打印在屏幕上打印 Hello worldHello world#includevoid main()void print_message();print_message();void print_message()printf(“Hello world”);Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计5 5/72/72第第6章章 函数与函数与编译预处理编译预处理第第6 6章章 函数与编译预处理函数与编译预处理1 1、一个较大的程序分

    4、成几、一个较大的程序分成几个功能较为单一的子程个功能较为单一的子程序模块,用函数完成每序模块,用函数完成每个子程序的作用。个子程序的作用。2 2、一个、一个C C程序由一个主函程序由一个主函数和若干个其它函数构数和若干个其它函数构成。成。3 3、由主函数调用其它函数、由主函数调用其它函数,其他函数也可以相互,其他函数也可以相互调用。调用。4 4、同一函数可以被一个或、同一函数可以被一个或多个函数调用任意次。多个函数调用任意次。Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计6 6/72/72第第6章章 函数与函数与编译预处理编译预处理第第6

    5、6章章 函数与编译预处理函数与编译预处理函数常识函数常识1、功能模块功能模块:求解较小问题的算法和程序称作求解较小问题的算法和程序称作“功能功能模块模块”,各功能模块可以先单独设计,然后将求各功能模块可以先单独设计,然后将求解所有子问题的模块组合成求解原问题的程序。解所有子问题的模块组合成求解原问题的程序。2、一个解决大问题的程序,可以分解成多个解决小一个解决大问题的程序,可以分解成多个解决小问题的模块,这就是问题的模块,这就是“自顶向下自顶向下”的模块化程序的模块化程序设计方法。设计方法。3、用一个或多个用一个或多个函数函数来实现这些功能模块。来实现这些功能模块。Jilin Universi

    6、ty长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计7 7/72/72第第6章章 函数与函数与编译预处理编译预处理第第6 6章章 函数与编译预处理函数与编译预处理函数常识函数常识4、一个原程序文件由一个或多个函数组成。一个源、一个原程序文件由一个或多个函数组成。一个源程序文件是一个编译单位,即以程序文件是一个编译单位,即以源文件源文件为单位进为单位进行编译,而不是以函数为单位进行编译。行编译,而不是以函数为单位进行编译。5、程序的执行从、程序的执行从main函数开始,在函数开始,在main函函数中数中结束整个程序的运行。结束整个程序的运行。main函数是系统定义的。函数是系

    7、统定义的。6、所有的函数都是、所有的函数都是平行平行的,不能嵌套定义,但可以的,不能嵌套定义,但可以互相调用,但不能调用互相调用,但不能调用main 函数。函数。Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计8 8/72/72第第6章章 函数与函数与编译预处理编译预处理第第6 6章章 函数与编译预处理函数与编译预处理函数函数:完成相对独立功能的程序完成相对独立功能的程序.标准函数:标准函数:由系统提供的库函数,不必由系统提供的库函数,不必从使用角度分定义直接引用,如从使用角度分定义直接引用,如fabs()等。等。用户自定义函数:用户自定义函

    8、数:用以解决用户专门需要。用以解决用户专门需要。无参函数:无参函数:如如printsar();从函数形式分从函数形式分 有参函数:有参函数:如如 sin(x),sqrt(x);不传递数据不传递数据 主调函数被调用函数主调函数被调用函数 传递数据传递数据 Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计9 9/72/72第第6章章 函数与函数与编译预处理编译预处理6.1 6.1 库函数库函数1、定义在不同的头文件中定义在不同的头文件中2、用户使用时用户使用时,必须用必须用#include“#include“头文头文件件”把相应的头文件包含到程序

    9、中来。把相应的头文件包含到程序中来。例例:数学库函数调用举例数学库函数调用举例#include#include#include#include main()main()double a,b;scanf(“%lf“,&a);b=sin(a);sin(a);printf(“%6.4lf”,b);Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计1010/72/72第第6章章 函数与函数与编译预处理编译预处理6.1 6.1 库函数库函数 注意:注意:includeinclude命令必须以命令必须以#开头,文件名用一对双引开头,文件名用一对双引号号“”

    10、“”或一对尖括号或一对尖括号括起来,括起来,二者的区别是二者的区别是:用用 表示编译时只按系统标准方式检表示编译时只按系统标准方式检索文件目录,而用索文件目录,而用“math.hmath.h”形式,则编译系形式,则编译系统先从目标文件所在的子目录中找统先从目标文件所在的子目录中找math.hmath.h文件文件,若找不到再按尖括号包围时的办法重新搜索,若找不到再按尖括号包围时的办法重新搜索一次。一次。includeinclude是命令,不是语句,结尾没有分是命令,不是语句,结尾没有分号。号。Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计11

    11、11/72/72第第6章章 函数与函数与编译预处理编译预处理6.2 6.2 函数的定义和说明函数的定义和说明无参函数定义的一般形式:无参函数定义的一般形式:类型标识符函数名()类型标识符函数名()声明部分声明部分语句部分语句部分void print_message()printf(“Hello world”);Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计1212/72/72第第6章章 函数与函数与编译预处理编译预处理#include#include void void printstarprintstar()()printfprintf(

    12、“(“*nn”);”);例:输出图案例:输出图案 *Very Good!Very Good!*main()main()void void printstarprintstar();();函数定义和函数定义和功能实现功能实现函数调用函数调用函数名()函数名();方法方法printstarprintstar();();printfprintf(“Very Good!”);(“Very Good!”);printstarprintstar();();Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计1313/72/72第第6章章 函数与函数与编译预处

    13、理编译预处理有参函数定义的一般形式:有参函数定义的一般形式:6.2 6.2 函数的定义和说明函数的定义和说明类型标识符函数名(形式参数表列)类型标识符函数名(形式参数表列)声明部分声明部分语句部分语句部分int max(int x,int y)int z;if(xy)z=x;else z=y;return(z);Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计1414/72/72第第6章章 函数与函数与编译预处理编译预处理6.2 6.2 函数的定义和说明函数的定义和说明空函数空函数类型说明符函数名()类型说明符函数名()例例:void dum

    14、my()void dummy()Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计1515/72/72第第6章章 函数与函数与编译预处理编译预处理6.2 6.2 函数的定义和说明函数的定义和说明注意注意:(1)(1)函数名和形式参数都是用户命名的标识符。在同一程序中,函数名和形式参数都是用户命名的标识符。在同一程序中,函数名必须唯一;形式参数只要在同一函数中唯一即可,可以函数名必须唯一;形式参数只要在同一函数中唯一即可,可以与其它函数中的变量同名。与其它函数中的变量同名。(2)(2)语言规定,不能在一个函数的内部再定义函数。语言规定,不能在一个

    15、函数的内部再定义函数。(3)(3)对函数类型的说明,必须与对函数类型的说明,必须与returnreturn语句中返回值表达式的类语句中返回值表达式的类型一致。如果不一致,则以函数类型为准,由系统自动进行转型一致。如果不一致,则以函数类型为准,由系统自动进行转换。如果缺省函数类型,则系统一律按换。如果缺省函数类型,则系统一律按intint类型处理。类型处理。(4)(4)带参数的形式参数表中类型和变量必须成对出现,如下面的带参数的形式参数表中类型和变量必须成对出现,如下面的定义是错误的:定义是错误的:double double add(doubleadd(double x,yx,y)Jilin U

    16、niversity长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计1616/72/72第第6章章 函数与函数与编译预处理编译预处理6.2 6.2 函数的定义和说明函数的定义和说明函数的返回值函数的返回值 在函数定义的语句部分,常常有个在函数定义的语句部分,常常有个return返回语返回语句,函数的返回值也就是句,函数的返回值也就是return语句中的表达式语句中的表达式的值。函数类型应与的值。函数类型应与return语句中的表达式类型语句中的表达式类型一致。一致。return 语句的格式:语句的格式:return(表达式表达式);或或 return 表达式表达式;或或 re

    17、turn;功能:功能:1、把、把return后面后面“表达式表达式”的值带给调的值带给调用用 函数;函数;2、把控制转向调用函数;、把控制转向调用函数;Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计1717/72/72第第6章章 函数与函数与编译预处理编译预处理#includemain()c=max(a,b);printf(“Max is%d”,c);int max(int x,int y)int z;z=xy?x:y;return(z);没有返回值的函数就没有返回值的函数就没有没有returnreturn语句语句6.2 6.2 函数的定义

    18、和说明函数的定义和说明Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计1818/72/72第第6章章 函数与函数与编译预处理编译预处理6.2 6.2 函数的定义和说明函数的定义和说明(1)声明为声明为void型的函数中不能包括带值的型的函数中不能包括带值的return 语语句;主函数体内不能出现句;主函数体内不能出现return语句。语句。(2)当函数没有当函数没有return语句时,以结束函数的大括号语句时,以结束函数的大括号 作为返回点。但这时并不表明函数没有返回值,这作为返回点。但这时并不表明函数没有返回值,这时的返回值是系统给的不确定

    19、值。时的返回值是系统给的不确定值。(3)除了空值函数以外的所有函数都返回一个值,那么除了空值函数以外的所有函数都返回一个值,那么我们是不是非得去使用这个返回值呢?答案是否定我们是不是非得去使用这个返回值呢?答案是否定的。如果没有用它赋值,那它就被丢弃了。的。如果没有用它赋值,那它就被丢弃了。(4)在同一函数内,可用根据需要在多处出现在同一函数内,可用根据需要在多处出现return语语句,但函数第一次遇到句,但函数第一次遇到return时就立即停止执行,时就立即停止执行,并返回到主调函数并返回到主调函数 注意注意:Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程

    20、序设计语言程序设计1919/72/72第第6章章 函数与函数与编译预处理编译预处理练习:练习:1 1、定义一个打印三行星的函数。、定义一个打印三行星的函数。2 2、定义一个函数求两个数的和。、定义一个函数求两个数的和。3 3、定义一个函数判断一个数的奇偶性。、定义一个函数判断一个数的奇偶性。4 4、输入一个年份,用函数判断是否是闰年。、输入一个年份,用函数判断是否是闰年。6.2 6.2 函数的定义和说明函数的定义和说明Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计2020/72/72第第6章章 函数与函数与编译预处理编译预处理函数说明和函数

    21、原型函数说明和函数原型6.2 6.2 函数的定义和说明函数的定义和说明在一个函数中调用另一个函数在一个函数中调用另一个函数,即被调用函数。即被调用函数。需具备以下条件:需具备以下条件:(1)被调用的函数必须是已存在的函数。)被调用的函数必须是已存在的函数。(2)如果使用库函数)如果使用库函数,应用应用#include命令将相关的库函命令将相关的库函数数”包含包含”到本文件中来。到本文件中来。(3)如果使用用户自定义函数)如果使用用户自定义函数,而该函数在调用它的函而该函数在调用它的函数数(即主调函数即主调函数)后面后面,应在主调函数中对被调函数作应在主调函数中对被调函数作声明。声明。Jilin

    22、 University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计2121/72/72第第6章章 函数与函数与编译预处理编译预处理#includemain()float add(float x,float y);float a,b,c;scanf(“%f%f”,&a,&b);c=add(a,b);printf(“sum is%fn”,c);float add(float x,float y)float z;z=x+y;return(z);函数的函数的声明声明函数的函数的调用调用函数的函数的定义定义Jilin University长春信息技术职业学院长春信息技术职业学院-

    23、C语言程序设计语言程序设计2222/72/72第第6章章 函数与函数与编译预处理编译预处理函数的声明:函数的声明:把函数的名字、函数把函数的名字、函数类型以及形参的类型、个数类型以及形参的类型、个数和顺序通知编译系统,以便和顺序通知编译系统,以便在调用该函数时系统按此进在调用该函数时系统按此进行对照检查。行对照检查。float add(float x,float y)float z;z=x+y;return(z);函数的定义和声明区别函数的定义和声明区别float add(float x,float y);函数的定义函数的定义:对函数功能的确定。对函数功能的确定。包括指定函数名、函数值类包括指

    24、定函数名、函数值类型、形参及其类型、函数体型、形参及其类型、函数体等,它是一个完整的,独立等,它是一个完整的,独立的函数单位。的函数单位。Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计2323/72/72第第6章章 函数与函数与编译预处理编译预处理说明说明1.1.如果被调用函数的定义出现在主调函数之前如果被调用函数的定义出现在主调函数之前,可以不必加以声明。可以不必加以声明。2.2.如果已在文件的开头如果已在文件的开头,已对本文件中所调用的已对本文件中所调用的函数进行了声明函数进行了声明,则在各函数中不必对其所调则在各函数中不必对其所调用的

    25、函数再作声明。用的函数再作声明。3.3.声明的时候可以省略形参的变量名。声明的时候可以省略形参的变量名。6.2 6.2 函数的定义和说明函数的定义和说明 用函数原型声明函数用函数原型声明函数Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计2424/72/72第第6章章 函数与函数与编译预处理编译预处理练习:把下面的题补充完整,在主函数练习:把下面的题补充完整,在主函数中调用。中调用。1 1、定义一个打印三行星的函数。、定义一个打印三行星的函数。2 2、定义一个函数求两个数的和。、定义一个函数求两个数的和。3 3、定义一个函数判断一个数的奇偶性

    26、。、定义一个函数判断一个数的奇偶性。6.2 6.2 函数的定义和说明函数的定义和说明Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计2525/72/72第第6章章 函数与函数与编译预处理编译预处理6.3 6.3 函数的调用函数的调用一、函数调用的一般形式:一、函数调用的一般形式:函数名函数名(实参表列实参表列););Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计2626/72/72第第6章章 函数与函数与编译预处理编译预处理void printstar()printf(“*n”);l如果调

    27、用无参函数,则如果调用无参函数,则“实参表列实参表列”可省略可省略,但括号不能省略,如,但括号不能省略,如printstarprintstar()()printstar();6.3 6.3 函数的调用函数的调用Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计2727/72/72第第6章章 函数与函数与编译预处理编译预处理6.3 6.3 函数的调用函数的调用l如果实参表列包含多个实参,则各参数间如果实参表列包含多个实参,则各参数间用逗号间隔,如用逗号间隔,如max(2,3)max(2,3)c=max(a,b);int max(int x,int

    28、 y)int z;z=xy?x:y;return(z);Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计2828/72/72第第6章章 函数与函数与编译预处理编译预处理6.3 6.3 函数的调用函数的调用1.函数语句函数语句把函数调用作为一个语句把函数调用作为一个语句,如如printstar();2.函数表达式函数表达式函数出现在表达式中函数出现在表达式中,如如:c=2*max(a,b);3.函数参数函数参数函数调用作为一个函数的实参函数调用作为一个函数的实参,如如:m=max(a,max(b,c);Jilin University长春信息技

    29、术职业学院长春信息技术职业学院-C语言程序设计语言程序设计2929/72/72第第6章章 函数与函数与编译预处理编译预处理6.4 6.4 函数的参数函数的参数一、形式参数和实际参数:一、形式参数和实际参数:在定义函数时,函数名后面括号中的在定义函数时,函数名后面括号中的变量名为变量名为“形式参数形式参数”(简称简称“形参形参”)在主调函数中调用一个函数时,函数在主调函数中调用一个函数时,函数名后面括号中的参数称为名后面括号中的参数称为“实际参数实际参数”(简称简称“实参实参”)Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计3030/72/7

    30、2第第6章章 函数与函数与编译预处理编译预处理#includemain()int max(int x,int y);/*对对max函数的声明函数的声明*/int a,b,c;scanf(“%d%d”,&a,&b);c=max(a,b);/*a,b作为实参作为实参*/printf(“Max is%d”,c);int max(int x,int y)/*定义有参函数定义有参函数max*/*x,y作为形参作为形参*/int z;z=xy?x:y;return(z);程序结果:程序结果:7,8 7,8 Max is 8 Max is 8Jilin University长春信息技术职业学院长春信息技术职

    31、业学院-C语言程序设计语言程序设计3131/72/72第第6章章 函数与函数与编译预处理编译预处理 关于形参与实参的说明:关于形参与实参的说明:1、在定义函数中指定的形参,在未出现函、在定义函数中指定的形参,在未出现函数调用时,不占内存。调用结束后,所数调用时,不占内存。调用结束后,所占的内存被释放。占的内存被释放。#includemain()int max(int x,int y);int a,b,c;scanf(“%d%d”,&a,&b);c=max(a,b);printf(“Max is%d”,c);int max(int x,int y)xyint z;z=xy?x:y;return(

    32、z);Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计3232/72/72第第6章章 函数与函数与编译预处理编译预处理2 2、实参可以是常量,变量或表达式。、实参可以是常量,变量或表达式。c=max(a,b);int max(int x,int y)int z;z=xy?x:y;return(z);c=max(3,4);c=max(a+3,b*4);6.4 6.4 函数的参数函数的参数Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计3333/72/72第第6章章 函数与函数与编译预处理编译预

    33、处理3 3、被定义的函数必须指定形参的类型。、被定义的函数必须指定形参的类型。int max(int x,int y)int z;z=xy?x:y;return(z);4 4、实参与形参的类型应相同或赋值兼容。、实参与形参的类型应相同或赋值兼容。c=max(a,b);6.4 6.4 函数的参数函数的参数Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计3434/72/72第第6章章 函数与函数与编译预处理编译预处理6.4 6.4 函数的参数函数的参数5、实参向形参的数据传递是、实参向形参的数据传递是“值传递值传递”,单向传递,只由实参传给形参。

    34、单向传递,只由实参传给形参。c=change(a,b);void change(int x,int y)int t;t=x;x=y;y=z;2 2a3 3b2 2x3 3y3 32 2Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计3535/72/72第第6章章 函数与函数与编译预处理编译预处理6.56.5函数的嵌套调用函数的嵌套调用 C语言中的嵌套调用函数语言中的嵌套调用函数main函数函数a函数函数b函数函数调用调用a函数函数调用调用b函数函数结束结束Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计

    35、语言程序设计3636/72/72第第6章章 函数与函数与编译预处理编译预处理6.56.5函数的嵌套调用函数的嵌套调用#includemain()int f(int,int);int x=36,y=16,z;z=f(x,y);printf(%d,z);int f(int a,int b)int ff(int);int m,n,k;m=ff(a);n=ff(b);if(m%2=0)k=m;else k=n;return k;int ff(int d)return(d*3);Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计3737/72/72第第6

    36、章章 函数与函数与编译预处理编译预处理6.56.5函数的嵌套调用函数的嵌套调用函数的嵌套注意事项函数的嵌套注意事项:lC语言不能嵌套定义函数语言不能嵌套定义函数,但可以嵌套调但可以嵌套调用函数用函数l被调用函数的定义位置在调用它的函被调用函数的定义位置在调用它的函数之前,不必对该函数进行声明。数之前,不必对该函数进行声明。l程序从程序从main函数开始执行函数开始执行Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计3838/72/72第第6章章 函数与函数与编译预处理编译预处理6.56.5函数的递归调用函数的递归调用 定义定义:在调用一个函数

    37、的过程中在调用一个函数的过程中,又出现直接或间接地又出现直接或间接地调用该函数本身调用该函数本身,称为函数的递归调用称为函数的递归调用直接调用直接调用间接调用间接调用Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计3939/72/72第第6章章 函数与函数与编译预处理编译预处理6.56.5函数的递归调用函数的递归调用用递归法求用递归法求n!n!问题分析:问题分析:假设假设n=5n=55!=5X5!=5X4!4!4!=4X4!=4X3!3!3!=3X3!=3X2!2!2!=2X2!=2X1!1!可用下面的公式来表示:可用下面的公式来表示:1 1

    38、 (n=0n=0,1 1)n n!=n n*(n-1)!n-1)!(n1n1)Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计4040/72/72第第6章章 函数与函数与编译预处理编译预处理6.56.5函数的递归调用函数的递归调用形参形参x x接收实参接收实参n n的值的值是是否否x=0|x=1?x=0|x=1?facfac(x-1)(x-1)递归调递归调用自身用自身输出结果输出结果n n和和s smainmain函数函数facfac函数函数f=1f=1f=f=facfac(x-1)(x-1)*x xreturn(f)return(f)求求n

    39、!,n!,调用调用facfac函数函数开始开始输入输入n ns=s=facfac(n(n)结束结束Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计4141/72/72第第6章章 函数与函数与编译预处理编译预处理6.56.5函数的递归调用函数的递归调用float float fac(intfac(int n);n);/*函数声明函数声明 */#include#include main()main()intint n;n;float y;float y;printfprintf(请输入一个整数:请输入一个整数:););scanf(%d,&nsca

    40、nf(%d,&n););y=y=fac(nfac(n););printf(%dprintf(%d!=%10.0f,n,y);!=%10.0f,n,y);源程序如下:源程序如下:float float fac(intfac(int n)n)/*定义计算定义计算n!n!的函数的函数 */float f;float f;if(n=0|n=1)f=1;if(n=0|n=1)f=1;else f=fac(n-1)else f=fac(n-1)*n;n;return(freturn(f););运行结果运行结果:请输入一个整数请输入一个整数:10 10!=3628800Jilin University长春信

    41、息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计4242/72/72第第6章章 函数与函数与编译预处理编译预处理6.56.5函数的递归调用函数的递归调用例:例:有有5 5个人,第个人,第5 5个人说他比第个人说他比第4 4个人大个人大2 2岁,第岁,第4 4个人说他比第个人说他比第3 3个人大个人大2 2岁,第岁,第3 3个人个人说他比第说他比第2 2个人大个人大2 2岁,第岁,第2 2个人说他比第个人说他比第1 1个个人大人大2 2岁,第岁,第1 1个人说他个人说他1010岁。求第岁。求第5 5个人多个人多少岁少岁?分析:分析:10 (n=1)age(n)=age(n-1)+2

    42、 (n1)Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计4343/72/72第第6章章 函数与函数与编译预处理编译预处理6.56.5函数的递归调用函数的递归调用程序如下:程序如下:结果:结果:18#include#include main()main()intint age(intage(int););printf(%d,age(5);printf(%d,age(5);int age(int n)int c;if(n=1)c=10;else c=age(n-1)+2;return c;Jilin University长春信息技术职业学院长春

    43、信息技术职业学院-C语言程序设计语言程序设计4444/72/72第第6章章 函数与函数与编译预处理编译预处理6.66.6变量的存储类型变量的存储类型 从变量的作用域从变量的作用域(即从空间即从空间)全局变量全局变量局部变量局部变量从变量值存在的时间从变量值存在的时间(即生存期即生存期)静态存储方式静态存储方式动态存储方式动态存储方式Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计4545/72/72第第6章章 函数与函数与编译预处理编译预处理6.66.6变量的存储类型变量的存储类型变量的作用域变量的作用域 变量的作用域是指变量的作用范围,在变

    44、量的作用域是指变量的作用范围,在C C语言中分为在全局有效、局部有效和复合语言中分为在全局有效、局部有效和复合语句内有效三种。语句内有效三种。语言中所有的变量都有自己的作用域。语言中所有的变量都有自己的作用域。变量说明的位置不同,其作用域也不同,变量说明的位置不同,其作用域也不同,据此可将语言中的变量分为局部变量(据此可将语言中的变量分为局部变量(内部变量)和全局变量(外部变量)。内部变量)和全局变量(外部变量)。Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计4646/72/72第第6章章 函数与函数与编译预处理编译预处理6.66.6变量的

    45、存储类型变量的存储类型局部变量局部变量定义定义:在一个函数内部定义的变量是内部在一个函数内部定义的变量是内部变量变量作用范围:作用范围:只在本函数内有效,在此函数以外只在本函数内有效,在此函数以外不能使用这些变量。不能使用这些变量。Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计4747/72/72第第6章章 函数与函数与编译预处理编译预处理6.66.6变量的存储类型变量的存储类型char f2(int x,int y)/*函数函数f2*/int i,j;float f1(int a)/*函数函数f1*/int b,c;a a、b b、c c

    46、有效有效x x、y y、i i、j j有效有效m m、n n有效有效void main()/*主函数主函数 */int m,n;Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计4848/72/72第第6章章 函数与函数与编译预处理编译预处理6.66.6变量的存储类型变量的存储类型 局部变量局部变量l主函数中定义的变量只在主函数中有效。主函数不主函数中定义的变量只在主函数中有效。主函数不能使用其他函数中定义的变量。能使用其他函数中定义的变量。l不同函数中可使用相同名字的变量。不同函数中可使用相同名字的变量。l形式参数也是局部变量。形式参数也是局

    47、部变量。l在一个函数内部,可在复合语句中定义变量,这些在一个函数内部,可在复合语句中定义变量,这些变量只在本复合语句中有效,这种复合语句也称变量只在本复合语句中有效,这种复合语句也称“分程序分程序”或或“程序块程序块”。说明说明Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计4949/72/72第第6章章 函数与函数与编译预处理编译预处理6.66.6变量的存储类型变量的存储类型全局变量全局变量定义:定义:在函数之外定义的变量称为在函数之外定义的变量称为“外部变量外部变量”。(或称。(或称“全局变量全局变量”或或“全程变量全程变量”)。有效范围

    48、:有效范围:从定义变量的位置开始到本源文件结束。从定义变量的位置开始到本源文件结束。Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计5050/72/72第第6章章 函数与函数与编译预处理编译预处理6.66.6变量的存储类型变量的存储类型intint p=1,q=5;p=1,q=5;/*全局变量全局变量 */float f1(int a)float f1(int a)intint b,c;b,c;char c1,c2;char c1,c2;/*全局变量全局变量 */char f2(int char f2(int x,intx,int y)y)i

    49、ntint i,j;i,j;void main()void main()intint m,n;m,n;全局变量全局变量c1c1、c2c2的作用范的作用范围围全局变量全局变量p p、q q的作用范围的作用范围Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计5151/72/72第第6章章 函数与函数与编译预处理编译预处理例:例:#include int a=3,b=5;/*a、b为全局变量为全局变量*/void main()int max(int a,int b);/*函数声明函数声明,a、b为形参名为形参名*/int a=8;/*a为局部变量为

    50、局部变量*/printf(%dn,max(a,b);int max(int a,int b)/*a、b为形参局部变量为形参局部变量*/int c;c=ab?a:b;return(c);6.66.6变量的存储类型变量的存储类型Jilin University长春信息技术职业学院长春信息技术职业学院-C语言程序设计语言程序设计5252/72/72第第6章章 函数与函数与编译预处理编译预处理6.66.6变量的存储类型变量的存储类型autoauto变量变量 自动变量用关键字自动变量用关键字auto作存储类别的声明。作存储类别的声明。例如:例如:int f(int a)/*定义定义f函数,函数,a为形参

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:[理学]C语言第6章课件.ppt
    链接地址:https://www.163wenku.com/p-3515515.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库