全套课件·《C++程序设计简明教程》1.ppt

上传人(卖家):三亚风情 文档编号:3522819 上传时间:2022-09-11 格式:PPT 页数:365 大小:2.23MB
下载 相关 举报
全套课件·《C++程序设计简明教程》1.ppt_第1页
第1页 / 共365页
全套课件·《C++程序设计简明教程》1.ppt_第2页
第2页 / 共365页
全套课件·《C++程序设计简明教程》1.ppt_第3页
第3页 / 共365页
全套课件·《C++程序设计简明教程》1.ppt_第4页
第4页 / 共365页
全套课件·《C++程序设计简明教程》1.ppt_第5页
第5页 / 共365页
点击查看更多>>
资源描述

1、C+程序设计简明教程第1章 概述 1.1 结构化程序设计 1.2 面向对象程序设计1.3 C+语言介绍 1.4 C+程序的开发环境第1节 结构化程序设计 计算机的工作用程序进行控制。程序是指令的集合。指令是计算机可以识别的命令。计算机程序语言的发展历史1.机器语言 计算机能够识别并直接运行2.汇编语言 用汇编指令编写程序,经过编译之后才能执行。这两类语言被称为面向机器的语言。3.高级语言 面向过程的结构化程序设计语言,重点是描述问题求解的过程、算法和方法。问题求解的常用手段是功能分解,并把分解的结果用高级语言结构化地实现。典型的高级语言有C语言、PASCAL语言和BASIC语言等。结构化程序设

2、计 设计思路采用模块分解与功能抽象,分而治之。自顶向下,逐步求精。程序结构 按功能划分为若干个基本模块,形成树状结构。模块间的关系尽可能简单,功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成。模块化实现的具体方法是编写子程序(函数)。第2节 面向对象程序设计 结构化程序设计的缺点 把数据和处理数据的过程人为地分离。当数据结构改变时,所有相关的处理过程都要进行相应的修改。每一种相对于老问题的新方法都要带来额外的开销。图形用户界面的应用程序,很难用过程来描述和实现,开发和维护也都很困难。面向对象程序设计思想 将数据及对数据的操作方法进行封装,作为一个有机体对象。对同类的对象抽象出

3、其共性,形成类。对象通过简单的外部接口,与外界发生联系。对象与对象之间通过消息进行通信。面向对象程序设计的优点程序模块之间的关系更为简单,程序模块的独立性、数据的安全性有良好的保障。通过继承与多态性,可以大大提高程序的可重用性,使得软件的开发和维护都更为方便。对象 构成系统的基本单位,用来描述客观事物的实体。对象由一组属性和一组行为构成。属性:描述对象静态特征的数据项。行为:描述对象动态特征的操作序列。类 具有相同属性和方法的一组对象的集合。为属于该类的全部对象提供了抽象的描述,包括属性和方法。类与对象的关系犹如模具与零件之间的关系,一个属于某类的对象称为该类的一个实例。封装 把对象的属性和方

4、法结合成一个独立的系统单元。尽可能隐蔽对象的内部细节。只保留外部接口,通过它与外部发生联系。继承 继承对于软件重用有着重要意义,是面向对象程序设计方法能够提高软件开发效率的重要原因之一。派生类的对象拥有基类的全部属性与方法,称为继承。例如:交通工具为基类,汽车、轮船和客机便是派生类。多态性 多态性是指在基类中定义的方法,被派生类继承之后,可以表现出不同的行为。例如:三角形、圆形和矩形都是几何图形,但是它们求面积的方法显然各不相同。第3节 C+语言介绍 C+是从C语言发展演变而来的,引入了类和继承等机制,支持面向对象程序设计方法。1983年正式取名为C+语言。逐步完善,并于1998年被国际标准化

5、组织(ISO)批准为国际标准,正式定型。C+语言的特点 全面兼容C 保持了C的简洁、高效和中级语言等特点。对C语言的语法进行了改进和扩充。是混合型编程语言。完全支持面向对象程序设计方法简单的 C+程序#include int main()/主函数 coutHello!endl;coutWelcome to C+!endl;return(0);主函数输出流对象注释语法1函数由首部和函数体组成。2在首部定义函数,函数名后面有圆括号,括号内是函数参数。3函数体写在花括号内,函数体一般包括数据声明部分和执行语句部分。4每条语句后面必须有一个分号。5./是注释部分。总结1函数是构成C+程序的重要模块。2

