第七章函数(精品).ppt
《第七章函数(精品).ppt》由会员分享,可在线阅读,更多相关《第七章函数(精品).ppt(50页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第七章第七章 函数函数7.17.1 模块化程序设计思想模块化程序设计思想模块化程序设计思想模块化程序设计思想7.27.2 函数定义函数定义函数定义函数定义7.37.3 函数调用函数调用函数调用函数调用7.47.4 函数的原型与生命函数的原型与生命函数的原型与生命函数的原型与生命7.57.5 函数的嵌套与递归函数的嵌套与递归函数的嵌套与递归函数的嵌套与递归7.6 7.6 库函数库函数库函数库函数7.7 7.7 变量的作用域与存储类型变量的作用域与存储类型变量的作用域与存储类型变量的作用域与存储类型7.1 模块化程序设计思想模块化程序设计思想例例例例7.17.1编程求编程求编程求编程求步骤:步骤:
2、步骤:步骤:1.1.确定确定确定确定KK,MM和和和和N N;2.2.分别计算阶乘;分别计算阶乘;分别计算阶乘;分别计算阶乘;3.3.输出最终结果。输出最终结果。输出最终结果。输出最终结果。4.4.已有思路:已有思路:已有思路:已有思路:#include#include#include#include main()main()intint I,n,k,m;I,n,k,m;doubledouble fk,fm,fn;fk,fm,fn;scanfscanf(“%d%d%d”,&(“%d%d%d”,&n n,&k,&m);,&k,&m);fk=1fk=1 ;for(i=1;i=n;i+)for(i=
3、1;i=n;i+)fk=fk*i;fk=fk*i;printf(“k!/(M!+N!)=%printf(“k!/(M!+N!)=%f f”,fk/(fm+fn);”,fk/(fm+fn);7.1 模块化程序设计思想模块化程序设计思想#include#include#include#include void mainvoid main()()intint m,n,km,n,k;doubledouble fk,fm,fn;fk,fm,fn;scanf(“%d%d%d”,&scanf(“%d%d%d”,&n n,&k,&m);,&k,&m);fk=fk=factfact(k);(k);fm=fm=f
4、actfact(m);(m);fn=fn=factfact(n);(n);printf(“k!/(M!+N!)=%f”,fk/(fm+fn)printf(“k!/(M!+N!)=%f”,fk/(fm+fn);doubledouble fact(intfact(int f)f)double r=1double r=1;int i;int i;for(ifor(i=1;i=1;i=f;i=f;i+)+)r=r*i;r=r*i;return(r);return(r);模块化程序设计的特点:模块化程序设计的特点:(1 1)模模块块相相对对独独立立,功功能能单单一一。编编写写相相对对简简单单,可可以独立
5、编写调试。以独立编写调试。(2 2)可可集集体体开开发发,缩缩短短开开发发周周期期。不不同同的的模模块块可可以以由不同的人员开发,最终能够合成完整的程序。由不同的人员开发,最终能够合成完整的程序。(3 3)开开发发出出的的模模块块,可可在在不不同同的的应应用用程程序序中中多多次次使使用,减少重复劳动,提高开发效率。用,减少重复劳动,提高开发效率。(4)测试、更新以模块为单位进行而不会影响其他)测试、更新以模块为单位进行而不会影响其他模块。模块。7.2 函数的定义函数的定义函数定义的一般形式:函数定义的一般形式:函数定义的一般形式:函数定义的一般形式:函数名(函数名(函数名(函数名()函数体函数
6、体当前函数返回主调函数的当前函数返回主调函数的当前函数返回主调函数的当前函数返回主调函数的数据类型(即函数运行结数据类型(即函数运行结数据类型(即函数运行结数据类型(即函数运行结果的数据类型)果的数据类型)果的数据类型)果的数据类型)编写方法与主编写方法与主函数的编写方函数的编写方法一样法一样例例7.1:计算整数:计算整数f阶乘阶乘double fact(int f)double r=1;int i;for(i=1;i=f;i+)r=r*i;return(r);函数类型函数类型参数列表参数列表返回值返回值7.3 函数调用 1.函数调用的形式函数调用指定了被调用函数的名字和调用函数所需的信息,该
7、信息是通过函数参数提供的。函数的调用方式有三种n函数调用作为独立的语句n函数调用出现在表达式中n函数调用作为另一个函数的参数Printf(“hello!”);Printf(“hello!”);Fk=fact(k);Fk=fact(k);Printf(“k!=%f”,fact(k);Printf(“k!=%f”,fact(k);#include#include#include#include void mainvoid main()()intint m,n,km,n,k;doubledouble fk,fm,fn;fk,fm,fn;scanf(“%d%d%d”,&scanf(“%d%d%d”,&
8、n n,&k,&m);,&k,&m);fk=fk=factfact(k);(k);fm=fm=factfact(m);(m);fn=fn=factfact(n);(n);printf(“k!/(M!+N!)=%f”,fk/(fm+fn)printf(“k!/(M!+N!)=%f”,fk/(fm+fn);doubledouble fact(intfact(int f)f)double r=1double r=1;int i;int i;for(ifor(i=1;i=1;i=f;i=f;i+)+)r=r*i;r=r*i;return(r);return(r);形参与实参形参与实参形式参数形式参数:
9、定义函数时函数名后面括号中的变量名定义函数时函数名后面括号中的变量名实际参数实际参数:调用函数时函数名后面括号中的变量名调用函数时函数名后面括号中的变量名v说明说明 实参必须有确定的值实参必须有确定的值形参必须指定类型形参必须指定类型形参与实参形参与实参类型一致,个数相同类型一致,个数相同形参在函数被调用前不占内存形参在函数被调用前不占内存;函数调用时为形函数调用时为形参分配内存;调用结束,内存释放参分配内存;调用结束,内存释放2.函数间的参数传递n参数传递方式参数传递方式n值传递方式值传递方式n方式:函数调用时方式:函数调用时,为形参分配单元为形参分配单元,并将实参的并将实参的值值复制复制到
10、形参中;调用结束,形参单元被释放,到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值实参单元仍保留并维持原值n特点:特点:n形参与实参占用形参与实参占用不同不同的内存单元的内存单元n单向单向传递传递#include#include#include#include void mainvoid main()()intint m,n,km,n,k;doubledouble fk,fm,fn;fk,fm,fn;scanf(“%d%d%d”,&scanf(“%d%d%d”,&n n,&k,&m);,&k,&m);fk=fk=factfact(k);(k);fm=fm=factfact(m);(
11、m);fn=fn=factfact(n);(n);printf(“k!/(M!+N!)=%f”,fk/(fm+fn)printf(“k!/(M!+N!)=%f”,fk/(fm+fn);doubledouble fact(intfact(int f)f)double r=1double r=1;int i;int i;for(ifor(i=1;i=1;i=f;i=f;i+)+)r=r*i;r=r*i;return(r);return(r);3.函数的返回值函数的返回值(1)无返回值函数的定义与调用)无返回值函数的定义与调用定义形式:定义形式:定义形式:定义形式:void void 函数名()函数
12、名()函数名()函数名()说明语句;说明语句;说明语句;说明语句;语句;语句;语句;语句;void print1(int n)int i;for(i=1;i=n;i+)printf(“*”);main()int x;for(x=1;xy?x:y;return(z);比较两个数并输出大者比较两个数并输出大者main()int a,b,c;scanf(%d,%d,&a,&b);c=max(a,b);printf(Max is%d,c);int max(int x,int y)int z;z=xy?x:y;return(z);实参实参形参形参函数调用语句函数调用语句函数调用语句函数调用语句函数定义部
13、分函数定义部分函数定义部分函数定义部分计算计算x的立方的立方#include float cube(float x)return(x*x*x);main()float a,product;printf(Please input value of a:);scanf(%f,&a);product=cube(a);printf(”Cube of%.4f is%.4fn,a,product);xaproduct1.21.21.728 例例7.6 从键盘中输入一个年份,判断该年是否是从键盘中输入一个年份,判断该年是否是闰年。闰年。main()int year,st;printf(“Input a ye
14、ar:n”);scanf(“%d”,&year);st=leap(year);if(st=1)printf(“n%d is a leap yearn”,year);else printf(“n%d is not a leap yearn”,year);int leap(int year)int st;if(year%4=0&year%100!=0|year%400=0)st=1;else st=0;return(st);函数调用函数调用自定义函数自定义函数自定义函数自定义函数实际参数实际参数形式参数形式参数n函数调用方式函数调用方式n函数语句函数语句:例例 printstar();printf
15、(“Hello,World!n”);n函数表达式函数表达式:例例 m=max(a,b)*2;n函数参数函数参数:例例 printf(“%d”,max(a,b);m=max(a,max(b,c);n函数返回语句函数返回语句n形式形式:return(表达式表达式);或或 return 表达式表达式;或或 return;n功能功能:使程序控制从被调用函数返回到调用函数:使程序控制从被调用函数返回到调用函数中,同时把返值带给调用函数中,同时把返值带给调用函数n说明说明:n函数中可有多个函数中可有多个return语句语句,一旦遇到一个一旦遇到一个return语句,就立即返回到主调函数。语句,就立即返回到
16、主调函数。n若无若无return语句,遇语句,遇时,自动返回调用函数时,自动返回调用函数n若函数类型与若函数类型与return语句中表达式值的类型语句中表达式值的类型不一致,按前者为准,自动转换不一致,按前者为准,自动转换-函数函数调用转换调用转换nvoid型函数型函数int max(int x,int y)if(xy)return(x);return(y);void main()int a,b,c;scanf(“%d,%d”,&a,&b);c=max(a,b);printf(“max is%d”,c);函数返回值类型转换函数返回值类型转换main()float a,b;int c;int m
17、ax(float x,float y);scanf(%f,%f,&a,&b);c=max(a,b);printf(Max is%dn,c);int max(float x,float y)float z;z=xy?x:y;return(z);函数声明函数声明输入:输入:27.0,66.0输出:输出:66从键盘中输入两个数,分别求出这两个数的最从键盘中输入两个数,分别求出这两个数的最小公倍数和最大公约数。小公倍数和最大公约数。int gys(int x,int y)int gbs(int x,int y)return(x*y/gys(x,y);int s;s=x*y/gys(x,y);retur
18、n(s);int t,s;if(xy)t=x;x=y;y=t;while(s=y%x)!=0)y=x;x=s;return(x);函数嵌套调用函数嵌套调用函数嵌套调用函数嵌套调用7.4 函数的原型与声明函数的原型与声明【形式形式】函数类型函数类型 函数名函数名(形参类型形参类型 形参名形参名,.);【作用作用】告诉编译系统告诉编译系统函数类型、参数个数及类型,函数类型、参数个数及类型,以便检验以便检验【注意注意】函数定义函数定义与与函数声明函数声明不同不同【位置位置】函数的声明位置在函数的声明位置在程序的数据说明部分(函程序的数据说明部分(函数内或外)数内或外)【说明说明】下列情况下,可不作函
19、数下列情况下,可不作函数声声明明若函数返值是若函数返值是char或或int型型,系统自动按,系统自动按int型处理型处理被调用函数定义出现在主调函数之前被调用函数定义出现在主调函数之前有些系统有些系统(如如Borland C+)要求函数声明指要求函数声明指出函数返值类型和形参类型,并且对出函数返值类型和形参类型,并且对void 和和 int 型函数也要进行函数声明型函数也要进行函数声明函数说明举例函数说明举例main()int a,b;int c;scanf(%f,%f,&a,&b);c=max(a,b);printf(Max is%dn,c);max(int x,int y)int z;z=
20、xy?x:y;return(z);int型函数可不作函数说明型函数可不作函数说明(Borland C+不行)不行)float add(float x,float y)float z;z=x+y;return(z);main()float a,b,c;scanf(%f,%f,&a,&b);c=add(a,b);printf(sum is%f,c);被调函数出现在主调函数被调函数出现在主调函数之前,不必函数说明之前,不必函数说明main()float add(float,float);/*function declaration*/float a,b,c;scanf(%f,%f,&a,&b);c=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第七章 函数精品 第七 函数 精品
限制150内