收藏 分销(赏)

第5章函数省公共课一等奖全国赛课获奖课件.pptx

上传人:天**** 文档编号:3585767 上传时间:2024-07-10 格式:PPTX 页数:66 大小:541.14KB
下载 相关 举报
第5章函数省公共课一等奖全国赛课获奖课件.pptx_第1页
第1页 / 共66页
第5章函数省公共课一等奖全国赛课获奖课件.pptx_第2页
第2页 / 共66页
第5章函数省公共课一等奖全国赛课获奖课件.pptx_第3页
第3页 / 共66页
第5章函数省公共课一等奖全国赛课获奖课件.pptx_第4页
第4页 / 共66页
第5章函数省公共课一等奖全国赛课获奖课件.pptx_第5页
第5页 / 共66页
点击查看更多>>
资源描述

1、第第5章章 函数函数5.1 函数概述函数概述5.2 函数定义、调用与说明函数定义、调用与说明5.3 函数间参数传递函数间参数传递5.4 内联函数内联函数5.5 递归函数递归函数5.6 函数重载函数重载5.7 函数模板函数模板5.8 作用域与存放类别作用域与存放类别5.9 应用举例应用举例第1页5.1 函数概述函数概述xyz5.1.1 引例引例 已知五边形各条边长度,计算其面积已知五边形各条边长度,计算其面积。计算多边形面积,可将多边形分解成若干个三角形。计算多边形面积,可将多边形分解成若干个三角形。计算多边形面积,可将多边形分解成若干个三角形。计算多边形面积,可将多边形分解成若干个三角形。计算

2、三角形面积公式以下:计算三角形面积公式以下:计算三角形面积公式以下:计算三角形面积公式以下:第2页用前面所学知识实现:用前面所学知识实现:#include math.h#include iostream.hvoid main()float a,b,c,d,e,f,g,p1,p2,p3,s1,s2,s3,s;cinabcdefg;p1=(a+b+c)/2;s1=sqrt(p1*(p1-a)*(p1-b)*(p1-c);p2=(c+d+e)/2;s2=sqrt(p2*(p2-c)*(p2-d)*(p2-e);p3=(e+f+g)/2;s3=sqrt(p3*(p3-e)*(p3-f)*(p3-g);

3、s=s1+s2+s3;coutsabcdefg;cinabcdefg;s=area(a,b,c)+area(c,d,e)+area(e,f,g);s=area(a,b,c)+area(c,d,e)+area(e,f,g);coutsendl;coutsy)z=x;else z=y;return z;/将大数返回将大数返回void main()int a,b,c,m;cinabc;m=max(a,b);m=max(c,m);coutmendl;第6页【例【例5.2】编一程序,输出如右图形。编一程序,输出如右图形。#include#include void pic(int n)for(int i=

4、0;in;i+)coutsetw(10-i);/cout.width(10-i);控制每行输出起始位控制每行输出起始位 for(int j=0;j2*i+1;j+)cout*;coutendl;void main()pic(4);pic(6);将将n行组成三角形独立出来编一函数:行组成三角形独立出来编一函数:第7页说明:函数类型指函数返回值数据类型对没有返回值函数,函数类型定为void型(无类型或空类型)。形式参数可认为空,但圆括号不能省略。函数体由语句和其它分程序组成。函数体中不允许再嵌套定义函数vv非非非非voidvoid型函数型函数型函数型函数函数体中必须有函数体中必须有函数体中必须有函

5、数体中必须有returnreturn语句,形式为:语句,形式为:语句,形式为:语句,形式为:return return 表示式表示式表示式表示式;或或或或 return (return (表示式表示式表示式表示式););用于返回函数值。表示式值类型与函数类型最好一致。用于返回函数值。表示式值类型与函数类型最好一致。用于返回函数值。表示式值类型与函数类型最好一致。用于返回函数值。表示式值类型与函数类型最好一致。vvvoidvoid型函数型函数型函数型函数函数体中函数体中函数体中函数体中returnreturn语句能够不出现。若出现语句能够不出现。若出现语句能够不出现。若出现语句能够不出现。若出现

