书签 分享 收藏 举报 版权申诉 / 64
上传文档赚钱

类型函数及变量的作用域课件.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:3348101
  • 上传时间:2022-08-22
  • 格式:PPT
  • 页数:64
  • 大小:1.08MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《函数及变量的作用域课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    函数 变量 作用 课件
    资源描述:

    1、第四讲函数及变量的作用域函数及变量的作用域第1页,共64页。第2页,共64页。第3页,共64页。即函数返回值的类型。无返回值为void类型语句序列。描述了实现功能的过程,并一般要最后执行一条return语句。可包含多个形式参数。定义了函数将从调用函数中接收多少个数据及其类型第4页,共64页。第5页,共64页。即所有参数的数据类型第6页,共64页。注注 意意第7页,共64页。#include void f1();/函数说明void f2();void main()f1();/函数调用 f2();void f1()/函数定义 cout Function f1.n;f2();void f2()cou

    2、t Function f2.n;main()f1()f2()第8页,共64页。第9页,共64页。第10页,共64页。第11页,共64页。函数声明函数声明调用表达式调用表达式函数定义函数定义实参的个数、类型及顺序要与形参保持一致形式参数实际参数第12页,共64页。第13页,共64页。有时也称:第14页,共64页。#include#include void swap(void swap(int,intint,int););void main()void main()int int a=3,b=5;a=3,b=5;coutbefore swap:a=a,b=bendl;coutbefore swap

    3、:a=a,b=bendl;swap(swap(a,ba,b););coutafter swap:a=a,b=bendl;coutafter swap:a=a,b=bendl;void swap(void swap(int a,int bint a,int b)int temp;int temp;temp=a;a=b;b=temp;temp=a;a=b;b=temp;coutin swap:a=a,b=bendl;coutin swap:a=a,b=bendl;第15页,共64页。调用swap时,内存单元分配情况:353ababtemp 实参 形参3535实参形参35过程调用中35过程调用后te

    4、mp=a;a=b;b=temp;第16页,共64页。第17页,共64页。#include#include void swap(void swap(int int*,int,int*););void main()void main()int int a=3,b=5;a=3,b=5;coutbefore swap:a=a,b=bendl;coutbefore swap:a=a,b=bendl;swap(swap(&a,&ba,&b);/);/实参为变量地址 coutafter swap:a=a,b=bendl;coutafter swap:a=a,b=bendl;void swap(void sw

    5、ap(int int*a,int a,int*b b)/)/形参为指针类型 int temp;int temp;temp=temp=*a;a;*a=a=*b;b;*b=temp;/b=temp;/注意引用方式 coutin swap:a=a,b=bendl;coutin swap:a=a,b=bendl;第18页,共64页。调用swap时,内存单元分配情况:35353过程调用后 形参ababtemp 实参3510012008实参形参2008100120081001过程调用中35temp=*a;*a=*b;*b=temp;第19页,共64页。第20页,共64页。#include void swa

    6、p(int&,int&);void main()int a=3,b=5;coutbefore swap:a=a,b=bendl;swap(a,b);/实参为变量名 coutafter swap:a=a,b=bendl;void swap(int&a,int&b)/形参为引用类型 int temp;temp=a;a=b;b=temp;/注意区别 coutin swap:a=a,b=bendl;第21页,共64页。调用swap时,内存单元分配情况:35353过程调用后 形参ababtemp 实参35实参形参20081001过程调用中35temp=a;a=b;b=temp;第22页,共64页。第23

    7、页,共64页。#include#include int add(int x,int y);int add(int x,int y);/函数声明函数声明 void main()void main()int a=4,b=6;int a=4,b=6;int z=add(int z=add(+a,a+b+a,a+b);/);/从左至右为从左至右为5 115 11 coutzendl;/coutzendl;/从右至左为从右至左为5 105 10 int add(int x,int y)int add(int x,int y)/函数定义(实现)函数定义(实现)return x+y;return x+y;第

    8、24页,共64页。第25页,共64页。第26页,共64页。第27页,共64页。#include void invert(char b,int n);void main()char s60;int n;couts;cout字符串原始顺序:sendl;n=strlen(s);invert(s,n);cout字符串反转后的顺序:sendl;void invert(char b,int n)for(int i=0;in/2;i+)char c=bi;bi=bn-1-i;bn-1-i=c;S0S1S2S3S4输入一字符串个数,反序存放并输出输入一字符串个数,反序存放并输出不能写成invert(sn,n)

    9、有问题吗?第28页,共64页。第29页,共64页。#include void invert(char*b,int n);void main()char s60;int n;/char*p=s;couts;cout字符串原始顺序:sendl;n=strlen(s);invert(s,n);/invert(p,n);cout字符串反转后的顺序:sendl;void invert(char*b,int n)for(int i=0;in/2;i+)char c=*(b+i);*(b+i)=*(b+n-1-i);*(b+n-1-i)=c;输入一字符串个数,反序存放并输出输入一字符串个数,反序存放并输出第

    10、30页,共64页。第31页,共64页。#include typedef char arr60;/先用类型定义一个char型的数组类型void invert(&b,int n);void main()char s60;int n,*p=s;coutp;cout字符串原始顺序:sendl;n=strlen(s);invert(s,n);cout字符串反转后的顺序:sendl;void invert(arr&b,int n)for(int i=0;iy)?x:y);double max(double x,double y)return(xy)?x:y);#include void main()cou

    11、tmax(10,20)endl;coutmax(1.23,2.34)endl;靠将实参的个数及类型和所被调用的f()函数的形参的个数及类型一一比较来判断。第39页,共64页。()作为重载函数至少在参数个数、参数类型上有所不同。若仅在返回类型上不同,编译器是无法区别的。如:void func(int);int func(int);void func(int);int func(int);/错误 int min(int,int);int min(int,int);int min(int,int,int);int min(int,int,int);/正确 int add(int,int);int a

    12、dd(int,int);double add(double,double);double add(double,double);/正确()typedef定义的类型只是给已有类型取另外一个名字,编译器不能将其同原类型区分。如:typedef INT int;typedef INT int;void func(int x).void func(int x).void func(INT x)void func(INT x)(3)重载函数一般应具有相同的功能,否则会破坏程序的可读性。第40页,共64页。第41页,共64页。第42页,共64页。#include#include const int k=4

    13、;const int k=4;constconst int n=6;int n=6;/符号常量定义符号常量定义int power(int,int);int power(int,int);/求幂的函数说明求幂的函数说明int sum(int,int);int sum(int,int);/求和的函数说明求和的函数说明void main()void main()coutSum of coutSum of=;=;coutsum(k,n)endl;coutsum(k,n)endl;/调用调用sumsum函数函数 第43页,共64页。int sum(int k,int n)int sum(int k,in

    14、t n)/*计算计算1 1到到n n的的k k次方之累加和次方之累加和*/int s=0;int s=0;for(int i=1;i=n;i+)for(int i=1;i=n;i+)s+=power(i,k);s+=power(i,k);/累加累加 return s;return s;/调用调用f1f1函数函数 int power(int m,int n)int power(int m,int n)/*计算计算mm的的n n次方次方*/int p=1,i;int p=1,i;for(i=1;in;i+)p for(i=1;i1三、调用函数本身,但参数值趋于结束条件一、有一个使递归结束的条件二、

    15、当条件成立时,不再调用自己,而有确定值第45页,共64页。s:=fac(3)主程序fac(3):=fac(2)*3n=3fac(2):=fac(1)*2n=2fac(1):=1n=1fac:=6fac:=2fac:=1第46页,共64页。第47页,共64页。第48页,共64页。第49页,共64页。在不同作用域中允许同名。在同一作用域中不允许同名。蓝色为函数作用域绿色为块作用域不为x x的原因是局局部优先部优先4 5 4 5 4 505第50页,共64页。第51页,共64页。#includeint i(5);/外部变量外部变量externstatic int j(6);/外部静态变量外部静态变量

    16、void min(int x,int y)/形参形参 int i(3);/自动变量自动变量 auto register int j(2);/寄存器变量寄存器变量 static int k(1);/内部静态变量内部静态变量 void main()局部变量全局变量蓝色为文件作用域绿色为函数作用域注意:同名时是局部优先第52页,共64页。分析程序结果分析程序结果int a(5),b(7),c(10);coutatbtcendl;coutatbtcendl;int b(8);double c(8.8);coutatbtcendl;a=b;int c;c=b;coutatbtcendl;coutatbt

    17、cendl;coutatbtcendl;5 7 105 7 105 8 8.85 8 8.88 8 88 8 88 7 108 7 108 8 8.88 8 8.8第53页,共64页。第54页,共64页。第55页,共64页。输入输入15个数,用函数求和与平均值个数,用函数求和与平均值void main()double a15,s(0),ave(0);for(int i=0;i15;i+)cout输入第(i+1)ai;for(i=0;i15;i+)s+=ai;ave=s/15;cout和:sendl;cout平均值:aveendl;sum(15)ave(15)第56页,共64页。double s

    18、um(int x);/函数声明double ave(int x);/函数声明double a15,s(0);/全局变量void main()for(int i=0;i15;i+)cout输入第(i+1)ai;cout和:sum(15)endl;/函数调用 cout平均值:ave(15)endl;第57页,共64页。double sum(int x)/求和函数的定义 for(i=0;ix;i+)s+=ai;return s;double ave(int x)/求平均值函数的定义 return s/x;第58页,共64页。数组排序冒泡法数组排序冒泡法第一轮第一轮 B D C A E原数据原数据 B

    19、 E D C A第三轮第三轮 B A C D E第二轮第二轮 B C A D E第四轮第四轮 A B C D E 4 3 2 1结论:轮数结论:轮数(外循环外循环)为为:n-1,每轮次数每轮次数(内循环内循环)为为:n-i第59页,共64页。void main()const int N=6;int bN=89,3,56,44,12,99;for(int i=1;iN;i+)/控制轮数 for(int j=0;jbj+1)/如果交换两数 /输出排序后数组 for(int k=0;kN;k+)coutbkt;第60页,共64页。int a10=8,5,7,8,3,5,6,1,9,1,n=10;fo

    20、r(i=0;i10;i+)for(j=i+1;jm;/输入int sqrtm=sqrt(m);for(int I=2;I=sqrtm;I+)if(m%I=0)/若能被某数整除 flag=0;/标志置0,并终止循环 break;else /否则标志置1,flag=1;if(flag)/如果全部比较后标志为1则是素数coutm is prime.n;else coutm isnt prime.n;判断一个数是否素数?判断一个数是否素数?第62页,共64页。int a10=8,5,7,8,3,5,6,1,9,1,b10,n=10;int i,j,flag,k=0;for(i=0;in;i+)flag

    21、=0;/用标志可简化编程 for(j=i+1;jn;j+)if(ai=aj)/若元素重复 flag=0;break;/置标志为0,并终止比较 elseflag=1;if(flag)/若比较一轮无重复 bk=ai,k+;/把此元素放入b /并使个数加1输入输入10个数,去除重复值后排序个数,去除重复值后排序第63页,共64页。本讲作业本讲作业1、编程求出50至100之内所有素数之和(计算素数要求调用函数实现);2、设定数组的10个元素(有重复)并输出,调用函数(数组名作参数)去除数组重复值,再调用函数(数组名作参数)对无重复元素的数组排序,输出排序后的各元素;3、用函数重载的方式实现两个数的四则运算;第64页,共64页。

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:函数及变量的作用域课件.ppt
    链接地址:https://www.163wenku.com/p-3348101.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库