6、一个C+程序有且仅有一个main函数,程序总是从main函数开始执行。3在C+程序中一般通过向对象发送消息,完成特定的任务。第4节 C+程序的开发环境 Visual C+6.0是Microsoft公司推出的、使用极为广泛的可视化程序开发工具,它提供了基于Windows平台的C+语言集成开发环境。Visual C+6.0环境新建工程新建文件编辑程序运行程序第2章 C+基础 2.1 基本数据类型 2.2 表达式与语句 2.3 输入与输出2.4 选择结构2.5 循环结构 2.6 复合数据类型 2.1 基本数据类型 C+预先设置了基本数据类型,分别是整型、实型、字符型和布尔型,程序员可以在程序中直接使

7、用。在基本数据类型的基础上,还可以根据需要定义复合数据类型,例如数组、结构体、共用体和枚举类型,以表达更为复杂的数据。数据类型指针类型空类型基本类型整型字符型实型(浮点型)布尔型单精度型双精度型构造类型数组类型结构体类型共用体类型标识符 标识符就是名字,它由一串字符序列构成。其语法规则是:1.由字母、数字或者下划线(_)组成。2.首字符必须是字母或者下划线。例如num、b2和_a都是合法的C+标识符,3c、ye#和int都是非法的标识符。常量 在程序运行过程中其值不能改变的量叫做常量。常量分为整型常量、实型常量和字符型常量等。整型常量有23、-7、036(八进制)、0 x2d(十六进制)、5L

8、(长整型常量)、6U(无符号常量)等。实型常量有5.87、3.14f(单精度)、2e3(指数形式)等。字 符 型 常 量 有 a 、n (转 义 字符)、”china”(字符串常量)等。布尔型常量,true和false。符号常量可以使用标识符代表一个常量,例如:#define PI 3.14 PI就称为符号常量。还可以用关键字const定义符号常量。例如:const float PI=3.14;const变量必须在定义的时候立刻初始化,而且在程序执行期间,其值不能够被修改。变量 v在程序运行过程中其值可以改变的量叫做变量。变量对应了内存的一段存贮单元。v变量要先定义,再使用。变量定义语句的一般

9、形式为:类型类型 变量名变量名1,变量名,变量名2,;整型变量 int a=17;/定义整型变量a,并赋初值 long b(13467L);/定义长整型变量b,并赋初值 unsigned int c,d;/定义无符号整型变量c和d 变量可以在定义时初始化。除了“=”的传统方式之外,C+语言还允许用括号()为变量赋初值。整型变量的取值范围关键字 取值范围short 3276832767unsigned short065535int21474836482147483647unsigned int 04294967295 long21474836482147483647unsigned long 0

10、4294967295实型变量 float a;/定义浮点型变量adouble b;/定义双精度型变量blong double c;/定义长双精度型变量c 实型变量的取值范围 关键字 取值范围 精度(位)float3.410 383.410 38 7double1.710 308 1.710 308 15字符型变量 char c=a;/定义字符型变量c,并初始化v字符型数据按ASCII码存储,占一个字节。v给字符变量赋值时可以赋予字符的ASCII码。例如:char a=65的结果是a变量中存放字母A。案例#include main()char a=a,b=b,c=c,d=65;a=a+1;b=b

11、+2;c=c+3;d=d+4;coutabcdendl;运行结果:bdfE 常见的转义字符 字符形式 功 能 n 换行 t 横向跳格(即跳到下一个输出区)v 纵向跳格 b 退格 r 光标移到当前行开头 f 走纸换页 反斜杠字符“”单引号字符 “双引号字符 ddd 1到3位八进制字符。如 123表示八进制数123,即十进制数83 xhh 1到2位十六进制字符。如x21,表示十六进制数21,即十进制数33 布尔型变量 bool a=9;/a的值为true int b=false;/b的值为0 如果将布尔型数据转换为整型数据,则true转换为1,false转换为0。反之,如果将整型数据转换为布尔型数