6、,则不能带表示式。则不能带表示式。则不能带表示式。则不能带表示式。第8页5.2.2 函数调用函数调用注意:注意:实参加形参个数、位置与类型必须一致。它能够是同类型常实参加形参个数、位置与类型必须一致。它能够是同类型常量、变量或表示式。量、变量或表示式。调用形式能够是表示式,也能够是语句。调用形式能够是表示式,也能够是语句。函数定义中形参只有当发生函数调用时,才被分配内存单元。函数定义中形参只有当发生函数调用时,才被分配内存单元。形式:形式:函数名函数名(实在参数表实在参数表)函数调用过程:函数调用过程:第9页#include iostream.h#include iomanip.hvoid m

7、ain()pic(4);/以语句形式调用以语句形式调用 pic(6);void pic(int n)for(int i=0;in;i+)coutsetw(10-i);for(int j=0;j2*i+1;j+)cout*;coutmn;coutgcd(m,n)endl;coutsct(m,n)ab;c=max(a,b);coutcy?x:y;【例【例5.4】函数说明示例函数说明示例 可省略参数名可省略参数名注意:注意:函数调用在前,定义在后,则必须对函函数调用在前,定义在后,则必须对函数进行说明,函数说明能够放在函数调用数进行说明,函数说明能够放在函数调用之前所在函数内,也能够放在源文件开头、

8、之前所在函数内,也能够放在源文件开头、函数外部。函数外部。函数说明和函数定义在返回类型、函数函数说明和函数定义在返回类型、函数名和参数表上必须要完全一致。名和参数表上必须要完全一致。5.2.3 函数说明(函数原型函数说明(函数原型)第14页float *fun(float x,float y);char *strcat(char*strDest,const char*strSource);在说明或定义返回值为指针函数时,只须在函数名前在说明或定义返回值为指针函数时,只须在函数名前加一指针类型说明符即可。加一指针类型说明符即可。即即即即函函函函数数数数返返返返回回回回值值值值能能能能够够够够是是

9、是是变变变变量量量量地地地地址址址址、数数数数组组组组名名名名或或或或指指指指针针针针变变变变量量量量等。如:等。如:等。如:等。如:5.2.4 函数返回值为指针函数返回值为指针第15页【例【例5.11】拼接两个字符串拼接两个字符串s1和和s2,将拼接后字符串存于,将拼接后字符串存于s1中返中返回。回。char*strcat1(char*s1,const char*s2)char*p=s1;while(*p+);-p;while(*p+=*s2+);return(s1);思索思索:若不定义为返回指针值函数,则程序应怎样修改?若不定义为返回指针值函数,则程序应怎样修改?void main()ch

10、ar*p1,*p2;p1=new char20;p2=new char5;cinp1p2;coutstrcat1(p1,p2)endl;第16页注意:注意:不能返回一个局部变量不能返回一个局部变量(在函数内定义变量在函数内定义变量)地址地址#include iostream.hint*fun(int x)int y=x*x;return&y;void main()int a=5,*p;p=fun(a);coutxy;swap(x,y);cout“x=x y=yab;swap(&a,&b);coutabendl;void swap(int*x,int*y)int temp=*x;*x=*y;*y

11、=temp;第22页【例【例5.9】随机生成随机生成10个个1100之间数放在一维数组中,求之间数放在一维数组中,求其平均值及最大元素值其平均值及最大元素值。#include iostream.h#include stdlib.hconst int N=10;void fun(float*p,float*p1,int*p2)float sum,max1;sum=max1=*p+;for(int i=1;iN;i+)if(max1*p)max1=*p;sum=sum+*p;p+;*p1=sum/N;*p2=max1;void main()float a10,aver,max,x;for(int

12、i=0;i10;i+)x=rand()%100+1;ai=x;fun(a,&aver,&max);/注意实参写法注意实参写法 coutavermaxendl;第23页【例【例5.10】字符串复制字符串复制#include iostream.hvoid copy_string(char*from,char*to)while(*from!=0)*to+=*from+;*to=0;void main()char a=I am a teacher.,b=You are a student.;coutaendlbendl;copy_string(a,b);coutaendlbab;copy_string

