安徽理工大学软件教研室

上传人:mg****85 文档编号:50657617 上传时间:2018-08-09 格式:PPT 页数:72 大小:893KB
返回 下载 相关 举报
安徽理工大学软件教研室_第1页
第1页 / 共72页
安徽理工大学软件教研室_第2页
第2页 / 共72页
安徽理工大学软件教研室_第3页
第3页 / 共72页
安徽理工大学软件教研室_第4页
第4页 / 共72页
安徽理工大学软件教研室_第5页
第5页 / 共72页
点击查看更多>>
资源描述

《安徽理工大学软件教研室》由会员分享,可在线阅读,更多相关《安徽理工大学软件教研室(72页珍藏版)》请在金锄头文库上搜索。

1、An Introduction to c/c+ Programming AnHui University of Science and Technology Department of Computer Science 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);s=s1+s2+s3;coutabcdefg;s=area(a,b,c)+area(c,

2、d,e) +area(e,f,g);couty) z=x; else z=y;return z; /将大的数返回 void main() int a,b,c,m;cinabc; m=max(a,b); m=max(c,m); coutmn; coutab; c=max(a,b);couty?x:y ; 【例5.4】函数说明示例 省略参数名DateDate安徽理工大学软件教研室Chap5 FunctionChap5 Function注意: 函数调用在前,定义在后,则必须对函数进行说明,函数说明可以放在函数调用 之前所在的函数内,也可以放在源文件开 头、函数的外部。 函数说明和函数定义在返回类型、

3、函数名 和参数表上必须要完全一致。 函数说明以分号结束。DateDate安徽理工大学软件教研室Chap5 FunctionChap5 Function5.2 函数间参数传递 5.2.1 传值参数特点:形参的改变不会影响实参的值【例5.5】m是一个3位的正整数,将满足m、m2、m3 均为回文数的正整数输出。所谓回文数是指顺读与倒 读数字相同,如4、151、34543。分析:将正整数的每位数取出,构造一个逆序的正整 数,若该数与原来的相同,即为回文数。实参:常量、变量和表达式。 形参:变量DateDate安徽理工大学软件教研室Chap5 FunctionChap5 Functionbool pal

4、indrome(int x) /形参是普通的变量 int m=x,n=0,k;while(x!=0) /构造一逆序数 k=x%10; n=n*10+k; x/=10;return m=n; DateDate安徽理工大学软件教研室Chap5 FunctionChap5 Function#include “iostream.h“ void swap(int a,int b) int temp;temp=a;a=b;b=temp; void main() int x,y; cinxy; swap(x,y); coutab;swap( coutab; copy_string(a,b); coutxy;

5、swap(x,y);cout=10 else flag=0;return flag; DateDate安徽理工大学软件教研室Chap5 FunctionChap5 Function5.2.3 数组名作参数 特点:在被调函数中对形参数组的任何改变均 会影响实参所指地址里的内容 。形参:数组名 实参:数组名或指针变量 DateDate安徽理工大学软件教研室Chap5 FunctionChap5 Function【例5.12】对含有n个元素的整型数组a,从大到小进 行排序。 调用:sort(a,10);void sort(int x,int n)int i,j,k,w;for(i=0;ixij) m

6、in=xi j; 不允许省 略第维 长度DateDate安徽理工大学软件教研室Chap5 FunctionChap5 Function注意: 形参和实参的类型应保持一致。 函数头里的参数,要一个一个地分别说明或列出。下面是几种函数头正确与错误的写法:正确错误int max(int x,int y)int max(int x,y)void sort(int a,int n) void sort(int an,int n) void sort(int a;int n)void sort(int a,n)int m(int x4,int y)int m(int x,int y)DateDate安徽理

7、工大学软件教研室Chap5 FunctionChap5 Function5.2.4 对象参数实参为CString对象,则形参可以是:(1) CString 参数,对形参的改变不影响实参;(2) CString i=str1.Find(sub); while(i=0) count+; k=str1.GetLength(); str1=str1.Mid(i+1,k-i); i=str1.Find(sub); return count; 【例5.14】 统计字符串str1中出现子串sub的个数DateDate安徽理工大学软件教研室Chap5 FunctionChap5 Function5.3 递归函

8、数 用自身的结构来描述自身就称为递归。最典型的例子是对阶乘运算: 特点: 原始问题可转化为解决方法相同的新问题; 新问题的规模比原始问题小; 新问题又可转化为解决方法相同的规模更小的 新问题,直至终结条件为止。DateDate安徽理工大学软件教研室Chap5 FunctionChap5 Function递推回归fac(2)=2*fac(1) fac(1)=1 fac(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);ret

9、urn (n*fac(n-1); 递推过程每调用自身,当前参数压栈,直到达到递归结束条件。 回归过程不断从栈中弹出当前的参数,直到栈空。思考:若fac函数中没有语句 if(n=1) return(1);程序运行结果将如何?DateDate安徽理工大学软件教研室Chap5 FunctionChap5 Function递推回归终止项DateDate安徽理工大学软件教研室Chap5 FunctionChap5 Function【例5.16】用递归函数实现将一个十进制整数转换成二至十六任意 进制的字符 void convert(int m,int r) char b17=“0123456789ABCD

10、EF“;if(m!=0) convert(m/r,r);cout=eps)w+=t;t=t*x/(n+);return w;void main() cout #include void main() int x1=-1;double x2=2.5;long x3=3L;cout 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.5;long x3=3L;cout int min(

11、int a,int b)return a类型 函数名( 参数表)DateDate安徽理工大学软件教研室Chap5 FunctionChap5 Function#include template T min(T a,T b) return aT fun1(T a,int b) /可含有模板参数表中未给 出的数据类型template /模板中可带有多个参数void fun1(T1 a,T2 b,T3 c) DateDate安徽理工大学软件教研室Chap5 FunctionChap5 Functiontemplate void fun1(int a,int b) /必须至少有一个参数的类型或函数类型

12、为模板的类型参数 template void fun1(int a,int b) T i,j; DateDate安徽理工大学软件教研室Chap5 FunctionChap5 Function【例5.21】定义一个通用的函数,对n个数按递增排序。 #include “iostream.h “ template void sort(TEM x,int n) int i,j,k; TEM w; for(i=0;ixj)k=j;if(i!=k )w=xi;xi=xk;xk=w; void main() int i,a6=6,9,2,4,1,0; double b3=5.5,8.0,0; sort(a,

13、6); sort(b,3); for(i=0;ix;cout extern int i; void fun() /extern int i; 错误cout extern int i; /不能初始化 void fun() / extern int i;coutmax)max=xi;if(xix;for(n=6;n0。但这样处理的数据是从个位向前的,所以还要作反转处理。DateDate安徽理工大学软件教研室程序:#include “iostream.h“ #include “string.h“ void main() void itoc(int,char ); int n;char s100;ci

14、nn;itoc(n,s); cout0);if(signabn;cout=ak=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;coutchmax“-“maxendl; 程序:DateDate安徽理工大学软件教研室【例5.31】编写两个重载的同名函数find,功能为查 找指定的字符或子字符串在串中的位置。既实现 Cstring类中二个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; DateDate安徽理工大学软件教研室

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

当前位置:首页 > 生活休闲 > 科普知识

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