12、据,则遵循“非0为真”的原则,将非0数转换为true,0转换为false。引用 类型类型&引用名引用名=变量变量;例如:例如:int a=5;/定义一个整型变量定义一个整型变量a,初值为,初值为5 int&r=a;/定义一个整型引用定义一个整型引用r,是变量,是变量a的别名的别名 引用是一个变量或者对象的别名。引用是一个变量或者对象的别名。引用在定义的同时,必须立即初始化,即作为一个已经定义的同类型变量的别名,而且以后不能更改。2.2 表达式与语句 表达式描述了对哪些数据,以什么顺序施以什么样的操作,程序中对数据的运算是通过表达式完成的。语句是程序构成的最小单位,用来向计算机发出操作指令。算术

13、运算符 C+语言的算术运算符共有5种:+(加)(减)*(乘)/(除)%(求余)。%运算的操作数必须为整数。两个整数相除,结果仍然是整数。例如5/3=1,-9/4=-2。整型除法与实型除法是不同的。例如1/2的结果是0,而1.0/2.0的结果是0.5。赋值运算符 变量变量=表达式表达式 例如:a=8;/将8赋给变量ay=3*8+9/2;/将右边表达式的值赋给变量y 左值必须是变量复合赋值运算符在赋值运算符之前加上其它运算符,可以构成复合赋值运算符。-=*=/=%=(与算术运算符组合)=&=(与位运算符组合)案例 x+=8等价于x=x+8 x*=y+5等价于x=x*(y+5)表达式a+=a-=a*

14、a,若a的初值为5,则该表达式的求解步骤是:先进行a-=a*a的运算,相当于a=a-a*a,结果是-20,a的值也是-20;然后计算a+=-20,相当于a=a+(-20),结果是-40。因此整个表达式的值是-40,a的值也是-40。自增自减运算符 l 自增运算符使变量的值增加1,而自减运算符则使变量的值减少1。l 其操作数只能是变量。l+i和-i是前缀运算符,i+和i-是后缀运算符。以自增运算符为例,做前缀运算时,先将变量的值增1,然后再使用它的值;做后缀运算时,先使用该变量的值,再将它的值增1。案例 int n=3,m;执行语句m=n+;之后,m的值是3,n的值是4;而执行语句m=+n;之后

15、,m的值是4,n的值也是4。后缀运算存在计算上的延迟,即先取值,经过延迟之后再修改变量的值。强制类型转换运算符 (类型)(表达式)(类型)(表达式)使用强制类型转换运算符,可以把表达式的结使用强制类型转换运算符,可以把表达式的结果强行转换为一个指定的类型。果强行转换为一个指定的类型。sizeof运算符用于计算某种类型的实体在内存运算符用于计算某种类型的实体在内存中所占的字节数。例如中所占的字节数。例如sizeof(int)的值为的值为4,sizeof(double)的值为的值为8。如果。如果a是是int型变量,型变量,则则sizeof(a)的值也是的值也是4。关系运算符 C+语言提供了6个关系

16、运算符,分别是:=b+c;/先计算a*2,值为14;然后计算b+c,值为11;最后比较,表达式的值为true abc;/先计算ab,值为true;然后计算truec,即1c,表达式的值为false 2=2=2;/先计算2=2,值为true;然后计算true=2,即1=2,表达式的值为false逻辑运算符逻辑运算符 C+语言提供了3个逻辑运算符:!、&和|,分别表示逻辑非、逻辑与和逻辑或运算,运算结果为逻辑值:true(真)或者false(假)。aba&ba|b!a00001010111001011110案例 int a=2,b=1;!a;/a的值2先转换为true,运算结果为false a&b

