[其它课程]第三章 函数.ppt
《[其它课程]第三章 函数.ppt》由会员分享,可在线阅读,更多相关《[其它课程]第三章 函数.ppt(70页珍藏版)》请在三一办公上搜索。
1、第三章 函 数,本章主要内容,函数的定义和调用函数间的参数传递内联函数带默认形参值的函数函数重载C+系统函数,一、函数的定义和调用,函数定义的语法形式 类型标识符 函数名(形式参数表)语句序列,是被初始化的内部变量,寿命和可见性仅限于函数内部,若无返回值,写void,函数的定义,形式参数表 name1,name2,.,namen函数的返回值由 return 语句给出,例如:return 0无返回值的函数(void类型),不必写return 语句。,形参(形式参数)在定义函数时,函数名后面括号中的变量名称为“形参”实参(实际参数)主函数总调用一个函数时,函数名后面括号中的参数(也可以是一个表达式
2、)称为“实参”。,函数的调用,调用前先在主调函数中声明函数原型它保持若函数定义在调用点之前,则无需另外声明;若函数定义在调用点之后,则需要在调用函数前按如下形式声明函数原型:类型标识符 被调用函数名(含类型说明的形参表);,调用形式 函数名(实参列表)嵌套调用 函数可以嵌套调用,但不允许嵌套定义。递归调用 函数直接或间接调用自身。,#include using namespace std;/计算x的n次方double power(double x,int n)double val=1.0;while(n-)val*=x;return val;/函数的返回值;int main()cout 5 t
3、o the power 2 is power(5,2)endl;return 0;,例 编写一个求x的n次方的函数,运行结果:5 to the power 2 is 25,例如:11012=1(23)+1(22)+0(21)+1(20)=1310 如果输入1101,则应输出13,例 输入一个8位二进制数,将其转换为十进制数输出。,#include using namespace std;/计算x的n次方double power(double x,int n);/声明函数原型int main()int i;int value=0;char ch;,cout=0;i-)cin ch;if(ch=1
4、)value+=int(power(2,i);cout Decimal value is value endl;return 0;double power(double x,int n)double val=1.0;while(n-)val*=x;return val;,运行结果:Enter an 8 bit binary number 01101001Decimal value is 105,例 编写程序求的值,其中arctan用如下形式的级数计算:,直到级数某项绝对值不大于10-15为止;和x均为double型。,#include using namespace std;double ar
5、ctan(double x)/函数定义在主函数之前,可以不必加以声明。double sqr=x*x;double e=x;double r=0;int i=1;while(e/i 1e-15)double f=e/i;r=(i%4=1)?r+f:r-f;e=e*sqr;i+=2;return r;,int main()double a=16.0*arctan(1/5.0);double b=4.0*arctan(1/239.0);/注意:因为整数相除结果取整,如果参数写1/5,1/239,结果就都是0cout PI=a-b endl;return 0;,运行结果:PI=3.14159,说明:回
6、文各位数字左右对称的整数。例如:11满足上述条件 112=121,113=1331。分析:采用除以10取余的方法,从最低位开始,依次取出该数的各位数字。按反序重新构成新的数,比较与原数是否相等,若相等,则原数为回文。,例 寻找并输出11-999之间的数m,它满足m、m2和m3均为回文数。,#include using namespace std;/判断n是否为回文数bool symm(unsigned n)unsigned i=n;unsigned m=0;while(i 0)m=m*10+i%10;i/=10;return m=n;,17,int main()for(unsigned m=1
7、1;m 1000;m+)if(symm(m),运行结果:m=11 m*m=121 m*m*m=1331m=101 m*m=10201 m*m*m=1030301m=111 m*m=12321 m*m*m=1367631,例 计算如下公式,并输出结果:,其中r、s的值由键盘输入。sin x的近似值按如下公式计算,计算精度为10-6:,#include#include/对C+标准库中数学函数的说明using namespace std;const double TINY_VALUE=1e-10;double tsin(double x)double g=0;double t=x;int n=1;d
8、o g+=t;n+;t=-t*x*x/(2*n-1)/(2*n-2);while(fabs(t)=TINY_VALUE);return g;,int main()double k,r,s;cout r;cout s;if(r*r=s*s)k=sqrt(tsin(r)*tsin(r)+tsin(s)*tsin(s);elsek=tsin(r*s)/2;cout k endl;return 0;,22,运行结果:r=5s=81.37781,24,每个骰子有六面,点数分别为1、2、3、4、5、6。游戏者在程序开始时输入一个无符号整数,作为产生随机数的种子。每轮投两次骰子,第一轮如果和数为7或11则为
9、胜,游戏结束;和数为2、3或12则为负,游戏结束;和数为其它值则将此值作为自己的点数,继续第二轮、第三轮.直到某轮的和数等于点数则取胜,若在此前出现和数为7则为负。由rolldice函数负责模拟投骰子、计算和数并输出和数。,例 投骰子的随机游戏,25,rand函数原型:int rand(void);所需头文件:功能和返回值:求出并返回一个伪随机数 srand函数原型:void srand(unsigned int seed);参数:seed产生随机数的种子。所需头文件:功能:为使rand()产生一序列伪随机整数而设置起始点。使用1作为seed参数,可以重新初化rand()。,#include#
10、include using namespace std;/投骰子、计算和数、输出和数int rollDice()int die1=1+rand()%6;int die2=1+rand()%6;int sum=die1+die2;cout player rolled die1+die2=sum endl;return sum;,26,enum GameStatus WIN,LOSE,PLAYING;int main()int sum,myPoint;GameStatus status;unsigned seed;cout seed;/输入随机数种子srand(seed);/将种子传递给rand(
11、)sum=rollDice();/第一轮投骰子、计算和数,27,switch(sum)case 7:/如果和数为7或11则为胜,状态为WINcase 11:status=WIN;break;case 2:/和数为2、3或12则为负,状态为LOSEcase 3:case 12:status=LOSE;break;default:/其它情况,游戏尚无结果,状态为PLAYING,记下点数,为下一轮做准备 status=PLAYING;myPoint=sum;cout point is myPoint endl;break;,28,while(status=PLAYING)/只要状态仍为PLAYING
12、,就继续进行下一轮 sum=rollDice();if(sum=myPoint)/某轮的和数等于点数则取胜 status=WIN;else if(sum=7)/出现和数为7则为负 status=LOSE;/当状态不为PLAYING时上面的循环结束,以下程序段输出游戏结果if(status=WIN)cout player wins endl;else cout player loses endl;return 0;,29,运行结果:Please enter an unsigned integer:23player rolled 6+3=9point is 9player rolled 5+4=9
13、player wins,30,函数声明的意义,31,函数原型是主调函数与被调函数间的协议,函数的原型信息(参数个数和类型、返回值 类型)在编译后即不存在;如果不要求声明函数,以错误的方式(错误 的参数数量或类型)调用函数,会产生不可 预期的结果,但很多情况下不会给出错误提 示。,32,main调fun1()结束,fun1()调fun2()返回,fun2()返回,函数的调用之嵌套调用,33,#include using namespace std;int fun2(int m)return m*m;int fun1(int x,int y)return fun2(x)+fun2(y);,例 输入
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 其它课程 其它课程第三章 函数 其它 课程 第三
链接地址:https://www.31ppt.com/p-4953869.html