函数的定义与调用(精)课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《函数的定义与调用(精)课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 函数 定义 调用 课件
- 资源描述:
-
1、41 函数的定义与调用函数的定义与调用 4 5 作用域与存储类型作用域与存储类型 44 函数调用机制函数调用机制 43 全局变量和局部变量全局变量和局部变量 42 函数的参数传递函数的参数传递,返回值及函数原型说明返回值及函数原型说明 410 编译预处理编译预处理 4 9 头文件与多文件结构头文件与多文件结构 4 8 C+的系统库函数的系统库函数 4 7 函数的一些高级议题函数的一些高级议题 4 6 函数的递归调用函数的递归调用 4.1.1 函数概述函数概述4.1.2 函数的定义函数的定义4.1.3 函数的调用函数的调用 main()fun2()fun1()fun3()Fun1_1()Fun2
2、_1()Fun2_2()图图4.1 函数调用层次关系函数调用层次关系1.无参函数无参函数2.有参函数有参函数 定义格式为:定义格式为:(void)(void)例例:下面函数的功能是打印一个表头下面函数的功能是打印一个表头void TableHead()cout*endl;cout*example *endl;cout*endl;有参函数的定义格式为有参函数的定义格式为(,例例:下面函数的功能是返回两个整数中较大一个的值下面函数的功能是返回两个整数中较大一个的值 max(int a,int b)return(a=b?a:b);无参函数的调用格式为:无参函数的调用格式为:()()有参函数的调用格式
3、为:有参函数的调用格式为:(实际参数表实际参数表)main()函函数数调用调用max(2.5,4.7)函数函数max(2.5,4.7)return 4.7 主程序后续主程序后续语句语句【例【例41】输入两个实数,输出其中较大的数。其中求两个实数中的较大数用输入两个实数,输出其中较大的数。其中求两个实数中的较大数用函数完成。函数完成。程序如下:程序如下:/文件名:文件名:Ex4_1.cpp#includefloat max(float x,float y)return(x=y?x:y);void main()float x,y;cout输入两个实数:输入两个实数:xy;coutx和和y中较大数为
4、中较大数为max(x,y)endl;421 函数的参数传递及传值调用函数的参数传递及传值调用 423 函数原型说明函数原型说明422 函数返回值函数返回值 调用调用power(4.6,3)函数函数power(4.6,3)return 97.336 主程序后续语主程序后续语句句【例【例42】说明实参和形参对应关系的示例。说明实参和形参对应关系的示例。/文件名:文件名:Ex4_2.cpp#include#includefloat power(float x,int n)/求求x的的n次幂次幂float pow=1;while(n-)pow*=x;return pow;void main()int
5、n=3;float x=4.6;char c=a;coutpower(x,n)=power(x,n)endl;coutpower(c,n)=power(c,n)endl;coutpower(n,x)=power(n,x)endl;调用调用power(a,3)函数函数power(a,3)return 912673 主程序后续语主程序后续语句句【例【例42】说明实参和形参对应关系的示例。说明实参和形参对应关系的示例。/文件名:文件名:Ex4_2.cpp#include#includefloat power(float x,int n)/求求x的的n次幂次幂float pow=1;while(n-)
6、pow*=x;return pow;void main()int n=3;float x=4.6;char c=a;coutpower(x,n)=power(x,n)endl;coutpower(c,n)=power(c,n)endl;coutpower(n,x)=power(n,x)endl;调用调用power(3,4.6)函数函数power(3,4.6)return 81 主程序后续语主程序后续语句句【例【例42】说明实参和形参对应关系的示例。说明实参和形参对应关系的示例。/文件名:文件名:Ex4_2.cpp#include#includefloat power(float x,int n
7、)/求求x的的n次幂次幂float pow=1;while(n-)pow*=x;return pow;void main()int n=3;float x=4.6;char c=a;coutpower(x,n)=power(x,n)endl;coutpower(c,n)=power(c,n)endl;coutpower(n,x)=power(n,x)endl;return语句的一般格式为:语句的一般格式为:return;【例【例43】设计函数,根据三角形的三边长求面积。如果不能构成三角形,给出提示】设计函数,根据三角形的三边长求面积。如果不能构成三角形,给出提示信息。信息。分析:分析:函数为计
8、算三角形面积,一般三角形返回面积值,若不能构成三角形则返回函数为计算三角形面积,一般三角形返回面积值,若不能构成三角形则返回-1。设计一个主函数完成函数测试。根据返回值情况输出相应结果。设计一个主函数完成函数测试。根据返回值情况输出相应结果。程序如下:程序如下:/文件名:文件名:Ex4_3.cpp#include#include调用调用TriangleArea(3,4,5)函数函数TriangleArea(3,4,5)return 6 area=6三角形三角形(3,4,5)面积为面积为6float TriangleArea(float a,float b,float c)if(a+b=c)|(
9、a+c=b)|(b+c=a)return-1;float s;s=(a+b+c)/2;return sqrt(s*(s-a)*(s-b)*(s-c);void main()float a,b,c,area;cout输入三角形三边输入三角形三边a,b,c:abc;area=TriangleArea(a,b,c);if(area=-1)cout(a,b,c)不能构成三角形!不能构成三角形!endl;elsecout三角形三角形(a,b,c)面积为:面积为:areaendl;调用调用TriangleArea(3,4,8)函数函数TriangleArea(3,4,8)return-1 area=-1(
10、3,4,8)不能构不能构成三角形成三角形float TriangleArea(float a,float b,float c)if(a+b=c)|(a+c=b)|(b+c=a)return-1;float s;s=(a+b+c)/2;return sqrt(s*(s-a)*(s-b)*(s-c);void main()float a,b,c,area;cout输入三角形三边输入三角形三边a,b,c:abc;area=TriangleArea(a,b,c);if(area=-1)cout(a,b,c)不能构成三角形!不能构成三角形!endl;elsecout三角形三角形(a,b,c)面积为:面积
11、为:areaendl;函数原型是一条以分号结束的语句,实际上函数原型是一条以分号结束的语句,实际上就是所定义函数的函数头,形如:就是所定义函数的函数头,形如:()下面是一个使用结构化程序设计思想开发的企业管理报表下面是一个使用结构化程序设计思想开发的企业管理报表程序的框架。程序的框架。#include void menu_print();void account_report();void engineering_report();void marketing_report();void main()int choice;do menu_print();cinchoice;while(choi
12、ce=0);switch(choice)case 1:account_report();break;case 2:engineering_report();break;case 3:marketing_report();break;void menu_print()cout”系统功能:系统功能:”endl;cout”1财务报表财务报表”endl;cout”2工程报表工程报表”endl;cout”3市场报表市场报表”endl;cout”选择业务序号:选择业务序号:”;void account_report()/生成财务报表生成财务报表 void engineering_report()/生成工程
13、报表生成工程报表 void marketing_report()/生成实常报表;生成实常报表;【例【例44】输出所有满足下列条件的正整数输出所有满足下列条件的正整数m:10m1000且且m、m2、m3均为回文数。均为回文数。分析:分析:回文指左右对称的序列。如回文指左右对称的序列。如121、353等就是回文数。判断整等就是回文数。判断整数是否回文数用函数实现,其思想是将该数各位拆开后反向组成新的数是否回文数用函数实现,其思想是将该数各位拆开后反向组成新的整数,如果该整数与原数相等则为回文数。整数,如果该整数与原数相等则为回文数。程序如下:程序如下:/文件名:文件名:Ex4_4.cpp#incl
14、ude#includebool palindrome(int);/函数原型函数原型bool palindrome(int n)int digit10;int m=n,i=0;do digiti=n%10;n/=10;i+;while(n0);for(intj=0;ji;j+)n=n*10+digitj;return(n=m);m m*m m*m*mm=11调用调用palindrom(11)函数函数palindrom(11)为真为真return 真真 11 121 1331调用调用palindrom(121)函数函数palindrom(121)为真为真return 真真调用调用palindrom
15、(1331)函数函数palindrom(1331)为真为真return 真真打印打印,循环循环void main()coutsetw(10)msetw(20)m*msetw(20)m*m*mendl;for(int m=11;m1000;m+)if(palindrome(m)&palindrome(m*m)&palindrome(m*m*m)coutsetw(10)msetw(20)m*msetw(20)m*m*0);for(intj=0;ji;j+)n=n*10+digitj;return(n=m);void main()coutsetw(10)msetw(20)m*msetw(20)m*m
16、*mendl;for(int m=11;m1000;m+)if(palindrome(m)&palindrome(m*m)&palindrome(m*m*m)coutsetw(10)msetw(20)m*msetw(20)m*m*0);forint=0;ji;j+)n=n*10+digitj;return(n=m);void main()coutsetw(10)msetw(20)m*msetw(20)m*m*mendl;for(int m=11;m1000;m+)if(palindrome(m)&palindrome(m*m)&palindrome(m*m*m)coutsetw(10)mset
17、w(20)m*msetw(20)m*m*m。要求阶乘和组和数均用函数实现。要求阶乘和组和数均用函数实现。程序名:程序名:Ex4_6.cpp#includefac(int);combination(int,int);n=5m=2调用调用combination(5,2)函数函数combination(5,2)120/2*6=10return10打印打印结束结束调用调用fan(2)fan(5)fan(3)函数函数fan(2)fan(5)fan(3)return fan(2)=2;fan(3)=6fan(5)=120void main()int n,m;docout输入两个整数输入两个整数n,m:nm
18、;while(n=0|m=0|n=m);coutC(n,m)=combination(n,m)endl;combination(int n,int m)return fac(n)/(fac(m)*fac(n-m);fac(int n)int factorial=1;for(int i=1;i=n;i+)factorial*=i;return factorial;堆区堆区(动态数据动态数据)栈区栈区(函数局部数据)(函数局部数据)(main()函数局部数据)函数局部数据)静态数据区静态数据区(全局、静态变量全局、静态变量)代码区代码区(程序代码)(程序代码)操作系统为一个操作系统为一个C+C+程
19、序的运行所分配的内存分为程序的运行所分配的内存分为四个区域,如图四个区域,如图4.34.3 程序在内存中的区域程序在内存中的区域所示:所示:i=0调用调用sqrt(0)函数函数sqrt(0)return 0 打印打印n+=1 i+=1继续循环继续循环n=011【例【例47】使用全局变量的例子。】使用全局变量的例子。/文件名文件名:Ex4_7.cppint n=0;#include#includevoid main()for(int i=0;i5;i+)coutsqrt(n)endl;n+;i=1调用调用sqrt(1)函数函数sqrt(1)return 1 打印打印n+=2 i+=2继续循环继续
20、循环n=122【例【例47】使用全局变量的例子。】使用全局变量的例子。/文件名文件名:Ex4_7.cppint n=0;#include#includevoid main()for(int i=0;i5;i+)coutsqrt(n)endl;n+;i=2调用调用sqrt(2)函数函数sqrt(2)return 1.41421 打印打印n+=3 i+=3继续循环继续循环n=233【例【例47】使用全局变量的例子。】使用全局变量的例子。/文件名文件名:Ex4_7.cppint n=0;#include#includevoid main()for(int i=0;i5;i+)coutsqrt(n)e
21、ndl;n+;i=3调用调用sqrt(3)函数函数sqrt(3)return 1.73205 打印打印n+=4 i+=4继续循环继续循环n=344【例【例47】使用全局变量的例子。】使用全局变量的例子。/文件名文件名:Ex4_7.cppint n=0;#include#includevoid main()for(int i=0;i5;i+)coutsqrt(n)endl;n+;i=4调用调用sqrt(4)函数函数sqrt(4)return 2 打印打印n+=5 i+=5结束结束n=455【例【例47】使用全局变量的例子。】使用全局变量的例子。/文件名文件名:Ex4_7.cppint n=0;#
22、include#includevoid main()for(int i=0;i5;i+)coutsqrt(n)endl;n+;打印打印200调用调用func(200)函数函数func(200)200*2=400return400 打印打印400n=100n=100*2=200【例【例48】多个函数使用全局变量的例子。多个函数使用全局变量的例子。/文件名:文件名:Ex4_8.cppint n=100;#includevoid func()n*=2;void main()n*=2;coutnendl;func();coutnendl;打印打印t=3.5调用调用fun()函数函数fun()打印打印t
23、=5 打印打印t=3.5t =5【例【例49】使用局部变量的例子。使用局部变量的例子。/文件名:文件名:Ex4_9.cpp#includevoid fun()auto int t=5;/fun()中的局部变量,中的局部变量,auto可省略可省略coutfun()中的中的t=tendl;void main()float t=3.5;/main()函数中的局部变量函数中的局部变量coutmain()中的中的t=tendl;fun();coutmain()中的中的t=t3即即bat=335a=3 b=5a=5 b=3【例【例410】输入两数,将两数按从大到小的顺序保存,并输出结果。输入两数,将两数按
24、从大到小的顺序保存,并输出结果。/文件名:文件名:Ex4_10.cpp#includevoid main()int a,b;/函数内定义局部变量,具有函数作用域函数内定义局部变量,具有函数作用域cout输入两整数:输入两整数:ab;couta=atb=b=a)/使使a中保存大数,中保存大数,b中保存小数中保存小数int t;/块中定义局部变量,具有块作用域块中定义局部变量,具有块作用域t=a;a=b;b=t;/交换交换a,b的值的值couta=atb=bendl;【例例411】设计函数完成两数交换,用主函数进行】设计函数完成两数交换,用主函数进行测试。测试。/文件名:文件名:Ex4_11.cp
25、p#includevoid swap(int,int);调用前调用前:实参实参a=3,b=5调用中调用中形参形参a=3形参形参b=5t=交换前交换前:形参形参a=3,b=5353交换后交换后:形参形参a=5,b=3调用后调用后:实参实参a=3,b=5void main()int a,b;/a,b作用域为main()cout输入两整数:ab;c o u t 调 用 前:实 参a=a,b=bendl;swap(a,b);c o u t 调 用 后:实 参a=a,b=bendl;void swap(int a,int b)/a,b作用域为swap()cout调用中endl;c o u t 交 换 前
展开阅读全文