17、-1;/a的值2先转换为true,b-1的值为0,转换为false,运算结果为false a|b;/a的值2先转换为true,b的值1也转换为true,运算结果为true构造条件 灵活运用关系表达式和逻辑表达式,可以构建复杂的条件,解决工程实际问题。例如:1.描述321数学常识的对应C+表达式为32&21。2.描述字符变量c的值是字母的C+表达式为c=a&c=A&c=Z。3.描述m能够被n整除的C+表达式为m%n=0。位运算符&按位与 按位取反|按位或 按位右移按位与 运算规则:0&0=0,0&1=0,1&0=0,1&1=1。int a=211,b=150,c;c=a&b;图 2-3 按 位与

18、 运算 操作 a=0000000011010011 十 进 制值 为 211 b=0000000010010110 十 进 制值 为 150 a&b c=0000000010010010 十 进 制 值 为 146 按位或 运算规则:0|0=0,0|1=1,1|0=1,1|1=1。int a=59,b=166,c;c=a|b;图 2-4 按位或运算操作 a=0000000000111011 十进制值为59 b=0000000010100110 十进制值为166 a|b c=0000000010111111 十进制值为 191 按位异或 运算规则:00=0,01=1,10=1,11=0。int

19、a=42,b=103,c;c=ab;图 2-5 按位异或运算操作 a=0000000000101010 十进制值为42 b=0000000001100111 十进制值为103 ab c=0000000001001101 十进制值为 77 按位取反 运算规则:0=1,1=0。int a=42,c;c=a;图2-6 按位取反运算操作 a=0000000000101010 十进制值为42 a c=1111111111010101 十进制值为-43 按位左移 ab,其作用是将a的补码位全部右移b位,右移移出的二进制位全部丢弃,左边补b个0或1。右移n位实际上相当于被2的n次方整除。条件运算符 表达式表

20、达式1?表达式表达式2:表达式表达式3 运算规则是,如果表达式1的值为真,则以表达式2 的值作为条件表达式的值,否则以表达式3的值作为条件表达式的值。例如:max=(ab)?a:b 整个表达式的值即max的值,它为a和b的最大值。逗号运算符 表达式表达式1,表达式,表达式2,表达式,表达式n 逗号表达式的求解过程是:从左向右,依次计算。即先求表达式1的值,再求表达式2的值,最后求表达式n的值,整个表达式的值是表达式n的值。l例如a=(y=9,y+1),首先将9的值赋给y,然后计算y+1,将结果10赋给a。数据类型转换数据类型转换 数据类型的转换可以归纳成3种转换形式:自动转换、强制转换和赋值转

21、换。u自动转换是在混合运算时,自动把低类型数据转换为高类型。u强制转换是用强制转换运算符,把数据强行转换为所需类型。u赋值转换是在赋值过程中,把赋值运算符(=)右边数据的类型自动转换为左值的类型。类型转换规则 将整型转换为浮点型时,数值不变,但以浮点数形式存储到变量中。将实型转换为整型时,舍弃实型数据的小数部分。短整型(short)转换为长整型(long)时,高16位全补上符号位。长整型数据转换为短整型,只保留低16位数据,高16位数据则被丢弃。无符号数据转换为有符号类型,最高位由数值位变为符号位;有符号数据转换为无符号类型,则最高位由符号位变为数值位。C+语句 C+语句可以分为简单语句、复合

22、语句和流程控制语句,语句以分号“;”结束。简单语句包括表达式语句、函数调用语句和空语句。n表达式语句的一般形式为:表达式;表达式;n函数调用语句一般形式为:函数名(参数表);函数名(参数表);复合语句 用一对花括号将多条逻辑上相关的语句组合在一起,在语法上相当于一条语句。例如:t=x;x=y;y=t;2.3 输入与输出 C+语言采用输入输出流的方法解决程序的输入输出。C+的流(stream)是对输入输出的一种抽象,指的是计算机中的一系列字符(字节)从一个对象流动到另一个对象。C+语言用cout对象完成标准输出,cin对象完成标准输入。cout和cin是C+语言预定义的输入输出流类的对象,在使用

