三章函数.ppt

上传人:本田雅阁 文档编号:2625958 上传时间:2019-04-23 格式:PPT 页数:77 大小:261.51KB
返回 下载 相关 举报
三章函数.ppt_第1页
第1页 / 共77页
三章函数.ppt_第2页
第2页 / 共77页
三章函数.ppt_第3页
第3页 / 共77页
三章函数.ppt_第4页
第4页 / 共77页
三章函数.ppt_第5页
第5页 / 共77页
点击查看更多>>
资源描述

《三章函数.ppt》由会员分享,可在线阅读,更多相关《三章函数.ppt(77页珍藏版)》请在三一文库上搜索。

1、第三章 函数 C+语言程序设计 1 前一页 休息 本章主要内容 l函数的声明和调用 l函数间的参数传递 l内联函数 l带缺省形参值的函数 l函数重载 l函数模板 lC+系统函数 2 前一页 休息 函数的声明 l函数是面向对象程序设计中的基本 抽象单元,是对功能的抽象 l函数声明的语法形式 类型标识符 函数名(形式参数表) 语句序列 函数的声明与使用 若无参数,写void 是被初始化的内部 变量,寿命和可见 性仅限于函数内部 若无返回值,写void 3 前一页 休息 函数的声明 l形式参数表 name1, name2, ., namen l函数的返回值 由 return 语句给出,例如: ret

2、urn 0 无返回值的函数(void类型) ,不必写return语句。 函数的声明与使用 4 前一页 休息 函数的调用 l调用前先说明函数原型: 在调用函数的说明部分,或程 序文件开头所有函数之前,按如下形 式说明: 类型标识符 被调用函数名 (含类型 说明的形参表); l调用形式 函数名(实参列表) l嵌套调用 函数不允许嵌套声明,但可以 嵌套调用。 l递归调用 函数直接或间接调用自身。 函数的声明与使用 5 前一页 休息 例3-1 编写一个求x的n次方的函数 #include double power (double x, int n); void main(void) cout doub

3、le power (double x, int n); void main(void) int i; int value = 0; char ch; cout = 0; i-) cin ch; if (ch = 1) value += int(power(2,i); cout void main( ) double a,b; double arctan(double x) ; a=16.0*arctan(1/5.0) ; b=4.0*arctan(1/239.0) ; /注意:因为整数相除结果取整, /如果参数写1/5,1/239,结果就都是 0 cout1e-15) f=e/i; r=(i%

4、4=1)? r+f : r-f ; e=e*sqr; i+=2; return r ; 运行结果: PI=3.14159 13 运行结果: PI=3.14159 14 前一页 休息 例3-4 l寻找并输出11999之间的数m ,它满足m、m2和m3均为回文数。 回文:各位数字左右对称的整 数。 例如:11满足上述条件 112=121,113=1331。 l分析: 10取余的方法,从最低位开始 ,依次取出该数的各位数字。按反序 重新构成新的数,比较与原数是否相 等,若相等,则原数为回文。 函数的声明与使用 15 #include void main( ) bool symm(long n); l