13、(a,b);couta bendl;delete a;delete b;若该二语句删除,若该二语句删除,程序运行时将异常程序运行时将异常终止。终止。第25页#include iostream.h int f(const int*p)int a=100;a=*p;return a;void main()int x=5;coutf(&x);*p=a;return*p;错误,不能修错误,不能修改改const对象对象 为了预防被调函数对实参所指对象修改,可将形参为了预防被调函数对实参所指对象修改,可将形参为了预防被调函数对实参所指对象修改,可将形参为了预防被调函数对实参所指对象修改,可将形参设为设为设

14、为设为常指针常指针常指针常指针。第26页若实参是常对象地址,则形参必须定义为常指针。若实参是常对象地址,则形参必须定义为常指针。#include iostream.hint f(const int*p)int a=100;a=*p;return a;void main()const int x=5;coutf(&x);形参不能定形参不能定义为义为int*p第27页(2)数组名作参数数组名作参数 形参:形参:数组名数组名 实参:实参:数组名或指针变量数组名或指针变量 特点:特点:在被调函数中对形参数组任何改变均会影响实参所在被调函数中对形参数组任何改变均会影响实参所指地址里内容指地址里内容。【例

15、【例5.12】对含有对含有n个元素整型数组个元素整型数组a,从大到小进行排序。,从大到小进行排序。调用:调用:sort(a,10);void sort(int x,int n)int i,j,k,w;for(i=0;in-1;i+)k=i;for(j=i+1;jn;j+)if(xkxj)k=j;if(i!=k)w=xi;xi=xk;xk=w;数值型数组元素个数数值型数组元素个数普通须传给形参普通须传给形参第28页【例【例5.13】求字符串长度,并调用之。求字符串长度,并调用之。int len(char s)int i=0;while(si!=0)i+;return i;调用:调用:coutxy

16、;swap(x,y);cout x=xy=10&flag)/判断是否降序数判断是否降序数 if(x/10%10=x%10)x/=10;else flag=0;return flag;第32页函数在定义时预先给定一个缺省形函数在定义时预先给定一个缺省形参值,调用时给出优先。参值,调用时给出优先。5.3.2 函数参数缺省函数参数缺省#include iostream.h#include math.hdouble s(double x,double eps=1e-6)int n=1;double w=0.0,t=1.0;while(fabs(t)=eps)w+=t;t=t*x/(n+);return

17、 w;void main()couts1=s(2.0);couts2=s(3.0);couts3=y?x:y;return xy?x:y;void main()void main()coutmyMax(3,6)endl;coutmyMax(3,6)endl;关关关关键键键键字字字字inlineinline将将将将函函函函数数数数myMaxmyMax说说说说明明明明成成成成内内内内联联联联函函函函数数数数。其其其其使使使使用用用用方方方方式式式式和和和和普普普普通通通通函函函函数数数数一一一一样样样样,只只只只不不不不过过过过在在在在程程程程序序序序执执执执行行行行时时时时并并并并不不不不产产产

18、产生生生生函函函函数数数数调调调调用用用用,而而而而是是是是在在在在函函函函数数数数调调调调用用用用处处处处将将将将函函函函数数数数代代代代码码码码展展展展开开开开执执执执行行行行。内内内内联联联联函函函函数数数数定定定定义义义义必必必必须须须须出出出出现现现现在在在在内联函数第一次被调用之前。内联函数第一次被调用之前。内联函数第一次被调用之前。内联函数第一次被调用之前。当当当当然然然然,内内内内联联联联函函函函数数数数也也也也有有有有一一一一定定定定不不不不足足足足,就就就就是是是是函函函函数数数数中中中中代代代代码码码码不不不不能能能能太太太太多多多多,函数体内不能有循环语句和函数体内不能

19、有循环语句和函数体内不能有循环语句和函数体内不能有循环语句和switchswitch语句,结构也不能太复杂。语句,结构也不能太复杂。语句,结构也不能太复杂。语句,结构也不能太复杂。C+C+中之所以引入内联函数,这与宏函数固有缺点相关。中之所以引入内联函数,这与宏函数固有缺点相关。中之所以引入内联函数,这与宏函数固有缺点相关。中之所以引入内联函数,这与宏函数固有缺点相关。第36页5.5 递归函数递归函数 用本身结构来描述本身就称为递归用本身结构来描述本身就称为递归(直接直接、间接间接)。最经典例子是对阶乘运算:最经典例子是对阶乘运算:n!=n(n-1)!(n-1)!=(n-1)(n-2)!1!=