23、之前,需要在程序头部添加以下一条语句#include cout C+标准输出的格式是:cout表达式1表达式2表达式n;是插入运算符,与cout对象相配合,而且可以连续使用。其作用是将某个数据插入到输出流中,最后显示在屏幕上。例如:cout”a=”a”,b=”b变量1变量2变量n;是提取运算符,与cin对象相配合,而且可以连续使用。其作用是将某个数据从输入流中提取出来,赋给相应的变量。例如:cinab;常用的I/O流操纵符 dec 十进制表示(默认方式)hex 十六进制表示 oct 八进制表示 setfill(char)设置填充字符 setprecision(int)设置浮点数的精度 setw

24、(int)设置输出域宽 endl 换行案例例如输出浮点数2.71828,要求输出占6位,其中有4位有效数字,则输出语句为:coutsetw(6)setprecision(4)2.71828endl;2.4 选择结构 选择结构使得程序具有了初步的智能,可以根据条件成立与否,决定从不同的分支中选择执行某一分支的操作。本节介绍if语句和switch语句。if语句 if-else结构是if语句的基本型,一般形式为:if(表达式)语句1 else 语句2执行流程:先计算表达式的值,如果表达式的值为true,则执行语句1;表达式的值为false,则执行语句2。登陆界面#include int main()

25、const int p=123;int m;cout请输入密码:m;if(m=p)cout恭喜您,登陆成功!endl;else cout对不起,登陆失败!endl;return(0);排序#include#include int main()int a,b,t;cout请输入两个整数:ab;if(ab)t=a;a=b;b=t;coutsetw(3)asetw(3)bendl;return(0);if语句的嵌套 if(表达式1)if(表达式1_1)语句1_1 else 语句1_2 else if(表达式2_1)语句2_1 else 语句2_2计算分段函数的值1#include int main(

26、)float x,y;cout请输入x的值:x;/输入x的值 if(x8)/判断x是否小于8 if(x2)/判断x是否小于2 y=2*x+1;else /x在2和8之间 y=x-3;else /x8 y=3*x-1;couty=yendl;return(0);else-if结构 if(表达式1)语句1 else if(表达式2)语句2 .else if(表达式n)语句n else 语句n+1计算分段函数的值2#include int main()float x,y;cout请输入x的值:x;/输入x的值 if(x2)/判断x是否小于2 y=2*x+1;else if(x8)/判断x是否在2和8

27、之间 y=x-3;else /前面两个条件都不满足 y=3*x-1;couty=yendl;return(0);else与if配对C+语言规定,从最内层开始,else总是与其之前最近的if配对。如果想限制某个if的配对,可以采用复合语句的方式。if(表达式1)if(表达式2)语句1 else 语句2 switch语句switch语句可以根据表达式的值处理多个分支。一般形式:switch(表达式)case 常量1:语句组1 case 常量2:语句组2 case 常量n:语句组n default:语句组n+1 switch执行流程先计算表达式的值,然后逐一与n个case右边的常量比较。如果和其中某

28、个常量相等,则从该case的冒号后面开始执行;如果与所有case右边的常量均不相同,则执行default后面的语句。考核等级 switch(g)case A:case a:cout90分100分endl;break;case B:case b:cout80分90分endl;break;case C:case c:cout70分80分endl;break;case D:case d:cout60分70分endl;break;case E:case e:cout60分以下endl;break;default:cout输入的等级有误!endl;2.5 循环结构uC+语言提供了三种循环语句,分别为wh

29、ile语句、do-while语句和for语句。u学习循环结构时,一定要注意循环的一些要素,例如循环体、循环初值、循环条件和循环次数等。while语句 while(表达式)循环体 否 是 表达式为真 循环体 语句 求和1#include int main()int sum=0,i=1;while(i=100)/i=100时,重复执行如下语句 sum=sum+i;/累加 i+;coutsum is sumendl;return(0);do-while语句 do 循环体 while(表达式);否 是 循 环 体 表 达 式 为 真 语 句 求和2#include int main()int sum=

30、0,i=1;do sum=sum+i;/累加 i+;while(i=100);coutsum is sumendl;return(0);for语句 for(表达式1;表达式2;表达式3)循环体 for语句的括号中3个表达式都可以省略,但是两个分号不能省略。表达式1称为初值表达式,只计算一次,用于设置初值。表达式2是循环条件,表达式3称为修正表达式,用于修正循环条件,使得最终能够退出循环。否 是 计算表达式 1 表达式 2 为真 循环体 计算表达式 3 语句 求和3#include int main()int sum,i;for(i=1,sum=0;i=100;i+)sum=sum+i;/累加

