C++语言程序设计(清华大学郑莉)_(3)

上传人:qt****68 文档编号:52223501 上传时间:2018-08-19 格式:PPT 页数:67 大小:416.50KB
返回 下载 相关 举报
C++语言程序设计(清华大学郑莉)_(3)_第1页
第1页 / 共67页
C++语言程序设计(清华大学郑莉)_(3)_第2页
第2页 / 共67页
C++语言程序设计(清华大学郑莉)_(3)_第3页
第3页 / 共67页
C++语言程序设计(清华大学郑莉)_(3)_第4页
第4页 / 共67页
C++语言程序设计(清华大学郑莉)_(3)_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《C++语言程序设计(清华大学郑莉)_(3)》由会员分享,可在线阅读,更多相关《C++语言程序设计(清华大学郑莉)_(3)(67页珍藏版)》请在金锄头文库上搜索。

1、C+语言程序设计软件学院 李建东第三章 函数C+语言程序设计C+语言程序设计软件学院 李建东2本章主要内容l函数的声明和调用l函数间的参数传递l内联函数l带默认形参值的函数l函数重载lC+系统函数C+语言程序设计软件学院 李建东3函数的声明l函数是面向对象程序设计中,对功能的 抽象l函数声明的语法形式 类型标识符 函数名(形式参数表) 语句序列 函数的声明与使用是被初始化的内部 变量,寿命和可见 性仅限于函数内部若无返回值,写voidC+语言程序设计软件学院 李建东4函数的声明l形式参数表name1, name2, ., namenl函数的返回值 由 return 语句给出,例如: retur

2、n 0 无返回值的函数(void类型),不必写 return语句。函数的声明与使用C+语言程序设计软件学院 李建东5函数的调用l调用前先声明函数原型: 在调用函数中,或程序文件中所有函数之 外,按如下形式说明:类型标识符 被调用函数名(含类型说明的形参表);l调用形式 函数名(实参列表) l嵌套调用 函数可以嵌套调用,但不允许嵌套定义。 递归调用 函数直接或间接调用自身。函数的声明与使用C+语言程序设计软件学院 李建东6例3-1编写一个求x的n次方的函数#include using namespace std; double power(double x, int n); int main()

3、 cout using namespace std; double power (double x, int n); int main() int i; int value = 0; char ch; cout = 0; i-) cin ch; if (ch = 1) value += int(power(2,i); cout using namespace std; int main() double a,b;double arctan(double x);/函数原型声明a=16.0*arctan(1/5.0); b=4.0*arctan(1/239.0); /注意:因为整数相除结果取整,/

4、如果参数写1/5,1/239,结果就都是0cout1e-15)f=e/i;r=(i%4=1)? r+f : r-f;e=e*sqr; i+=2;return r; 运行结果: PI=3.1415912C+语言程序设计软件学院 李建东13例3-4l寻找并输出11999之间的数m,它满足m、m2 和m3均为回文数。 回文:各位数字左右对称的整数。 例如:11满足上述条件112=121,113=1331。l分析: 10取余的方法,从最低位开始,依次取出该数 的各位数字。按反序重新构成新的数,比较与 原数是否相等,若相等,则原数为回文。函数的声明与使用#include using namespace