20、1 特点:特点:原始问题可转化为处理方法相同新问题;原始问题可转化为处理方法相同新问题;新问题规模比原始问题小;新问题规模比原始问题小;新新问问题题又又可可转转化化为为处处理理方方法法相相同同规规模模更更小小新新问问题题,直直至至终止条件为止。终止条件为止。第37页fac(2)=2*fac(1)fac(1)=1fac(4)=4*6fac(3)=3*2fac(2)=2*1fac(3)=3*fac(2)fac(4)=4*fac(3)【例【例5.15】编编fac(n)=n!递归函数递归函数long fac(int n)if(n=1)return(1);return(n*fac(n-1);递推过程递推

21、过程:每调用本身,当前参数压栈,直到抵达递归结束条件。每调用本身,当前参数压栈,直到抵达递归结束条件。回归过程回归过程:不停从栈中弹出当前参数,直到栈空。不停从栈中弹出当前参数,直到栈空。思思索索:若若fac函函数数中中没没有有语语句句 if(n=1)return(1);程程序序运运行行结结果果将将怎怎样样?递推递推回归回归第38页【例【例5.16】用递归函数实现将一个十进制整数转换成二至十用递归函数实现将一个十进制整数转换成二至十六任意进制字符六任意进制字符 void convert(int m,int r)char b17=0123456789ABCDEF;if(m!=0)convert(

22、m/r,r);cout0)px(x,n)=x n=1x*(1-px(x,n-1)n1#include iostream.hdouble px(double x,int n)if(n=1)return(x);else return(x*(1-px(x,n-1);void main()double x;int n;coutxn;coutpx=px(x,n)endl;第40页【例【例5.18】输入一个正整数,要求用递归方法实现以相反次输入一个正整数,要求用递归方法实现以相反次序输出该数。序输出该数。#include iostream.hvoid printn(int n)if(0=n&n=9)cou

23、tn;else coutn%10;printn(n/10);void main()int num;coutnum;printn(num);coutendl;第41页5.6 函数重载函数重载引例:引例:求不一样类型数据绝对值求不一样类型数据绝对值不足:不足:易犯错、难记忆易犯错、难记忆函数重载:函数重载:一组参数一组参数(个数个数或或类型类型)不一样函数共用一个函不一样函数共用一个函数名。数名。不一样名函数实现同一类操作不一样名函数实现同一类操作#include#include#include#include void main()void main()int x1=-1;int x1=-1;d

24、ouble x2=2.5;double x2=2.5;long x3=3L;long x3=3L;cout coutabs(x1)abs(x1)endl;endl;cout coutfabs(x2)fabs(x2)endl;endl;cout coutlabs(x3)labs(x3)endl;endl;第42页【例【例5.20】#include int abs(int x)return x0?x:-x;double abs(double x)return x0?x:-x;long abs(long x)return x0?x:-x;void main()int x1=1;double x2=2

25、.5;long x3=3L;coutabs(x1)endl;coutabs(x2)endl;coutabs(x3)endl;1.参数类型不一样重载函数参数类型不一样重载函数编译器会依据函数参数类型来编译器会依据函数参数类型来确定应该调用哪个函数确定应该调用哪个函数第43页2.参数个数不一样重载函数参数个数不一样重载函数可见:可见:重载使得函数使用愈重载使得函数使用愈加灵活、方便。加灵活、方便。它表达了它表达了C+对多态性支持对多态性支持一个一个名字,多个入口名字,多个入口。【例【例5.21】#include int min(int a,int b)return ab?a:b;int min(i

26、nt a,int b,int c)int t=min(a,b);return min(t,c);int min(int a,int b,int c,int d)int t1=min(a,b);int t2=min(c,d);return min(t1,t2);void main()coutmin(13,5,4,9)endl;coutmin(-2,8,0)*-*、:、?:?:这五个运算符这五个运算符这五个运算符这五个运算符外,其它运算符都能够重载。因为很多符号是一元运算符和二外,其它运算符都能够重载。因为很多符号是一元运算符和二外,其它运算符都能够重载。因为很多符号是一元运算符和二外,其它运算符