31、coutsum is sumendl;return(0);循环嵌套 循环嵌套是指在循环体中又包含另一个完整的循环结构。通常把嵌套在循环体内的循环结构称为内循环,把外层的循环结构称为外循环。例如:while()for(;)打印九九乘法口诀表#include#include int main()int i,j;for(i=1;i=9;i+)/控制输出的行数 for(j=1;j=i;j+)/输出每一行的内容 coutsetw(2)j*setw(2)i=setw(2)i*j;coutendl;/每行结束后,换行 return(0);break语句break语句的作用是跳出本层结构,转去执行下面的语句。

32、for(i=1,sum=0;i3000)break;sum=sum+i;/累加 continue语句continue语句的作用是提前结束本次循环,即跳过循环体中剩余的语句,执行下一次循环。for(i=1,sum=0;i=100;i+)if(i=50|i=80)continue;sum=sum+i;/累加 2.6 复合数据类型 结构体类型是自定义的一种复合数据类型,主要说明数据实体的各个成员及其类型。使用结构体类型之前必须先定义,一般形式为:struct 结构体名结构体名 成员表列成员表列 ;说明 花括号内是对该结构体各个成员的类型声明,其形式为:类型类型 成员名成员名;成员声明的形式与变量定义

33、的形式类似。结构体类型可以用来定义变量。结尾处的分号不能省略。定义结构体变量 1.先定义结构体类型,再定义变量。例如:struct student s1,s2;2.在定义类型的同时定义变量。3.省略结构体类型名,即成为无名结构体类型。结构体成员 结构体变量结构体变量.成员名成员名 例如:s2.score=sl.score;sum=sl.score+s2.score;s2.age+;结构体数据的输入和输出#include struct student long sno;char name20;char sex;float score;int main()student a;cina.namea.

34、snoa.sexa.score;coutNo:a.snoendlName:a.nameendl Sex:a.sexendlScore:a.scoreendl;return(0);共用体 union 共用体名共用体名 成员表列成员表列 ;某时刻存在于共用体中的只有一个成员,即只有最近赋值的成员的值是有效的。#include struct S int c1;int c2;union U int a;intb;S d;int main()U g;g.b=10;g.b=g.a+20;g.d.c1=g.a+g.b;coutg.a,g.b,g.d.c1endl;return(0);枚举类型枚举类型 enu

35、m 枚举类型名枚举类型名标识符标识符1,标识符标识符2,标识符标识符n;用枚举方法列举一组标识符作为枚举类型的值,枚举类型变量只能取该类型列举的值。enum colorred,yellow,blue,white,black;color c;c=red;typedef 用typedef定义新的类型,代替已有的类型。typedef int INT;typedef并没有创建新的数据类型,只是命名了一个新的类型名字。其目的是降低定义复杂数据类型的难度,增加程序的可读性和可移植性。第3章 C+函数3.1 函数基础 3.2 函数调用的方式3.3 内联函数 3.4 带默认形参值的函数3.5 函数重载3.6

36、函数模板 main A C B D 3.1 函数基础如果函数A调用了函数B,则约定把A称为主调函数,B称为被调函数。函数定义 类型 函数名(形参列表)变量声明语句 执行语句 如果要向主调函数返回值,则用return语句。return(表达式);函数原型 类型 函数名(形参列表);1.如果被调函数在主调函数之前定义,可以不必声明。2.如果被调函数将要被多个函数调用,则可以把函数声明语句写在程序的开始处。3.函数声明时可以省略形参的名字,但是形参的类型不能省略。函数调用 函数名(实参列表);1.括号内为实参。实参即实际参数,表示传递给被调函数的一些必要数据,实参之间用逗号隔开。2.如果被调函数有返

