C++第5章.ppt

上传人:s****8 文档编号:82768963 上传时间:2023-03-26 格式:PPT 页数:38 大小:210KB
返回 下载 相关 举报
C++第5章.ppt_第1页
第1页 / 共38页
C++第5章.ppt_第2页
第2页 / 共38页
点击查看更多>>
资源描述

《C++第5章.ppt》由会员分享,可在线阅读,更多相关《C++第5章.ppt(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第5章 函数5.1 C+函数的分类函数的分类5.2 函数的定义函数的定义 5.3 函数的调用函数的调用5.4 函数原型函数原型5.5 函数间的参数传递函数间的参数传递5.6 局部变量和全局变量局部变量和全局变量5.7 带有缺省参数的函数带有缺省参数的函数05.1 C+函数的分类1、main()函数函数1)必须有一个且只能有一个)必须有一个且只能有一个2)程序执行的开始)程序执行的开始3)程序执行的结束)程序执行的结束2、标准库函数、标准库函数通过调用被执行通过调用被执行3、用户自定义函数、用户自定义函数通过调用被执行通过调用被执行15.2 函数定义函数使用的三个环节:函数使用的三个环节:定义定

2、义-声明声明-调用调用一、定义一、定义1.一般格式一般格式 ()22、函数值(1)类型)类型1)可以是数值或地址(指针型)可以是数值或地址(指针型)2)void表示无返回值表示无返回值例如:例如:void main()(2)函数值通过)函数值通过return语句返回语句返回33形式参数表 1函数可以有零个或多个形式参数函数可以有零个或多个形式参数-形参形参2作用作用接收由主调函数传递来的实参。接收由主调函数传递来的实参。3.形参表的形式形参表的形式,例:例:int max(int x,int y)4二、函数间通过参数传递数据1.调用调用实参传递给形参实参传递给形参2.函数返回函数返回有返回值,

3、通过有返回值,通过return带回到主调函数带回到主调函数无返回值,被调函数中仅完成操作无返回值,被调函数中仅完成操作55.3 函数的调用一、调用格式一、调用格式1.无参函数:无参函数:函数名函数名()2.有参函数:有参函数:函数名函数名(实际参数表实际参数表)实际参数简称实参,可以是常量、变量或表达式实际参数简称实参,可以是常量、变量或表达式例如:例如:fac(5);/常量常量 fac(i);/变量变量 fac(i+2);/表达式表达式6例5.1 计算整数n的阶乘n!分析:分析:n!由由fac()函数完成函数完成1)形参)形参int n2)函数内:函数内:1到到n连乘连乘-通过循环实现通过循

4、环实现3)返回值:计算的结果)返回值:计算的结果7例5.1 求n的阶乘n!的函数#include int fac(int n)int result=1;if(n0)return-1;else if(n=0)return 1;for(int i=1;i=n;i+)result=result*i;return result;void main()coutfac(5)endl;/实参为常量实参为常量8例5.2 调用fac函数,计算110的阶乘#includeint fac(int n)/与例与例5.1相同相同void main()for(int i=1;i=10;i+)couti!=fac(i)en

5、dl;9二、调用标准库函数包含相应的头文件包含相应的头文件输入输入/输出函数输出函数 iostream.h字符串函数字符串函数 string.h数学函数数学函数 math.h105.4 函数原型1.一般形式一般形式 ();两种写法:两种写法:1)int max(int x,int y);2)int max(int,int);/省略形参名省略形参名 2.作用作用用来声明函数用来声明函数3.省略函数声明的情况省略函数声明的情况 定义在前,调用在后定义在前,调用在后11例5-3 求两数中的最大数(三个环节)#include int max(int x,int y);void main()int a,

6、b;coutab;cout max=max(a,b)y?x:y;函数调用函数调用函数定义函数定义函数声明函数声明125.5 函数间的参数传递 C+的参数传递方式:的参数传递方式:传值、引用调用和传地址传值、引用调用和传地址(见第六章见第六章)。一、值传递一、值传递1.实参的值赋给形参实参的值赋给形参2.优点:优点:实参与形参独立,在被调函数中改变形参值不影响实参实参与形参独立,在被调函数中改变形参值不影响实参减少了函数之间的数据依赖减少了函数之间的数据依赖3.缺点:仅有一个返回值缺点:仅有一个返回值13例5-4 传值调用#include void swap(int x,int y)int tm

7、p;tmp=x;x=y;y=tmp;int main()int a=2,b=3;coutBefore:a=a,b=b endl;swap(a,b);coutAfter:a=a ,b=b endl;14输出输出 Before:a=2,b=3 After:a=2,b=3结论:没有实现结论:没有实现a、b的交换的交换15二、引用调用 1.引用引用1)一种特殊类型的变量)一种特殊类型的变量2)是另一个变量的别名)是另一个变量的别名 2.引用的定义格式引用的定义格式类型名类型名&引用名引用名=被引用的变量名被引用的变量名例如:例如:int i,&j=i;163.使用使用引用名与被引用的变量使用同样的内存

8、单元。引用名与被引用的变量使用同样的内存单元。#include void main()int i,&j=i;cout&i,&jendl;i=5;cout j endl;j=6;cout i endl;17例 5-5 函数调用时引用传递#include void swap(int&x,int&y)int tmp=x;x=y;y =tmp;void main()int a=1,b=2;cout Before:a=a “,b=b endl;swap(a,b);cout After:a=a “,b=b endl;/结果:结果:a、b实现了交换实现了交换18例题:值传递和引用混合使用#include i