5、std; int main() bool symm(long n);long m;for(m=11; m #include using namespace std; int main() double k,r,s;double tsin(double x);coutr;couts;if (r*r=p); return g; 运行结果: r=5 s=8 1.3778119C+语言程序设计软件学院 李建东20例3-6投骰子的随机游戏每个骰子有六面,点数分别为1、2、3、4、5、6 。游戏者在程序开始时输入一个无符号整数,作为产 生随机数的种子。每轮投两次骰子,第一轮如果和数为7或11则为胜 ,游戏

6、结束;和数为2、3或12则为负,游戏结束;和 数为其它值则将此值作为自己的点数,继续第二轮、 第三轮.直到某轮的和数等于点数则取胜,若在此 前出现和数为7则为负。由rolldice函数负责模拟投骰子、计算和数并输 出和数。函数的声明与使用#include #include using namespace std; int rolldice(void); int main() int gamestatus,sum,mypoint;unsigned seed; coutseed; /输入随机数种子srand(seed); /将种子传递给rand()sum=rolldice(); /第一轮投骰子、计

7、算和数21switch(sum)case 7: /如果和数为7或11则为胜,状态为1case 11: gamestatus=1;break;case 2: /和数为2、3或12则为负,状态为2case 3: case 12: gamestatus=2;break;default:/其他情况,游戏尚无结果,状态为0,记下点数,为下一轮做准备gamestatus=0;mypoint=sum ;cout 功能和返回值:求出并返回一个伪随机数lsrand 函数原型:void srand(unsigned int seed); 参数:seed产生随机数的种子。 所需头文件: 功能:为使rand()产生一

8、序列伪随机整数而设 置起始点。使用1作为seed参数,可以重新 初化rand()。24int rolldice(void) /投骰子、计算和数、输出和数int die1,die2,worksum;die1=1+rand()%6;die2=1+rand()%6;worksum=die1+die2;cout using namespace std; int main() int a,b;int fun1(int x,int y);cinab;cout using namespace std; long fac(int n) long f;if (nn;y=fac(n);cout using nam

9、espace std; int main() int n,k;int comm(int n, int k);cinnk;coutn) return 0;else if( n=k|k=0 )return 1;elsereturn comm(n-1,k)+comm(n-1,k-1); 运行结果: 18 5 856836C+语言程序设计软件学院 李建东37例3-10汉诺塔问题有三根针A、B、C。A针上有N个盘子,大 的在下,小的在上,要求把这N个盘子从A针 移到C针,在移动过程中可以借助B针,每次 只允许移动一个盘,且在移动过程中在三根 针上都保持大盘在下,小盘在上。函数的声明与使用ABC分析:将n

10、 个盘子从A针移到C针可以分解为下面三个步骤:将A 上n-1个盘子移到 B针上(借助C针);把A针上剩下的一个盘子移到C针上;将n-1个盘子从B针移到C针上(借助A针);事实上,上面三个步骤包含两种操作:将多个盘子从一个针移到另一个针上,这是一个递 归的过程。 hanoi函数实现。将1个盘子从一个针上移到另一针上。 用move函数实现。38#include using namespace std; void move(char getone,char putone) cout“m; coutC AB CB AC BA BC AC41C+语言程序设计软件学院 李建东42函数的参数传递机制传递参数

11、值l在函数被调用时才分配形参的存储单元。l实参可以是常量、变量或表达式。l实参类型必须与形参相符。l传递时是传递参数值,即单向传递。函数的声明与使用C+语言程序设计软件学院 李建东43函数的参数传递机制参数值传递举例XN被调函数:主调函数:3 2.5AD = power(A,3)2.53double power(double X,int N)函数的声明与使用C+语言程序设计软件学院 李建东44例3-11 输入两个整数交换后输出#include using namespace std; void Swap(int a, int b); int main() int x(5), y(10); co

12、ut using namespace std; void Swap(int int main() int x(5), y(10); cout using namespace std; inline double CalArea(double radius) return 3.14*radius*radius; int main() double r(3.0); double area; area=CalArea(r); cout using namespace std; struct complex double real; double imaginary; ;函 数 重 载int main

13、() int m, n; double x, y; complex c1, c2, c3; int add(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 #include using namespace std; const double pi(3.14159265); int main() double

14、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+系统函数C+语言程序设计软件学院 李建东67小结与复习建议l主要内容 函数的声明和调用、函数间的参数传递 、内联函数、带默认形参值的函数、函 数重载、C+系统函数l达到的目标 学会将一段功能相对独立的程序写成一 个函数,为下一章学习类和对象打好必 要的基础。l实验任务 实验三

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

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号