C语言程序设计-第八章__函数.ppt

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言程序设计-第八章__函数

第八章 函数 一、概述 一个程序由多个模块(文件)组成,每个模块(文件)又由很多小的功能模块(函数)组成,而且这些功能模块(函数)可能在很多文件模块中都要使用。因此,使用函数可以减少重复劳动 二、说明 1、C程序=多个源文件,便于分别编写、编译、提高效率。 2、一个源程序文件=多个函数。以源文件为单位进行编译。 3、在多个函数中,有且仅有一个main函数,程序从main开始执行。 4、所有函数都是平等的,可以相互调用,但是不能嵌套定义 5、函数=标准函数+用户函数 6、函数=有参函数+无参函数 3、定义函数(1) 1、无参函数 Type f_Name() {函数内部变量声明 …… } 如: int Add() {int x=2,y=3,z; z=x+y; return z; } 3、定义函数(2) 2、有参函数 Type f_Name(形参变量类型表) { 函数内部变量声明 …… } 如:int Add(int x,int y) { int z; z=x+y; return z; } 4、形参的传统声明形式 Type f_Name(形参变量表) 形参变量类型声明 {函数内部变量声明 …… } 如:int Add(x,y) int x,y; {int z; z=x+y; Return z; } 5、函数参数 在调用函数时,主调函数与被调函数之间存在数据传递关系: 实参从主调函数传给被调函数对应的形参,函数值从被调函数传回到主调函数对应的函数名处。 注意: 1、形参只在进行函数调用的时候才自动分配内存空间(必须有明确的类型),函数调用结束后自动释放所占内存空间 2、实参在任何时候都必须有实际的值,可以是常量或常量表达式 3、实参与形参的类型应该相同或能赋值兼容 4、实参到形参是单向值传递,只能从实参传到形参,形参的改变不会引起实参的改变。 6、函数返回值 1、函数的返回值一般是通过return语句带回 1)return ;——结束被调函数,返回到主调函数,但是不传递回任何可用的值。(void) 2)return (表达式);——结束被调函数,返回到主调函数,并将表达式的值带回到主调函数。 3)return 表达式;——同2 2、返回值的类型 1)可以是任何合法的类型 2)函数值的类型与返回值的类型不一致,以函数的类型为准。 3)如果函数类型为int,可以不写。 4)为了明确表示不带回值,则函数类型为void(空类型) 7、举例 #include stdio.h void main() { float a,b; int c; float max (float x,float y); scanf(%f,%f,a,a); c=max(a,b); printf(Max is %d\n,c); } float max(float x,float y) { x=xy? x:y; return x; } 8、函数原型声明 1、作用: 提前告诉系统,程序中有这样一个函数 2、方法: 在main函数之前,用函数声明语句 3、形式: Type f_Name(形参类型表); 一般只写类型,不需要变量名。 如果函数类型type为int,则可以不进行原型声明(最好都写) 9、函数调用 定义了子函数,而且对子函数进行原型声明后,就可以调用子函数了。子函数与主函数的位置可以任意排放。 调用形式: 1、如果函数类型为void(对应return ;),用函数调用语句:f_Name(实参表); 2、否则(对应return ;) ,将函数调用放在表达式中,或作为函数的参数。如: d=max(a,max(b,c)/2; 10、函数的嵌套(相互)调用 因为子函数之间是平等的,因此子函数之间可以相互调用。 main() { f1(); } f1() { f2(); } f2() { f1(); } 11、举例(8_6) 用弦截法求f(x)=x3-5x2+16x-80=0 的根 12、函数的递归调用 递归调用?自己调用自己 f1() { f1(); } 13、举例(8_7) 求n! n!=n*(n-1)! (n-1)!=(n-1)*(n-2)! …… 1!=1*0! 0!=1 n!=fact(n)=n*fact(n-1)=n*(n-1)*fact(n-2)…

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档