5、ong m; for(m=11; m #include void main( ) double k,r,s; double tsin(double x); coutr; couts; if (r*r=p); return g; 运行结果: r=5 s=8 1.37781 21 前一页 休息 例3-6 投骰子的随机游戏 游戏规则是:每个骰子有六面,点数分别 为1、2、3、4、5、6。游戏者在程序开始时输入 一个无符号整数,作为产生随机数的种子。 每轮投两次骰子,第一轮如果和数为7或11 则为胜,游戏结束;和数为2、3或12则为负,游 戏结束;和数为其它值则将此值作为自己的点数 ,继续第二轮、第三

6、轮.直到某轮的和数等于点 数则取胜,若在此前出现和数为7则为负。 由rolldice函数负责模拟投骰子、计算和数 并输出和数。 函数的声明与使用 22 lrand 函数原型:int rand(void); 所需头文件: 功能和返回值:求出并返回一个 伪随机数 lsrand 函数原型:void srand(unsigned int seed); 参数:seed产生随机数的种子。 所需头文件: 功能:为使rand( )产生一序列 伪随机整数而设置起始点。使用1作为 seed参数,可以重新初化rand( )。 23 #include #include int rolldice(void); void

7、 main( ) int gamestatus,sum,mypoint; unsigned seed; coutseed; /输入随机数种子 srand(seed); /将种子传递给rand( ) sum=rolldice( ); /第一轮投骰子、计算和 数 24 switch(sum) case 7: /如果和数为7或11则为胜,状态为1 case 11: gamestatus=1; break; case 2: /和数为2、3或12则为负,状态为1 case 3: case 12: gamestatus=2; break; default: /其它情况,游戏尚无结果,状态为0,记下点数,为

8、下 一轮做准备 gamestatus=0; mypoint=sum ; cout void main(void) int a,b; int fun1(int x,int y); cinab; cout long fac(int n) long f; if (nn; y=fac(n); cout void main( ) int n,k; int comm(int n, int k); cinnk; coutn ) return 0; else if( n=k|k=0 ) return 1; else return comm(n-1,k)+comm(n-1,k-1) ; 运行结果: 18 5 8

9、568 38 前一页 休息 例3-10 汉诺塔问题 有三根针A、B、C。A针上有N个盘 子,大的在下,小的在上,要求把这N个 盘子从A针移到C针,在移动过程中可以 借助B针,每次只允许移动一个盘,且在 移动过程中在三根针上都保持大盘在下, 小盘在上。 函数的声明与使用 ABC 39 分析: 将n 个盘子从A针移到C针可以分解为下面三 个步骤: 将A 上n-1个盘子移到 B针上(借助C针); 把A针上剩下的一个盘子移到C针上; 将n-1个盘子从B针移到C针上(借助A针) ; 事实上,上面三个步骤包含两种操作: 将多个盘子从一个针移到另一个针上,这 是一个递归的过程。 hanoi函数实现。 将1个

10、盘子从一个针上移到另一针上。 用move函数实现。 40 #include void move(char getone,char putone) cout“m; coutC AB CB AC BA BC AC 43 前一页 休息 函数的参数传递机制 传递参数值 l在函数被调用时才分配形参的 存储单元。 l实参可以是常量、变量或表达 式。 l实参类型必须与形参相符。 l传递时是传递参数值,即单向 传递。 函数的声明与使用 44 前一页 休息 函数的参数传递机制 参数值传递举例 XN 被调函数: 主调函数: 3 2.5A D = power(A,3) 2.53 double power(doubl

11、e X, int N) 函数的声明与使用 45 前一页 休息 例3-11 输入两 整数交换后输出 #include void Swap(int a, int b); int main( ) int x(5), y(10); cout void Swap(int int main( ) int x(5), y(10); cout #include void fiddle(int in1, int int main( ) int count = 7, index = 12; cout inline double CalArea(double radius) return 3.14*radius*r

12、adius; int main( ) double r(3.0); double area; area=CalArea(r); cout #include int get_volume(int length, int width = 2, int height = 3); int main( ) int x = 10, y = 12, z = 15; cout struct complex double real; double imaginary; ; 64 void main(void) int m, n; double x, y; complex c1, c2, c3; int add(

13、int m, int n); double add(double x, double y); complex add(complex c1, complex c2); coutmn; coutxy; coutc1.realc1.imaginary; coutc2.realc2.imaginary; c3=add(c1,c2); cout 函数声明 函 数 模 板 69 前一页 休息 例3-17 求绝对值函数的模板 #include template T abs(T x) return x #include const double pi(3.14159265); void main( ) do

14、uble a,b; cina; b=a*pi/180; cout(“活动子集”栏)Visual C+ Documentation - Visual C+ Documentation -Using Visual C+ - Visual C+ Programmers Guide - Run-Time Library Reference -Run Time Routines by Category - Run Time Routines by Category 使用C+系统函数 76 前一页 休息 作 业 l复习第三章,预习第四章 l3-2, 3-8, 3-11, 3-13, 3-15 l学习使用联机帮助系统查找系统 函数 l实验三 77

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1