37、回值,则函数调用表达式的值就是返回值。计算n!#include int main()long fac(int n);/函数声明 int n;long s;cinn;s=fac(n);/函数调用 couts=sendl;return(0);long fac(int n)/函数定义 long s;int i;for(i=1,s=1;i=n;i+)s*=i;return(s);/函数返回值 参数传递 实参与形参个数相等,类型尽量保持一致。实参向形参传递数据时,从左向右,一一对应。实 参1 形 参1 实 参2 形 参2 函数嵌套调用 B();C();函数 A 函数 B 函数 C 递归调用 在函数的函数

38、体内又出现直接或间接调用自身的语句,即函数在执行过程中调用自己的现象,称为递归调用。递归调用计算n!#include int main()long fac(int n);/函数声明 int n;long s;cinn;s=fac(n);/函数调用 coutn!=sendl;return(0);long fac(int n)/函数定义 long s;if(n=1)s=1;else s=n*fac(n-1);/递归调用 return(s);/函数返回值 递归调用的执行过程 s=4*fac(3);fac(4)fac(3)fac(2)fac(1)s=3*fac(2);s=2*fac(1);s=1;3.

39、2 函数调用的方式 传值调用 调用时把实参的值从左至右,一一传递给各个形参。这种传递是单向的,形参的值发生变化,对实参毫无影响。失败的交换#include int main()void swap(int a,int b);/函数声明函数声明 int a,b;cout请输入两个整数:请输入两个整数:ab;swap(a,b);/函数调用函数调用 couta=a,b=bendl;return(0);void swap(int a,int b)/函数定义函数定义 int t;/定义中间变量定义中间变量 t=a;a=b;b=t;引用调用#include#include void fun(int x,in

40、t&y);/y是引用 int main()int x=1,y=2;cout 函数调用之前:endl;coutx=setw(3)x,y=setw(3)yendl;fun(x,y);cout 函数调用之后:endl;coutx=setw(3)x,y=setw(3)yendl;return(0);void fun(int x,int&y)x+;y+;/修改了实参的值 cout 函数调用中:endl;coutx=setw(3)x,y=setw(3)yendl;引用参数传递 实 参 y 形 参 y 实 参 x 形 参 x 成功的交换#include int main()void swap(int&a,i

41、nt&b);/函数声明函数声明 int a,b;cout请输入两个整数:请输入两个整数:ab;swap(a,b);/函数调用函数调用 couta=a,b=bendl;return(0);void swap(int&a,int&b)/函数定义函数定义 int t;/定义中间变量定义中间变量 t=a;a=b;b=t;3.3 内联函数 内联函数在调用时并不发生通常的程序执行转移,而是把函数体插入到函数调用处。inline 类型 函数名(形参列表)变量声明语句 执行语句 案例#include#include float get_area(float x)return x*x;int main()inl

42、ine float get_area(float len);/内联函数,计算正方形的面积 float x,area;cout请输入正方形的边长:x;area=get_area(x);/调用内联函数,编译时此处被替换为函数体的语句 cout正方形的面积是setw(4)setprecision(3)areaendl;return(0);3.4 带默认形参值的函数 允许事先为函数的形参设置默认值,如果在调用函数时不给出实参,就会自动使用相应的默认值来代替实参。例如:int fun(int x,int y=1);c=fun(3);/形参x的值是3,形参y的值是事先设置的默认值1 说明1.应该从函数形参

43、列表的最右边开始,设置默认形参值。2.如果已有函数原型,则默认形参值只能在函数声明语句中设置。案例#include#include float get_volume(float x=1,float y=2,float z=3);int main()cout第一次函数调用:;cout长方体的体积是get_volume(3,4,5)endl;cout第二次函数调用:;cout长方体的体积是get_volume(3,4)endl;/默认形参值 cout第三次函数调用:;cout长方体的体积是get_volume(3)endl;/默认形参值 cout第四次函数调用:;cout长方体的体积是get_vo

44、lume()endl;/默认形参值 return(0);float get_volume(float x,float y,float z)float v;v=x*y*z;coutx=setw(2)x y=setw(2)y z=setw(2)zendl;return(v);3.5 函数重载允许功能相近的函数共同使用一个名字,这就是函数重载(function overload)。int add(int x,int y);float add(float x,float y);float add(float x,float y,float z);C+编译器根据函数之间形参的类型、个数或者顺序的不同,有

