函数复习省公开课一等奖全国示范课微课金奖课件_第1页
函数复习省公开课一等奖全国示范课微课金奖课件_第2页
函数复习省公开课一等奖全国示范课微课金奖课件_第3页
函数复习省公开课一等奖全国示范课微课金奖课件_第4页
函数复习省公开课一等奖全国示范课微课金奖课件_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

函数复习第1页完整函数申明与定义语法://函数原型返回值类型函数名(参数列表);//函数定义语法:返回值类型函数名(参数列表)//函数头部

{

申明变量

语句

}函数体第2页把程序控制权从函数返回到主调函数函数调用点有三种方法用于带返回值函数设计

return表示式;

把表示式返回给调用者,并交回控制权,用于不带返回值函数设计

return;

函数结束右花括号:}

碰到上述两项中任何一项,函数执行结束,交回控制权第3页程序控制权问题(一)以下例带返回值函数控制过程#include"stdio.h"intsquare(intx);//自定义函数原型申明

main(){intx;for(x=1;x<=10;x++)printf("%d",square(x));printf("\n");return0;}

//函数定义intsquare(inty){intr;r=y*y;returnr;}调用函数,控制转移,传递参数值,y=x函数执行完,返回主调函数,交回控制权,如有返回值,则返回结果第4页带返回值函数设计是最常见函数形式,普通用来得到一个结果如:

intsquare(intx);//原型intsquare(intx)//定义

{

intr;

r=x*x;returnr;

}其中,函数返回值是由return语句实现,该语句作用是,结束程序并返回结果(假如后面跟了表示式),交回控制权第5页带返回值函数设计例5.2:设计一max函数,计算返回三个整数中最大值,三个整数用scanf函数输入1.分析

三个数求最大值,能够两两比较,第一个和第二个比较求得最大值,最大值载和第三个数比较,求得最大值即为三个数最大值,其中包含两次两个数比较求最大值问题,所以能够将两个数求最大值设计为函数实现,重复调用第6页带返回值函数设计例5.3:求6~100中全部素数,要求设计一个判断是否是素数函数例5.4:求1~1000中全部水仙花数,要求设计一个判断是否是水仙花数函数。153=13+53+33,153就是水仙花数第7页不带返回值函数设计例5.5要求设计一个能够输出n个连续星号函数第8页以下例不带返回值函数控制过程程序控制权问题(二)

第9页不带返回值函数设计普通用来描述做一件事情,无返回结果

如:

voidstar(intn);//原型申明

voidstar(intn)//定义{ inti; for(i=1;i<=n;i++) printf("*");}

用函数最终右花括号结束程序,并交回控制器第10页不带返回值函数设计例:屏幕上输出以下列图形要求设计一个能够输出n个连续星号函数设计一个能够输出n个连续空格函数第11页总结:自定义函数基本过程函数原型申明定义函数(实现函数功效,函数首部中参数称为形式参数,简称形参)调用函数(调用中出现参数叫做实际参数,省略类型)调用函数三个步骤:参数类型匹配为形参开辟空间实参向形参传值:自左向右、按位置传值、赋值操作:形参=实参;第12页怎样确定函数需不需要返回值带返回值函数通常表示在完成某个功效同时,要得到一个详细结果,其作用等价于一个数据函数调用通惯用在赋值语句或者看成其它函数参数,如sqrt函数,a=sqrt(4);a=sin(sqrt(4));

不带返回值函数通常表示只需要完成某个事情(功效)即可,不需要得到任何反馈信息函数调用通常单独使用调用语句,如printf函数第13页5.5函数参数形式参数,简称形参

是定义函数时,在参数列表中给出变量,该参数名称能够使用任何有效标识符形式参数作用,定义函数从外界取得必要信息信息类型、数量、次序形参有两种传递参数方式:值传递(传值)地址传递(传地址,包括指针,到下学期介绍)实际参数,简称实参