27、都能够重载。因为很多符号是一元运算符和二元运算符公用(如元运算符公用(如元运算符公用(如元运算符公用(如*既能够用于间接访问也可用于两数相乘),既能够用于间接访问也可用于两数相乘),既能够用于间接访问也可用于两数相乘),既能够用于间接访问也可用于两数相乘),为了防止含混,不得为重载运算符函数设置默认值,调用时也为了防止含混,不得为重载运算符函数设置默认值,调用时也为了防止含混,不得为重载运算符函数设置默认值,调用时也为了防止含混,不得为重载运算符函数设置默认值,调用时也就不得省略实参。就不得省略实参。就不得省略实参。就不得省略实参。44)除了)除了)除了)除了newnew和和和和deleted

28、elete这两个较为特殊运算符以外,任何运算符这两个较为特殊运算符以外,任何运算符这两个较为特殊运算符以外,任何运算符这两个较为特殊运算符以外,任何运算符假如作为组员函数时不得重载为静态函数。假如作为组员函数时不得重载为静态函数。假如作为组员函数时不得重载为静态函数。假如作为组员函数时不得重载为静态函数。=、()、()、()、()、-以及全部类型转换运算符只能作为组员函数重载,而且是不能以及全部类型转换运算符只能作为组员函数重载,而且是不能以及全部类型转换运算符只能作为组员函数重载,而且是不能以及全部类型转换运算符只能作为组员函数重载,而且是不能针对枚举类型操作数重载。针对枚举类型操作数重载。

29、针对枚举类型操作数重载。针对枚举类型操作数重载。第45页class与与typename等价等价5.7 函数模板函数模板 函数模板用来定义一个通用函数,能够对函数模板用来定义一个通用函数,能够对不一样类型不一样类型数据进行相同处理,其作用与函数重载相同,但代码要简数据进行相同处理,其作用与函数重载相同,但代码要简单许多。而使用函数重载则需编写多个函数。单许多。而使用函数重载则需编写多个函数。利用函数模板定义函数称为利用函数模板定义函数称为模板函数模板函数,形式:,形式:template 类型类型 函数名函数名(参数表参数表)【例【例【例【例5.225.22】#include#include te

30、mplate template T min(T a,T b)T min(T a,T b)return ab?a:b;return ab?a:b;void main()void main()coutmin(3,5)endl;coutmin(3,5)endl;coutmin(8.5,5.6)endl;coutmin(8.5,5.6)endl;11)定义一个数据类型)定义一个数据类型)定义一个数据类型)定义一个数据类型TT22)使用模板函数时)使用模板函数时)使用模板函数时)使用模板函数时,模板中类模板中类模板中类模板中类型参数型参数型参数型参数TT用实参类型替换用实参类型替换用实参类型替换用实参类

31、型替换第46页分析以下几个模板函数:分析以下几个模板函数:template T fun1(T a,int b)/可含有模板参数表中未给出数据类型可含有模板参数表中未给出数据类型 template /模板中可带有多个参数模板中可带有多个参数 void fun1(T1 a,T2 b,T3 c)template void fun1(int a,int b)/必须最少有一个参数类型为模板必须最少有一个参数类型为模板 /类型参数,即使函数体中出现也不类型参数,即使函数体中出现也不可可template void fun1(int a,int b)T i,j;第47页【例【例5.23】定义一个通用函数,对定

32、义一个通用函数,对n个数按递增排序。个数按递增排序。#include iostream.h#include iostream.h template template void sort(TEM x,int n)void sort(TEM x,int n)int i,j,k;TEM w;int i,j,k;TEM w;for(i=0;in-1;i+)for(i=0;in-1;i+)k=i;k=i;for(j=i+1;jn;j+)for(j=i+1;jxj)k=j;if(xkxj)k=j;if(i!=k)if(i!=k)w=xi;xi=xk;xk=w;w=xi;xi=xk;xk=w;void ma