45、效地区分这些函数。说明 如果只是函数返回值的类型不同,这样的函数是无法重载的。只依靠普通形参和引用形参的差别,也是无法进行函数重载的。如果既有默认形参值,又有函数重载,应避免出现函数调用二义性的情况。例如:int add(int x,int y);int add(int x,int y,int z=1);3.6 函数模板程序员可以为功能相近、处理过程相同的一组函数,定义一个函数模板。发生实际的函数调用时,再生成具体的模板函数。template 类型 函数名(形参列表)变量声明语句 执行语句 函数模板计算两个数之和#include template/函数模板 T add(T x,T y)/求两数

46、之和,T是类型参数 T z;z=x+y;return(z);int main()int x1=1,y1(2);float x2=1.1,y2=2.2;cout两个整数之和:add(x1,y1)endl;cout两个浮点数之和:add(x2,y2)endl;cout两个长整数之和:add(x2,y2)endl;return(0);第4章 类与对象4.1 概述 4.2 类与对象的实现 4.3 对象的初始化和析构 4.4 类的包含 4.5 类模板4.1 概述结构化程序设计方法的基本思想是:自顶向下,逐步求精;按功能划分为若干个模块,模块本身还可以再做适当分解,形成树状结构;模块是单入口和单出口的,内

47、部都是由顺序、选择和循环三种基本控制结构组成。面向过程的程序的缺点 可重用性和可扩充性较差,维护代价高,数据的安全性也往往得不到有效的控制。程序开发的效率难以提高,程序的规模受到限制,严重影响了软件产业的发展。银行业务处理系统 1 typedef struct ACC long acc_id;/*帐号*/char name30;/*客户姓名*/float bal_mon;/*帐户余额*/float int_year;/*年利息*/int acc_type;/*帐户类型(现金、支票或贷款)*/account;问题结构化程序设计方法是围绕实现处理功能的过程来构造系统的,然而用户需求的变化基本上是针

48、对功能的。用户需求的变化往往造成系统结构的较大变化,从而需要花费很大代价,才能适应并实现这种变化。n假设根据业务发展的情况,需要增加公积金帐户,重新编写代码,修改对操作的处理过程,显然这会大大增加软件维护的代价。n如果银行开通网上银行业务,在编写操作过程的同时,由于要增加网络数据的处理,客户的银行帐户等相应的数据结构也必须随之调整,这又可能会对整个系统的操作带来新的影响。n由于对bal_mon数据项未做访问上的特别限制,使得帐户余额容易从外部被修改。面向对象程序设计 n 面向对象程序设计的出发点和基本原则,是使开发软件的方法与过程尽可能接近人们认识世界解决问题的模式,也就是使描述问题的问题空间

49、与解决问题的解空间,在结构上尽可能保持一致。n 面向对象程序设计方法是一种以对象为核心,以数据为主线,把数据和处理相结合的方法。对象是由数据和允许施加在数据上的操作所构成的统一体,自身就是进行处理的主体。n 面向对象程序设计方法对一些对象的共性加以抽象,形成类,每一个对象都属于一个特定的类。类定义了一组数据和一组方法,数据表达对象的状态信息,用于表示对象的静态属性;类中定义的方法,是允许施加于该类对象的操作,为该类对象所共享。n可以用一些简单类的对象构造出复杂的类,或者在原有类的基础上,派生出一个新的类。派生的类除了具有原有类的属性和行为之外,还可以添加新的属性和行为;n对原有类的某些行为,也

50、可以重新进行描述,有自己独特的表现形式,即多态性。银行业务处理系统 2 class account public:void acc_dep(float m);/存款 float acc_wit(float m);/取款 bool acc_tra(account&p,float m);/转帐 private:long acc_id;/帐号 char name30;/客户姓名 float bal_mon;/帐户余额 float int_year;/年利息 ;面向对象=对象+类+消息+继承+多态性1.对象 对象是构成系统的基本单位。对象由属性和行为组成,属性表示对象的性质,用来描述对象静态特征的数据

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(全套课件·《C++程序设计简明教程》1.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|