是函数调用时,依据函数定义所提供与形参对应实际值实际参数作用,提供调用函数所需要实际信息值第14页怎样设计参数函数定义时,怎样确定参数?通常情况下,把处理问题中碰到不确定信息,或者需要外界提供信息,能够设置为形式参数,由调用者在调用函数时详细给出第15页如上例中问题例:屏幕上输出以下列图形要求设计一个能够输出n个连续星号函数设计一个能够输出n个连续空格函数第16页5.6数组作为函数参数函数参数传递方式值传递(单向,由实参传递到形参)地址传递(双向,相互传递)数组作为参数是以地址方式传递语法:申明原型intswap(int[]);定义intswap(inta[])第17页值传递方式:#include"stdio.h"voidswap(inta,intb);main(){intx=2,y=4;printf("beforeswap:x=%d,y=%d\n",x,y);swap(x,y);printf("afterswap:x=%d,y=%d\n",x,y);}voidswap(inta,intb){ intt;t=a;a=b;b=t;}第18页地址传递#include"stdio.h"voidswap(inta[]);main(){intx[2]={2,4};printf("beforeswap:x=%d,y=%d\n",x[0],x[1]);swap(x);printf("beforeswap:x=%d,y=%d\n",x[0],x[1]);}voidswap(inta[]){ intt;t=a[0];a[0]=a[1];a[1]=t;}第19页5.7变量作用域局部变量在函数内部定义变量,包含main函数局部变量只在定义他函数内部有效,不能被其它函数使用,函数执行时候暂时产生,函数执行完,自动消失,存放数据也自动消失,其生命周期是函数运行整个过程全局变量在函数外部定义变量,普通放在#include之后全局变量能被全部函数使用,含有共享性,能够用于函数之间信息传递,在程序运行时产生,程序结束运行时消失,保持数据在整个程序运行中全程有效,其生命周期是程序运行整个过程第20页局部变量、全局变量简单使用方法#include”stdio.h”intfun1(int);main(){intm,j=1;m=fun1(j);printf(“%d\n”,m)}intfun1(inty){intr,k=2;r=y+k;returnr;}#include”stdio.h”intfun1(int);intj=1,k=2;main(){intm;m=fun1(j);printf(“%d\n”,m)}intfun1(inty){intr;r=y+k;returnr;}第21页形参和实参同名情况

形参可当局部变量#include”stdio.h”intfun1(int);intj=1,k=2;main(){intm,j=5;m=fun1(j);printf(“%d\n”,m)}intfun1(intj){intr;r=j+k;returnr;}#include”stdio.h”intfun1(int);main(){intm,j=1;m=fun1(j);

printf(“%d\n”,m)}intfun1(inty){intr,k=2;r=y+k;returnr;}第22页全局变量与局部变量同名情况#include”stdio.h”intfun1(int);intj=1,k=2;main(){intm;m=fun1(j);printf(“%d\n”,m)}intfun1(inty){intr;r=y+k;returnr;}#include”stdio.h”intfun1(int);intj=1,k=2;main(){intm,j=10;m=fun1(j);printf(“%d\n”,m)}intfun1(inty){intr,k=5;r=y+k;returnr;}第23页利用全局变量共享或者传递数据#include”stdio.h”intfun1(int);intj=1,k=2;main(){intm,j=10;m=fun1(j);printf(“%d\n”,m)}intfun1(inty){intr,k=5;r=y+k;returnr;}#include”stdio.h”viodfun1(int);intj=1,k=2,m;main(){intj=10;fun1(j);printf(“%d\n”,m)}voidfun1(inty){intr,k=5;m=y+k;}第24页静态变量一个特殊局部变量语法:staticinti;与普通局部变量区分:普通局部变量在程序运行结束后消失,静态变量则存在于整个程序运行过程,生命周期同全局变量与全局变量区分:全局变量能被全部函数访问,而静态变量只能在定义他函数中使用,作用域有限第25页普通局部变量、静态变量、全局变量区分#include”stdio.h”intfun1(void);main(){intj;for(j=1;j<=5;j++)m=fun1();printf(“%d\n”,m)}intfun1(void){

inti=0;

i++;returni;}#include”stdio.h”intfun1(void);main(){intj;for(j=1;j<=5;j++)m=fun1();printf(“%d\n”,m)}intfun1(void){

statici=0;i++;returni;}#include”stdio.h”intfun1(void);inti=0;main(){intj;for(j=1;j<=5;j++)m=fun1();printf(“%d\n”,m)}intfun1(void){i++;returni;}普通局部变量静态变量全局变量第26页练习题19/oj/sproblem.php?cid=1691&pid=119/oj/sproblem.php?cid=1691&pid=219/oj/sproblem.php?cid=1691&pid=3第27页5.8递归函数递归概念

函数直接或者间接调用自己本身,叫做递归递归是对本身重复调用,含有循环类似功效比如n!定义

n!=1(n=0或者n=1)

n!=n*(n-1)!(n>1)第28页递归程序举例

#include”stdio.h”intfact(int);main(){intj=3;m=fact(j);pr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论