33、in()void main()int i,a6=6,9,2,4,1,0;int i,a6=6,9,2,4,1,0;float b4=5.5,8.0,3.3,0;float b4=5.5,8.0,3.3,0;sort(a,6);sort(a,6);sort(b,4);sort(b,4);for(i=0;i6;i+)for(i=0;i6;i+)coutaiendl;coutaiendl;for(i=0;i4;i+)for(i=0;i4;i+)coutbiendl;coutbix;cinx;cout digit(x)endl;cout digit(x)endl;全局变量全局变量(外部变量外部变量):

34、在函数外部定义变量在函数外部定义变量局部变量局部变量(内部变量内部变量):在函数内部定义变量,包含形式参数在函数内部定义变量,包含形式参数生存期:生存期:生存期:生存期:指变量存在时间,是一个时间概念(在什么时间指变量存在时间,是一个时间概念(在什么时间指变量存在时间,是一个时间概念(在什么时间指变量存在时间,是一个时间概念(在什么时间存在),由变量存放类别(自动和静态局部变量和全局变存在),由变量存放类别(自动和静态局部变量和全局变存在),由变量存放类别(自动和静态局部变量和全局变存在),由变量存放类别(自动和静态局部变量和全局变量)决定。量)决定。量)决定。量)决定。初始化初始化初始化初始

