第六章-自定义函数市赛课一等奖全省微课优质课特等奖PPT课件省名师优质课赛课获奖课件市赛课一等奖课件.ppt
《第六章-自定义函数市赛课一等奖全省微课优质课特等奖PPT课件省名师优质课赛课获奖课件市赛课一等奖课件.ppt》由会员分享,可在线阅读,更多相关《第六章-自定义函数市赛课一等奖全省微课优质课特等奖PPT课件省名师优质课赛课获奖课件市赛课一等奖课件.ppt(59页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第六章 自定义函数1/59回顾第一节课 C 程序/*下面3行是预处理命令部分*/#include#include#define PI 3.1415926/*下面两行是函数原型说明部分*/float supArea(float);float volume(float);/*下面是主函数部分*/main()float a=-5,b,c,d;b=fabs(a);c=supArea(b);d=volume(b);printf(c=%f,d=%fn,c,d);/*下面是 supArea 函数定义部分,函数功效是计算球表面积*/float supArea(float r)float s;s=4*PI*r*
2、r;return s;/*接前面.*/*下面是 volume 函数定义部分,函数功效是计算球体积*/float volume(float r)float v;v=4.0/3.0*PI*r*r*r;return v;2/592回顾第一节课 C 程序/*下面3行是预处理命令部分*/#include#include#define PI 3.1415926/*下面两行是函数原型说明部分*/float supArea(float);float volume(float);/*下面是主函数部分*/main()float a=-5,b,c,d;b=fabs(a);c=supArea(b);d=volume(
3、b);printf(c=%f,d=%fn,c,d);/*下面是 supArea 函数定义部分,函数功效是计算球表面积*/float supArea(float r)float s;s=4*PI*r*r;return s;/*接前面.*/*下面是 volume 函数定义部分,函数功效是计算球体积*/float volume(float r)float v;v=4.0/3.0*PI*r*r*r;return v;出口(返回值)出口类型函数名 入口(接收必需信息)处理过程对调用者而言,不需要知道函数内部细节。一个函数就是一个独立功效,只需要知道函数名,并提供完成功效必需信息,它就能进行处理实现功效,
4、并可能返回给调用者一个处理结果。3/593怎样自定义函数 and 原因q所以,除函数名以外,自定义函数由三部分组成:入口 处理过程 出口q下面是自定义函数语法:返回值类型 函数名 (0个或多个参数申明)申明部分 语句序列 q为何要自定义函数?nC 编译器中自带库函数“不够多”。n假如每次实现一个相同功效都需要编写全部语句代码,太罗嗦。return.;4/594自定义函数设计过程/*求一个较小整数 n 次幂值(n正整数)。*/#include main()int base,n;/*分别存放底数和幂值。*/int i;int p=1;/*存放底数n次幂结果。*/base=2;n=4;for(i=1
5、;i=n;i+)p=p*base;printf(%dn,p);base=-3;n=2;p=1;for(i=1;i=n;i+)p=p*base;printf(%dn,p);getch();重复操作5/595自定义函数设计过程/*求一个较小整数 n 次幂值(n正整数)。*/#include main()int base,n;/*分别存放底数和幂值。*/int i;int p=1;/*存放底数n次幂结果。*/base=2;n=4;for(i=1;i=n;i+)p=p*base;printf(%dn,p);base=-3;n=2;p=1;for(i=1;i=n;i+)p=p*base;printf(%
6、dn,p);getch();返回值起一个函数名处理过程形式参数返回值类型6/596自定义函数设计过程#include/*power 函数:求一个较小整数 n 次幂值。*/int power(int base,int n)/*接收底数和幂。*/int i,p=1;for(i=1;i=n;i+)p=p*base;return p;/*返回结果。*/main()printf(%dn%dn,power(2,4),power(-3,2);getch();16 97/597用 return 返回值q函数体内使用 return 语句向调用函数处返回值。语法以下:return;或者 return 表示式;或者
7、 return (表示式);int numCheck(int n)if(n%5=0)return 1;else return 0;返回值类型须和函数名前面类型一致8/598函数原型说明#include int power(int,int);main()printf(%d%dn,power(2,4),power(-3,2);getch();/*power 函数:求一个较小整数 n 次幂值。*/int power(int base,int n)/*接收底数和幂。*/int i,p=1;for(i=1;i=n;i+)p=p*base;return p;/*返回结果。*/函数使用说明(or 函数原型说
8、明)9/599图1:C 源程序结构图C源程序函数原型说明函数(若干)函数头函数体表示式语句流程控制语句函数调用语句块语句(复合语句)空语句#预处理命令定义变量部分执行语句?/*介绍性注释*/其中必定有一个main()函数10/5910思索题q以下叙述中正确是()A)C 语言程序总是从第一个定义函数开始执行B)在C语言程序中,要调用函数必须在 main()函数中定义C)C 语言程序总是从 main()函数开始执行D)C 语言程序中 main()函数必须放在程序开始部分q有以下程序:#include int f(int,int);main()int i=2,j;j=f(i,i+1);printf(
9、“%dn”,j);int f(int a,int b)int c=a;if(a b)c=1;else if(a=b)c=0;else c=-1;return (c);程序输出结果是()A)-1B)0C)1D)211/5911课后作业q以下程序输出结果是_。#include int fun1(int a,int b)int c;a+=a;b+=b;c=a+b;return c*c;main()int x=11,y=19;printf(“%dn”,fun1(x,y);q以下函数用以求 x y 次方。请填空。double fun(double x,int y)int i;double z=1.0;f
10、or(i=1;i 1 ;i+)z=2 ;return z;q复习书本 P121P130 6.1 6.4 节q预习书本 P140P143 6.6 节12/5912上机练习 1qFTP 练习 10-1_1:求一个较小整数n次幂值(n正整数)。qFTP 练习 10-1_2:前一个程序函数实现。13/5913上机练习 2/*求两数平方和。*/#include main()double x,y;double z=0;/*存放平方和*/*第一次运算。*/x=2;y=4;z=x*x+y*y;printf(%.2fn,z);/*第二次运算。*/x=3;y=6;z=0;z=x*x+y*y;printf(%.2f
11、n,z);getch();q提取求两数平方和功效,做成有返回值函数 squareSum。在主函数中调用此函数并将返回值打印出来。q在上面练习基础上修改函数,将函数功效改为:调用时须传入四个值,返回这四个值平方和。14/5914上机练习 3/*求 n!(即 1*2*3*.*n)。*/#include main()int n,f;printf(Enter a integer number:n);scanf(%d,&n);/*输入 n 值*/*在此调用函数,传入 n,返回 n 阶乘,*/*并将返回结果保留到变量 f 中。*/printf(%d!=%dn,n,f);getch();制作函数实现注释处要
12、求功效。(注意:别忘了设计函数原型说明。)15/5915回顾第一节课 C 程序/*下面3行是预处理命令部分*/#include#include#define PIPI 3.1415926/*下面两行是函数原型说明部分*/float supArea(float);float volume(float);/*下面是主函数部分*/main()float a=-5,b,c,d;b=fabs(a);c=supArea(b);d=volume(b);printf(c=%f,d=%fn,c,d);/*下面是 supArea 函数定义部分,函数功效是计算球表面积*/float supArea(float r)
13、float s;s=4*PIPI*r*r;return s;/*接前面.*/*下面是 volume 函数定义部分,函数功效是计算球体积*/float volume(float r)float v;v=4.0/3.0*PIPI*r*r*r;return v;符号常量16/5916符号常量作用#include#define MAXSIZE 10main()double aMAXSIZE;int i;.for(i=0;i MAXSIZE;i+)/对数组每个单元赋值 ai=i+1;.for(i=0;i MAXSIZE;i+)/在输出屏幕显示数组每个单元值 printf(“%d”,ai);.17/591
14、7图1:C 源程序结构图C源程序函数原型说明函数(若干)函数头函数体表示式语句流程控制语句函数调用语句块语句(复合语句)空语句#预处理命令(引入函数库,设定符号常量)定义变量部分执行语句?/*介绍性注释*/其中必定有一个main()函数18/5918函数嵌套调用#include#include double f(double);/函数原型申明main()printf(“%lfn”,f(3);getch();/f 函数:求 f(x)=ex+1 值。double f(double x)/在该函数内部,是经过调用另外一个函 /数辅助实现功效,这在 C 中是允许。return exp(x)+1;/下面
15、这个函数由/math.h 提供double exp(.):在调用一个函数过程中,该函数又调用另一个函数称为函数嵌套调用 19/5919函数递归调用q函数除了能够在其内部调用其它函数外,还能够直接或间接地对本身进行调用。这是一个尤其调用方式。那么这种调用能处理什么问题呢?q比如求 n!。求 n!也可用以下关系表示:n!=1 当 n=1 时n*(n1)!当 n 1 时20/5920函数递归调用#include/fac 函数:求 n!int fac(int n)int p;if(n=1)return 1;else p=n*fac(n 1)fac(n 1);/在这里函数调用了本身 return p;m
16、ain()int m=5,y;/在这里确保当 m 值是一个正整数时,/下面这条语句才会被执行 printf(“%dn”,fac(m);getch();fac(5)5 *fac(4)4 *fac(3)3 *fac(2)2 *fac(1)121/5921再看一个例题q有 5 个人坐在一起,问第五个人多少岁?他说比第 4 个人大 2 岁。问第 4 个人岁数,他说比第 3 个人大 2 岁。问第三个人,又说比第 2 人大两岁。问第 2 个人,说比第一个人大两岁。最终问第一个人,他说是 10 岁。请问第五个人多大?#include/*age 函数:求第 n 个人年纪。*/int age(int n)if(
17、n=1)return 10;else return(age(n-1)+2);main()printf(“%d”,age(5);getch();age(5)age(4)+210age(3)+2age(2)+2age(1)+21822/5922思索题q有以下程序:#include long fib(int n)if(n 2)return(fib(n-1)+fib(n 2);else return(2);main()printf(“%ldn”,fib(6);程序输出结果是()A)8B)30C)16D)2fib(6)fib(5)+fib(4)fib(4)+fib(3)fib(3)+fib(2)fib(
18、3)+fib(2)fib(2)+fib(1)fib(2)+fib(1)22222fib(2)+fib(1)22223/5923思索题q以下程序输出结果是_。#include int fun(int x)int p;if(x=0|x=1)return(3);p=x fun(x 2);return p;main()printf(“%dn”,fun(9);fun(9)9 -fun(7)(7 -fun(5)(5 -fun(3)(3 -fun(1)324/5924关于下次课内容q到当前为止,我们自定义函数,其“入口”是相对较“窄”。q假如我们希望自定义函数能在被调用时接收更多值,并使对这些值修改能反馈给
19、调用方,该怎样设计呢?预知后事怎样,请听下次课分解。25/5925课后作业q以下程序输出结果是_。#include int fun2(int a,int b)int c;c=(a*b)%3;return c;int fun1(int a,int b)int c;a+=a;b+=b;c=fun2(a,b);return c*c;main()int x=11,y=19;printf(“%dn”,fun1(x,y);q复习书本 P140P143 6.6 节q预习书本 P211P218 10.1 节,书本 P148P157 7.1 7.5 节,书本 P161P162 7.7 节26/5926上机练习q
20、FTP 练习 10-5:在 FTP 练习 10-4 基础上,再增加一个函数,接收一个值 n 并经过嵌套调用方法求 1!+2!+.+n!值。在主函数中调用此函数,传入 5 并显示结果。qFTP 练习 10-6:用递归调使用方法求 n!。27/5927#include void redouble(int,int);main()int num1=5,num2=6;printf(“n 调用函数前 num1=%d,num2=%dn,num1,num2);redouble(num1,num2);printf(“n 调用函数后 num1=%d,num2=%dn,num1,num2);void redoubl
21、e(int val1,int val2)val1*=2;val2*=2;printf(“n 被调函数里 val1=%d,val2=%dn,val1,val2);传值调用示例调用函数前 num1=5,num2=6调用函数后 num1=5,num2=6被调函数里 val1=10,val2=125628/5928#include void redouble(int,int);main()int num1=5,num2=6;printf(“n 调用函数前 num1=%d,num2=%dn,num1,num2);redouble(num1,num2);printf(“n 调用函数后 num1=%d,nu
22、m2=%dn,num1,num2);void redouble(int val1,int val2)val1*=2;val2*=2;printf(“n 被调函数里 val1=%d,val2=%dn,val1,val2);传值调用示例调用函数前 num1=5,num2=6调用函数后 num1=5,num2=6被调函数里 val1=10,val2=12num1num25656FF23FF05传值后修改传值后修改val2FFEAFF45将变量num1值复制给形参val1将变量num2值复制给形参val2val1传值后修改传值后修改调用函数被调用函数101229/5929#include void r
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第六 自定义 函数 市赛课 一等奖 全省 优质课 特等奖 PPT 课件 名师 获奖
链接地址:https://www.taowenge.com/p-96149571.html
限制150内