9、ostream.hvoid fun(int x,int&y)x+;y+;return;void main()int a=1,b=1;fun(a,b);couta,b;195.5 函数与数组1、数组元素作为函数参数、数组元素作为函数参数值传递方式值传递方式2、数组名作为函数参数、数组名作为函数参数在被调函数中对形参数组的操作就是对主调函数中实在被调函数中对形参数组的操作就是对主调函数中实参数组的操作。参数组的操作。20例5-5编写用于对整型数组排序的函数#include void bubble_up(int list,int count)for(int i=0;ii;j=j-1)if(listj

10、-1listj)int tmp=listj-1;listj-1=listj;listj=tmp;21/测试冒泡法排序的主程序void main()int i;int array10=503,87,512,61,908,170,897,275,653,426;cout 原数组是原数组是:endl;for(i=0;i10;i+)cout array i ;coutendl;22bubble_up(array,5);/函数调用函数调用cout 对数组前对数组前5项进行排序后的结果是项进行排序后的结果是:endl;for(i=0;i5;i+)cout array i ;coutendl;bubble_

11、up(array,10);cout 对整个数组排序后的结果是对整个数组排序后的结果是:endl;for(i=0;i10;i+)cout array i ;235.7 局部变量和全局变量 一、变量的分类一、变量的分类1、按作用域、按作用域局部变量、全局变量局部变量、全局变量2、按生存期、按生存期静态变量、自动变量静态变量、自动变量24二、局部变量1、在局部范围内定义的变量、在局部范围内定义的变量1)在函数内)在函数内2)在复合语句中)在复合语句中3)形参)形参 4)在)在for语句中语句中2、分配空间、分配空间1)程序运行到局部变量所在的范围时分配空间)程序运行到局部变量所在的范围时分配空间2)

12、该块执行完毕占有的空间被释放。)该块执行完毕占有的空间被释放。25例题:#include iostream.hvoid main()for(int x=2;x=5;x+)for(int y=2;y=5;y+)coutx;/正确正确couty;/出错出错#include iostream.hvoid main()for(int x=2;x=5;x+)for(int y=2;y=5;y+)coutx;/正确正确couty;/正确正确 26三、全局变量1、定义、定义1)在所有函数之外定义)在所有函数之外定义2)源程序文件中的所有函数中都可以使用)源程序文件中的所有函数中都可以使用2、与局部变量同名时

13、的处理、与局部变量同名时的处理1)默认使用局部变量)默认使用局部变量2)通过作用域运算符)通过作用域运算符:使用全局变量使用全局变量27例题:局部变量和全局变量同名#include iostream.hint x=1;void func1(int x)coutx=xendl;void func2()coutx=xendl;void main()int x=2;coutx=xendl;coutx=:xendl;func1(3);func2();/2131285.8 带有默认参数值的函数 1、定义函数时、定义函数时为一个或多个形参设置默认值为一个或多个形参设置默认值2、调用时、调用时有实参,使用实

14、参有实参,使用实参无实参,使用默认值无实参,使用默认值29例1:设置默认值#include iostream.hint fun(int x=1,int y=2,int z=3)return x+y+z;void main()coutfun(4,5,6)endl;coutfun(4,5)endl;coutfun(4)endl;coutfun()endl;30例2 部分默认值(从右向左)#include iostream.hint fun(int x,int y=2,int z=3)return x+y+z;void main()coutfun(4,5,6)endl;coutfun(4,5)end

15、l;coutfun(4)endl;coutfun()endl;/出错出错 316.9 变量的存储类别 C+程序运行时内存分为四个区域程序运行时内存分为四个区域一、局部变量的存储一、局部变量的存储1、auto1)局部变量默认的类型局部变量默认的类型2)保存在栈中保存在栈中3)运行过程中获得和释放空间运行过程中获得和释放空间4)未初始化时值为随机数未初始化时值为随机数2、register保存在寄存器中保存在寄存器中 用户区用户区堆区堆区(动态数据动态数据)全局数据区全局数据区(全局、静态变量全局、静态变量)栈区(局部变量)栈区(局部变量)代码区(程序代码)代码区(程序代码)323、static静态

16、变量静态变量指定将局部变量指定将局部变量存放在全局数据区存放在全局数据区编译时获得存储空间编译时获得存储空间未初始化时自动为未初始化时自动为0二、二、全局变量全局变量的存储的存储只能保存在只能保存在全局数据区全局数据区33/5-6:静态局部变量的使用#include iostream.hint fac(int n)static int f=1;return f=f*n;void main()for(int i=1;i=10;i+)couti!=fac(i)endl;34例5-7 打印100010000之间的回文数 回文数回文数指各位数字左右对称的整数,例如指各位数字左右对称的整数,例如1232

17、1、789987、1等等算法:算法:1)从最低位开始,依次取出各位数字(除以)从最低位开始,依次取出各位数字(除以10取余)取余)2)用最低位充当最高位,按反序构造新的数)用最低位充当最高位,按反序构造新的数3)比较与原数是否相等,若相等,则原数是回文数。)比较与原数是否相等,若相等,则原数是回文数。35#include int Ispalindrome(int n)int k,m=0;k=n;while(k)m=m*10+k%10;k=k/10;return(m=n);36回文数 void main()for(int i=1000;i10000;i+)if(Ispalindrome(i)coutit;coutendl;37

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