35、化 :第50页5.8.1 自动变量(自动变量(auto)缺省存放类别缺省存放类别作用域:作用域:从定义点开始到所从定义点开始到所在在分程序分程序结束,作用域不能结束,作用域不能够扩展够扩展 生存期:生存期:开始执行分程序就开始执行分程序就生成,分程序执行结束就消生成,分程序执行结束就消亡亡初始化:初始化:能够初始化,缺省能够初始化,缺省值为随机值。值为随机值。【例【例5.23】自动变量示例。】自动变量示例。#include iostream.h int f(int x)x+;int y=5;/auto int k=5;y+;return x+y;void main()int k=2;coutf

36、(k)endl;coutf(k+1)endl;注意:注意:只有内部变量存放只有内部变量存放类别才能类别才能auto第51页5.8.2 静态局部变量(静态局部变量(static)作用域:作用域:从定义点开始到所从定义点开始到所在在分程序分程序结束。作用域不能结束。作用域不能够扩展。够扩展。生存期:生存期:在程序执行过程中在程序执行过程中一直存在,直到整个程序运一直存在,直到整个程序运行结束。行结束。初始化:初始化:在开始执行程序时在开始执行程序时初始化,缺省值为初始化,缺省值为0或或0 。只初始化一次。只初始化一次。一个函数可能被调用屡一个函数可能被调用屡次,前一次调用结果带到下次,前一次调用结

37、果带到下一次去。一次去。#include iostream.hint fac(int n)static int f=1;f=f*n;return(f);void main()auto int i;for(i=1;i=5;i+)couti!=fac(i);【例【例5.25】计算计算15阶乘。阶乘。第52页5.8.3 全局变量全局变量 全局变量又称外部变量,是在函数外定义变量。全局变量又称外部变量,是在函数外定义变量。作用域:作用域:从定义点开始到所在从定义点开始到所在文件文件结束结束生存期:生存期:程序整个执行周期程序整个执行周期初始化:初始化:能够初始化,缺省值为能够初始化,缺省值为0或或0。

38、作用域能够扩展:作用域能够扩展:向上扩展向上扩展 横向扩展,扩展到另一个文件横向扩展,扩展到另一个文件注意:注意:扩展地方不能初始化扩展地方不能初始化第53页#include iostream.hint m=10;void f1(int n)n=2*n;m=m/3;int n;void f2()n=5;m+;n+;void main()int n=2;f1(n);f2();coutmnendl;【例【例5.26】外部变量示例外部变量示例注注意意:外外部部变变量量作作用用域域只只限限于于定定义义处处到到文文件件结结束束,定定义义点点之之前前函数或其它文件中函数不能够引用该外部变量。函数或其它文件

39、中函数不能够引用该外部变量。能够使用能够使用extern申明符来扩展外部变量作用域申明符来扩展外部变量作用域 外部变量与局部外部变量与局部变量同名,起作变量同名,起作用是局部变量用是局部变量第54页1.作用域向定义点之前函数扩展作用域向定义点之前函数扩展#include extern int i;void fun()/extern int i;错误错误 couti;void g()i+;int i=5;void main()int j=20;coutj;g();fun();#include extern int i;/不能初始化不能初始化void fun()/extern int i;cout

40、i;int i=5;void main()int j=20;coutj;fun();第55页 2.作用域扩展到另一个文件作用域扩展到另一个文件/file1.cpp#include iostream.hextern max,min;void main()void maxmin(int x,int n);int a10=11,2,3,-4,5,6,7,8,0,20;maxmin(a,10);coutmax minendl;/file2.cppint max,min;void maxmin(int x,int n)max=x0;min=x0;for(int i=0;imax)max=xi;if(xi

41、x;for(n=6;n=x;n+=2)for(a=3;a=n/2;a+=2)if(isprime(a)&isprime(n-a)coutn=a+n-a0n/100。但但但但这这这这么么么么处处处处理数据是从个位向前,所以还要作反转处理。理数据是从个位向前,所以还要作反转处理。理数据是从个位向前,所以还要作反转处理。理数据是从个位向前,所以还要作反转处理。第60页程序:程序:#include iostream.h#include string.h void main()void itoc(int,char);int n;char s100;cinn;itoc(n,s);coutsendl;voi

42、d itoc(int n,char s)void reverse(char);int i=0;int sign;if(sign=n)0);if(sign0)si+=-;si=0;reverse(s);void reverse(char s)int c,i,j;j=strlen(s)-1;for(i=0;ij;i+,j-)c=si;si=sj;sj=c;si+j+1=0;第61页【例【例5.30】用梯形法求积分:用梯形法求积分:分分析析:n等等分分积积分分区区间间a,b,每每一一个个小小梯梯型型面面积积和和即即近近似为似为f(x)在在a,b积分值。即将求积分转化求和。积分值。即将求积分转化求和。

43、第62页#include iostream.h#include math.hdouble f(double x)return exp(-x*x/2);double integral(double a,double b,int n)int sum;double h=(b-a)/n;sum=(f(a)+f(b)/2;int x=a+h;for(int i=1;in;i+)sum+=f(x);x+=h;return sum*h;void main()double a,b;int n;cout输入区间值、等分数:输入区间值、等分数:abn;coutintegral(a,b,n)endl;程序:程序:第

44、63页【例例5.31】统统计计字字符符串串中中各各个个字字母母(不不区区分分大大、小小写写)出出现频率,同时找出频率出现最高字母及次数。现频率,同时找出频率出现最高字母及次数。分分分分析析析析:因因因因为为为为函函函函数数数数需需需需要要要要返返返返回回回回多多多多个个个个值值值值,故故故故可可可可经经经经过过过过传传传传址址址址调调调调用用用用或或或或引引引引用调用实现。将要处理数据及处理结果设为形参。用调用实现。将要处理数据及处理结果设为形参。用调用实现。将要处理数据及处理结果设为形参。用调用实现。将要处理数据及处理结果设为形参。第64页#include iostream.h#includ

45、e stdio.h#include string.hvoid freq(char s,int p,char&chmax,int&max)for(int i=0;i=a&si=z)p(si-a)+;i+;max=p0;int k=0;for(i=1;imax)max=pi;k=i;chmax=k+97;void main()int p26,i,max;char s80,chmax;gets(s);freq(s,p,chmax,max);for(i=0;i26;i+)if(pi)coutchar(i+97)-piendl;coutmax:chmax-maxendl;程序:程序:第65页【例例5.32】编编写写两两个个重重载载同同名名函函数数find,功功效效为为查查找找指指定定字符或子字符串在串中位置。字符或子字符串在串中位置。int find(char s,char ch)for(int i=0;si;i+)if(si=ch)break;return i;int find(char s1,char s2)char s80;for(int i=0;s1i;i+)for(int j=0;s2j;j+)sj=s1i+j;sj=0;if(!strcmp(s,s2)return i;第66页

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服