




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、会计学1Cc模块化与函数模块化与函数2第1页/共130页3第2页/共130页4第3页/共130页5第4页/共130页6第5页/共130页7主模块模块1模块2模块3模块4模块6模块7模块5第6页/共130页第7页/共130页9第8页/共130页10第9页/共130页11第10页/共130页第11页/共130页第12页/共130页unsigned long fac(int x) int i; unsigned long ul=1; for (i=1;i=x;i+) ul*=i; return ul;第13页/共130页15模块接口模块接口实现模块功能数据传递第14页/共130页16unsigned
2、 long fac(int x) int i; unsigned long ul=1; for (i=1;i=x;i+) ul*=i; return ul;第15页/共130页17第16页/共130页18unsigned long fac(int x) int i; unsigned long ul=1; for (i=1;iy?x:y; z=xy?x:y; return(z); return(z); 例例 空函数空函数 void dummy( void)void dummy( void) 函数体为空例例 无参函数无参函数 void printstar(void)void printstar(
3、void) cout cout* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * endl; endl;void print_message(void)void print_message(void) cout Welcome to C+!endl; cout Welcome to C+!endl;第36页/共130页38说明:实参必须有确定的值形参必须指定类型形参与实参类型一致,个数相同若形参与实参类型不一致,自动按形参类型转换函数调用转换形参在函数被调用前不占内存;函数调用时为形参分配内存;调用结束,内存释放第37页/
4、共130页39例例: : 计算计算x x的立方的立方注意内存注意内存#include using namespace std;float cube(float x) return(x*x*x);int main() float a, product; couta; product=cube(a); cout Cube of a is producty?x:y);第39页/共130页41例例: : 函数返回值类型转换函数返回值类型转换#include using namespace std;int max(float x, float y) float z; z=xy?x:y; return(z
5、);int main() float a,b; int c; cinab; c=max(a,b); coutMax is cendl; return 0;运行结果:运行结果:2.6 , 8.9 Max is 8第40页/共130页42可以被多次调用,相互调用例 int f1(int x);/函数原型 int f2(int x); int f3(int x); int main() int a; f1(a); f2(a); f3(a);int f1(int x) int b; return f2(b);int f2(int x) int c; return f3(c); int f3(int x
6、) 第41页/共130页43第42页/共130页44例例 函数说明举例函数说明举例#includeusing namespace std;int main() int a,b; int c; cinab; c=max(a,b); coutMax is “cy?x:y; return(z);int型函数可不作函数说明(Borland C+不行)#includeusing namespace std;float add(float x, float y) float z; z=x+y; return(z);int main() float a,b,c; cinab; c=add(a,b); cou
7、tsum is “cendl;return 0;被调函数出现在主调函数之前,不必函数说明第43页/共130页main( )调用函数a结束a函数b函数调用函数b例如: 求三个数中最大数和最小数的差值第44页/共130页#include using namespace std; int dif(int x,int y,int z); int max(int x,int y,int z); int min(int x,int y,int z);int main() int a,b,c,d; cinabc; d=dif(a,b,c); coutMax-Min“dy?x:y; return(rz?r:z
8、); int min(int x,int y,int z) int r; r=xy?x:y; return(r1)第47页/共130页第48页/共130页#include using namespace std;int age(int n) int c; if(n= =1) c=10; else c=age(n-1)+2; return(c); int main( )coutage(5)1)第49页/共130页条件,一个可以得到解的基本情况。第50页/共130页52第51页/共130页53第52页/共130页54第53页/共130页55基本情形基本情形更简单的原始问题更简单的原始问题第54页/
9、共130页565!5*4!4*3!3*2!2*1!1返回5*24=120返回4*6=24返回3*2=6返回2*1=2返回1第55页/共130页57第56页/共130页例例 有以下程序有以下程序#include using namespace std; int f(int n) if (n=1)return 1; else return f(n-1)+1; int main() int i,j=0; for(i=1;i3;i+) j+=f(i); coutjendl; return 0;程序运行后的输出结果是:程序运行后的输出结果是:a)4 b)3 c)2 d)1 i f(i) j 1 1 1
10、2 f(2-1)+1 1+2 第57页/共130页例:#include using namespace std;long fun(int n) long s; if( n=1| n=2 ) s=2; else s=n-fun(n-1); return s;int main() coutfun(3)i) i=j;if(ki) i=k;m=i;第61页/共130页第62页/共130页int max1(int ,int,int)long max2(long, long, long)double max3(double , double , double )第63页/共130页例:void print
11、(double);void print(int);void func() print(1); / void print(int); print(1.0); / void print(double); print(a); / void print(int); print(3.1415f); / void pirnt(double); 第64页/共130页66第65页/共130页double d1,d2,d3,d; cind1d2d3; d=max(d1,d2,d3); coutd_max=dg1g2g3; g=max(g1,g2,g3); coutg_max=ga) a=b; if(ca) a=
12、c; return a;第66页/共130页运行情况如下:185 -76 567 i_max=567 56.87 90.23 -3214.78d_max=90.2367854 -912456 673456 g_max=673456 特点:参数类型不同,函数体一样特点:参数类型不同,函数体一样第67页/共130页第68页/共130页第69页/共130页第70页/共130页72第71页/共130页第72页/共130页int main( )int i1=185,i2=-76,i3=567,i;double d1=56.87,d2=90.23,d3=-3214.78,d; long g1=67854,
13、g2=-912456,g3=673456,g; i=max(i1,i2,i3); d=max(d1,d2,d3); g=max(g1,g2,g3); couti_max=iendl; coutf_max=fendl; coutg_max=ga) a=b; if(ca) a=c; return a;第73页/共130页int add(int x=5,int y=6) return x+y;void main() add(10,20); /10+20 add(10); /10+6 add(); /5+6第74页/共130页u默认形参值必须从右向左顺序声明,并且在默认形参值的右面不能有非默认形参值的
14、参数。因为调用时实参取代形参是从左向右的顺序。u例:int add(int x,int y=5,int z=6); /正确int add(int x=1,int y=5,int z); /错误int add(int x=1,int y,int z=6); /错误第75页/共130页int max(int a,int b,int c) if(ba) a=b; if(ca) a=c; return a;运行情况如下:14 -56 135max(a,b,c)=135max(a,b)=14第76页/共130页局部变量第77页/共130页float f1(int a) /函数f1int b,c; b、c
15、有效 a有效char f2(int x, int y) /函数f2 int i,j; i、j有效x、y有效int main( ) /主函数int m,n;int p,q; p、q在复合语句中有效 m、n有效第78页/共130页例如int max(int a,int b); /函数声明中出现a、b int max(int x,int y) /函数定义,形参是x、y coutxyendl; /合法,x、y在函数体中有效coutabendl; /非法,a、b在函数体中无效编译时认为max函数体中的a和b未经定义。第79页/共130页int p=1,q=5;/全局变量全局变量p、q的作用范围 floa
16、t f1(int a)/定义函数f1 int b,c;char c1,c2; /全局变量 全局变量c1、c2 的作用范围char f2 (int x, int y) /定义函数f2int i,j;main ( )/主函数int m,n;第80页/共130页内存.int main() int a; a=10; coutaendl;return 0;编译或函数调用时为其分配内存单元1020002003程序中使用变量名对内存操作第81页/共130页变量的属性数据类型:变量所持有的数据的性质(操作属性)存储属性生存期:变量在内存中的存在期间。变量在某一时刻存在-静态变量与动态变量(时间角度)作用域:变
17、量在某区域内有效-局部变量与全局变量(空间角度)变量的存储类型auto -自动型register-寄存器型static -静态型extern -外部型变量定义格式: 存储类型 数据类型 变量表;4.12 变量的存储类别u概述变量是对程序中数据的存储空间的抽象如: int sum; auto int a,b,c; register int i; static float x,y;第82页/共130页程序区静态存储区动态存储区全局变量、局部静态变量形参变量局部动态变量(auto register)函数调用现场保护和返回地址等生存期静态变量:从程序开始执行到程序结束动态变量:从包含该变量定义的函数开
18、始执行至函数执行结束第83页/共130页float f1(int a) int b,c; .char f2(int x,int y) int i,j; main() int m,n; .a,b,c有效x,y,i,j有效m,n有效例 不同函数中同名变量#include using namespace std;int main() int a,b; int sub( ); a=3; b=4; coutmain: a“,”bendl; sub( ); coutmain: a“,”bendl;return 0; int sub( ) int a,b; a=6; b=7; cout sub: a“,”b
19、外部变量说明: extern 数据类型 变量表;外部变量定义与外部变量说明不同若全局变量与局部变量同名,则全局变量被屏蔽外部变量可用存储类型:缺省 或 static第85页/共130页float max,min;float average(float array, int n) int i; float sum=array0; max=min=array0; for(i=1;imax) max=arrayi; else if(arrayimin) min=arrayi; sum+=arrayi; return(sum/n);main() int i; float ave,score10; /*
20、Input */ ave=average(score,10); coutmax= maxmin=“ minaverage=“aveendl;作用域maxmin第86页/共130页int p=1,q=5;float f1(int a) int b,c; .int f3().char c1,c2;char f2(int x,int y) int i,j; main() int m,n; .c1,c2的作用范围p,q的作用范围extern char c1,c2;extern char c1,c2;c1,c2的作用范围扩展后c1,c2的作用范围扩展后第87页/共130页例 外部变量定义与说明#incl
21、udeusing namespace std;int max(int x, int y) int z; z=xy?x:y; return(z);main() extern int a,b; coutmax=“max(a,b)endl;int a=13,b=-8;运行结果:max=13#includeusing namespace std;extern int a,b;int max() int z; z=ab?a:b; return(z);int main() coutmax=“max()endl;return 0;int a=13,b=-8;第88页/共130页#includeusing n
22、amespace std;int a=3,b=5;max(int a, int b) int c; c=ab?a:b; return(c);int main() int a=8; coutmax=“max(a,b)endl;return 0;例 全局变量与局部变量运行结果:max=8第89页/共130页int i;#includeusing namespace std;int main() void prt(); for(i=0;i5;i+) prt( );void prt( ) for(i=0;i5;i+) cout“*”; coutendl;例 外部变量副作用运行结果:*第90页/共130
23、页第91页/共130页程序区静态存储区动态存储区全局变量、局部静态变量形参变量局部动态变量(auto register)函数调用现场保护和返回地址等如: int sum; auto int a,b,c; register int i; static float x,y;第92页/共130页u局部变量默认为auto型,如int a=3;u局部static变量具有全局寿命和局部可见性u局部static变量具有可继承性即占有的存储单元不释放,在下一次调用函数时,该变量保留上一次函数调用结束时的值。uextern不是变量定义,可扩展外部变量作用域第93页/共130页例 auto 变量的作用域同名局部变
24、量#includeusing namespace std;int main() int x=1; void prt(void); int x=3; prt( ); cout“2nd x=”xendl; cout“1st x=”xendl;return 0;void prt( ) int x=5; cout“3th x=”xendl;运行结果:3th x=52nd x=31st x=1x=1作用域x=1作用域x=3作用域x=5作用域第94页/共130页#includeusing namespace std;int main() void increment(void); increment();
25、 increment(); increment();return 0;void increment(void) int x=0; x+; coutxendl;例 局部静态变量值具有可继承性运行结果:1 1 1#includeusing namespace std;int main() void increment(void); increment(); increment(); increment();return 0; void increment(void) static int x=0; x+; coutxendl;运行结果:1 2 3第95页/共130页例 变量的寿命与可见性#incl
26、ude int i=1;main() static int a; register int b=-10; int c=0; cout-MAIN-n“endl; couti: i a: a “b:” b“ c:” c; c=c+8; other(); cout-MAIN-n“endl; couti: i a: a “b:” b“ c:” c; i=i+10; other();other() static int a=2; static int b; int c=10; a=a+2; i=i+32; c=c+5; cout-OTHER-“endl; couti: i a: a “b:” b“ c:
27、” c; b=a; -Main-i:1 a:0 b:-10 c:0 -Other-i:33 a:4 b:0 c:15 -Main-i:33 a:0 b:-10 c:8-Other-i:75 a:6 b:4 c:15全局i1main: a0b:-10registermain:c0静态存储区动态存储区other: a2other: b0other: c10843315443other: c10675156第96页/共130页#includeusing namespace std;int main() void gx(),gy(); extern int x,y; cout“1: x=”x“ty=“
28、yendl; y=246; gx(); gy();void gx() extern int x,y; x=135; cout“2: x=”x“ty=“yendl;int x,y;void gy()cout“3: x=”x“ty=“yendl;例 用extern扩展外部变量作用域运行结果:1: x=0 y=02: x=135 y=2463: x=135 y=246第97页/共130页例 引用其它文件中的外部变量int global;extern float x;main() int local;.extern int global;static int number;func2().float x;static int number;func3() extern int global;.file1.cppfile2.cppfile3.cpp第98页/共130页例 引用其它文件中的变量,输出ab和a的m次方int a;void main() int power(int n); int b=3,c,d,m; coutam; c=a*b; cout a * b=cendl; d=power(m); couta* m = dendl;extern int a;int power(int n) int
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 体育个人课题申报书范例
- 课题申报书点评模板
- 兵团立项课题申报书
- 课题申报书格式
- 陕西课题申报书范文样本
- 乌鲁木齐供用热合同范本
- 怎么填课题申报书
- 品牌专利持有合同范本
- 会展场馆租赁合同范本
- 科学技术课题申报书
- 软胶囊成本结构分析-深度研究
- 2025年中考百日誓师大会校长致辞稿(一)
- 2025重庆市建筑安全员A证考试题库
- 人教版初中数学八年级下册全册教案(2024年春季修订)
- 生物产品检验检疫基础知识单选题100道及答案
- 江苏省中职《英语》学业水平考试备考试题集(含历年真题)
- 2025年合伙型公司新合伙人加入协议
- 2025年安全员之C证(专职安全员)考试题库
- 2025城市商铺买卖合同书
- 医院感染及其危害
- 2024全国各省高考诗歌鉴赏真题及解析
评论
0/150
提交评论