C语言教程第六章函数

上传人:tia****nde 文档编号:244894739 上传时间:2024-10-06 格式:PPT 页数:26 大小:219.99KB
返回 下载 相关 举报
C语言教程第六章函数_第1页
第1页 / 共26页
C语言教程第六章函数_第2页
第2页 / 共26页
C语言教程第六章函数_第3页
第3页 / 共26页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第6章 函数,6.1 概述,#include,void main(),void printstar();/*对printstar函数声明*/,void print_message();/*对print_message函数声明*/,i=printstar();*调用printstar函数*,print_message();/*调用print_message函数*/,printstar();*调用printstar函数*/,先看一个函数调用的简单例子,*,void printstar()*定义printstar函数*,printf(*n);,void print_message()*定义print_message函数*,printf(How do you do!n);,运行情况如下:,*,How do you do!,*,*,几点说明:,一个程序由一个或多个程序模块组成,每一个程序模块作为一个源程序文件。对于较大的程序,通常将程序内容分别放在若干个源文件中,再由若干源程序文件组成一个,C,程序。这样便于分别编写、分别编译,提高调试效率。一个源程序文件可以为多个C程序公用。,一个源程序文件由一个或多个函数以及其他有关内容(如命令行、数据定义等)组成。一个源程序文件是一个编译单位,在程序编译时是以源程序文件为单位进行编译的,而不是以函数为单位进行编译的。,*,程序的执行是从main函数开始的,如果在main函数中调用其他函数,在调用后流程返回到main函数,在main函数中结束整个程序的运行。,所有函数都是平行的,即在定义函数时是分别进行的,是互相独立的。一个函数并不从属于另一函数,即函数不能嵌套定义。函数间可以互相调用,但不能调用main函数。main函数是系统调用的。,*,从用户使用的角度看,函数有两种:,标准函数,即库函数。这是由系统提供的,定义在不同的头文件中,用户不必自己定义这些函数,可以直接使用它们。用户使用时,必须用,#include,把相应的头文件包含到程序中来。,用户自己定义的函数。用以解决用户的专门需要。,从函数的形式看,函数分两类:,无参函数。无参函数一般用来执行指定的一组操作。在调用无参函数时,主调函数不向被调用函数传递数据。,有参函数。主调函数在调用被调用函数时,通过参数向被调用函数传递数据。,*,6.2 函数的定义,方式1,函数返回值类型名 函数名(参数类型说明及参数列表),局部变量说明;,语句序列;,方式2,函数返回值类型名 函数名(参数列表),参数类型说明,局部变量说明;,语句序列;,如:int max(a,b),int a,b;,如:int max(int a,int b),*,例 定义符号函数sign。,int sign(int x)/*函数首部*/,int y;/*函数体局部变量*/,y=x0?1:(x=0?0:-1);,return y;/*返回函数值*/,注意,:C语言函数分为两大部分:,函数的说明部分,函数体部分,*,函数各部分作用,1.函数的说明部分,函数说明部分说明函数的类型,函数名,参数表及参数类型。,(1)函数的类型说明,函数的类型即函数的返回值类型。若函数不提供返回值,则可定义其类型为:void。,例如:void putdata(int a),省略函数类型名时,C语言默认其为int型。,(2)函数名,函数名又称函数标识符。命名遵循C语言标识符的规定;函数名要反映函数完成的功能。,*,(3)参数表,参数表写在函数名后的()内,由一个或多个变量标识符及类型标识符组成。,参数表中的变量称为形式参数,简称形参。,若函数没有形参,则称为无参函数,其后“()”不能省略。,参数必须指定类型。形参的类型说明:,int max(int a,int b),*,2.函数体,函数体以“”开始,以“”结束,包括变量定义和执行语句序列。函数所完成的工作由函数体中一段程序实现。,函数的返回值用返回语句return返回,形式:,return(表达式);,或 return 表达式;,或 return;,如果函数的类型与return语句的表达式的类型不一致时,则以函数的类型为准。返回时自动进行数据转换。,*,例 定义函数power(x,n),求x的n次方。,函数定义如下:,float power(float x,int n),int i;,float t=1;,for(i=1;ib)?a:b;,y=yc?y:c;,printf(max=%dn,y);,void main(),int x,y,z,m;,scanf(%d,%d,%d,max(x,y,z);/*采用函数语句形式调用函数max*/,*,int max(int a,int b),int y;,y=(ab)?a:b;,return y;,void main(),int x,y,z,m;,scanf(%d,%d,%d,m=max(x,y);m=max(m,z);,/*表达式调用形式*/,printf(“max=%dn”,m);,m=max(x,y);,printf(max=%dn,max(m,z);,/*,函数参数调用形式,*/,*,6.3.2 函数声明,函数定义在主调函数之后,需要进行主调函数中加入函数声明语句。,类型名 函数名(类型1 变量1,类型2 变量2,类型n 变量n);,说明:,函数声明应与该函数定义的函数类型与名称、形参的个数、类型、次序相一致。,函数声明中的形参名可省略,其形式为:,类型名 函数名(类型1,类型2,类型n);,类型名 函数名();,当函数定义在主调函数之前,即先定义,后调用。则调用时函数声明可以省略。,*,例 编写计算x的n次乘方的程序。,#include stdio.h”,void main(),float x,y;,int n;,float power(float x,int n);,scanf(%f,%d,y=power(x,n);,printf(“%8.2f”,y);,float power(float x,int n),int i;,float t=1;,for(i=1;iy)t=x;,else t=y;,return t;,*,2)关于形式参数和实际参数说明如下:,形式参数在函数被调用时才被分配内存。当函数执行完毕返回时,形式参数占用的内存空间便被释放。,实参可以是变量、常量和表达式。,如,:,y=power(x,4);y=,power(x,i*2);,但实参必须有确定的值。,3),形参和实参的类型必须相容,。,4),形参和实参之间的关系是,:,单向的值的传递,10,10,5,5,a,x,b,y,1)形参y之间值的传递如图所示。,*,6.3.4 函数的嵌套调用,调用一个函数的过程中又调用了另一个函数,这种调用称为函数的嵌套调用,。,函数1,调用函数2,函数2,调用函数3,函数3,(1),(9),(8),(2),(3),(5),(4),(7),(6),*,6.3.5 递归调用,函数调用函数本身,称为函数的递归调用。递归调用形式如下:,2)间接递归,void a(),.,b();,.,void b(),.,a();,.,直接递归,void a(),.,a();,.,*,用递归算法计算n!,讨论:,采用递归的方法计算。n!的递归定义形式的:,编程,:,if(,初始条件,),表达式,;,else,递推表达式,;,1 n=0;,n!=,n*(n-1)!n0,*,例程序:,#include,int fac(unsigned n),int f;,if (n=0),f=1;/*递归结束条件*/,else f=n*fac(n-1);,return f;,void main(),int y;,int n;,scanf(“%d”,y=fac(n);,printf(“%d!=%dn”,n,y);,*,分析:当程序输入3时,y=fac(3),3*fac(2),2*fac(1),1*fac(0),1,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!