东华理工学学院计算机科学技术系本科生课程面向对象程序设计.ppt

上传人:本田雅阁 文档编号:2501760 上传时间:2019-04-04 格式:PPT 页数:118 大小:598.51KB
返回 下载 相关 举报
东华理工学学院计算机科学技术系本科生课程面向对象程序设计.ppt_第1页
第1页 / 共118页
东华理工学学院计算机科学技术系本科生课程面向对象程序设计.ppt_第2页
第2页 / 共118页
东华理工学学院计算机科学技术系本科生课程面向对象程序设计.ppt_第3页
第3页 / 共118页
亲,该文档总共118页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《东华理工学学院计算机科学技术系本科生课程面向对象程序设计.ppt》由会员分享,可在线阅读,更多相关《东华理工学学院计算机科学技术系本科生课程面向对象程序设计.ppt(118页珍藏版)》请在三一文库上搜索。

1、东华理工学学院计算机科学技术系 本科生课程 面向对象程序设计,主讲教师 蒋年德 辅导教师 艾菊梅 2006年2月5月,教学大纲,教学大纲 中央电大大纲,1C+程序设计语言教程 钱能 编著 清华大学出版社 2C程序设计 谭浩强 编著 清华大学出版社 3C语言程序设计 郑莉 董渊 傅仕星 编 清华大学出版社 4 Visual C+6技术内幕 美David J.Kruglinski 等著 希望图书创作室译 北京希望电子出版社,参考书,与面向对象理论的相关参考书目 1. 邵维忠, 杨芙清. 面向对象的系统分析. 北京: 清华大学出版社, 1998年12月 2.冯玉林,黄涛,倪彬. 对象技术导论. 北

2、京: 科学出版社, 1998年3月 * 3. 邵维忠, 廖钢城, 苏渭珍(译). 面向对象的设计. 北京: 北京大学出版社,1994年11月 4. 汪成为, 郑小军, 彭木昌. 面向对象的分析、设计及应用. 北京: 国防工业出版社, 1992年9月 5. 殷人昆, 田金兰, 马晓勤(译). 实用面向对象软件工程教程. 北京: 电子工业出版社, 1998年6月 6. 蔡希尧, 陈平. 面向对象技术. 西安: 西安电子科技大学出版社, 1993年11月 7. 徐家福, 王志坚, 翟成祥. 对象式程序设计语言. 南京: 南京大学出版社, 1992年12月 8. 邵维忠, 廖钢城, 李力(译). 面向

3、对象的分析. 北京: 北京大学出版社,1992年2月,9. Booch G. Object-Oriented Analysis and Design With Applications, 2nd ed. Redwood City, California: enjamin/ Cummings Publishing Company, 1994 10. Coad P and Yourdon E. Object-Oriented Analysis, 2nd ed. Englewood Cliffs, NJ: Prentice-Hall, 1991 11. Coad P and Yourdon E. O

4、bject-Oriented Design. Englewood Cliffs, NJ: Prentice-Hall, 1991 12. Jacobson I. Object-Oriented Software Engineering, A Use Case Driven Approach. New York: Addison-Wesley Publishing Company, 1992 13. Rumbaugh J, Blaha M, Premerlani W et al. Object-Oriented Modeling and Design. Englewood Cliffs, NJ:

5、 Prentice-Hall, 1991,1. 邵维忠, 杨芙清. 面向对象的系统分析. 北京: 清华大学出版社, 1998年12月(建议购买,本系) 3. 邵维忠, 廖钢城, 苏渭珍(译). 面向对象的设计. 北京: 北京大学出版社,1994年11月(可到系图书室借阅,教材科有售) 6. 蔡希尧, 陈平. 面向对象技术. 西安: 西安电子科技大学出版社, 1993年11月(提供印页) 2.冯玉林,黄涛,倪彬. 对象技术导论. 北京: 科学出版社, 1998年3月(建议购买),相关参考书与面向对象内容的关系,1、基本知识 2、面向对象的分析 3、面向对象的设计 4、面向对象的程序设计 6、面向

6、对象的数据库系统 7、分布对象技术,课程安排,总学时:60学时 其中上课40学时,实验20学时 鼓励提问、讨论 作业:每布置后的下周一交作业 最后成绩比例: 考试:70% 平时:30%(其中考勤占15%,作 业和实验占15%),如何学习面向对象技术(1),面向对象技术的概念和方法,本质上是一种合理的思维方法,是不依赖于程序设计语言的应用软件开发的基本核心技术。因此要掌握面向对象编程,首先应该学习面向对象技术的基本要点。越是深入理解面向对象技术的理论和方法,就越能让您在自己在应用领域中最大限度地发挥思维能力和创造能力,就能掌握各种面向对象软件设计的各种语言。,如何学习面向对象技术(1),面向对象

7、设计方法追求的是现实问题空间与软件系统解空间的近似和直接模拟。现实世界空间中的基本问题是物质和意识,映射到面向对象系统解空间就是具体事物(对象)和抽象类概念(类)。面向对象技术的封装、继承、多态性等不仅支持软件利用,而且使软件维护可靠有效,可实现软件系统的柔性制造。,如何学习面向对象技术(1),面向对象语言对程序设计的主要影响并不在于它的语法特征,而在于它所提供的自然问题求解的机制和结构。面向对象编程(OOP)将计算过程看做是分类过程加状态变换过程,即将系统逐步划分为相互联系的多个对象并建立这些对象的联系,以引发状态转换,实现系统计算任务。因此,要理解面向对象语言,应首先理解面向对象技术的基本

8、原理和基本概念,然后再学习此类语言。,第一章 C+编程基础,计算机语言的发展,第一阶段:低级语言(计算机诞生开始),举例: 汇编语言 机器语言 mov eax, DWORD PTR a_$ebp 8b 45 fc mov ecx, DWORD PTR b_$ebp 8b 4d f8 add ecx, ecx 03 c9 sub eax, ecx 2b c1 inc eax 40 mov DWORD PTR a_$ebp, eax 89 45 fc 以上指令实现运算 a=a-2b+1 特点: 1.适用于计算机专业人员,追求编制技巧和代码短小; 2.实现简单计算和设备驱动。 3.依赖于计算机硬件,

9、程序的可读性和可移植性差,汇编语言与机器语言的特点,第二阶段 高级语言 出现了诸如FORTRAN、BASIC等高级语言,但一般高级语言难以实现汇编语言的某些功能,C语言的出现解决了这一问题,它集高级语言和低级语言的特性于一身。但是C是一种过程化语言,已经不适合现代软件开发的需要,后来,在C的基础上出现了面向对象的C+。,C+语言的发展过程,原型ALGO60,剑桥大学 ALGOL语言是一种嵌套结构的面向过程的程序设计语言, 它是ALGORITHMIC LANGUAGE(算法语言)的缩写。故适合于描述数值计算的过程,与习惯的数学表达形式较接近。 ALGOL语言是国内广泛流行的一种程序设计语言。 A

10、LGOL语言的源程序结构可分为四个部分:开始部分、说明部分、语句部分和结束部分。,C+语言的发展过程,1963年,剑桥大学将ALGOL 60语言发展成为CPL(Combined Programming Language)语言。 1967年,剑桥大学的Matin Richards 对CPL语言进行了简化,于是产生了BCPL语言。 1970年,美国贝尔实验室的Ken Thompson将BCPL进行了修改,并为它起了一个有趣的名字“B语言”。意思是将CPL语言煮干,提炼出它的精华。并且他用B语言写了第一个UNIX操作系统。,C+语言的发展过程,1973年,B语言也给人“煮”了一下,美国贝尔实验室的D

11、.M.RITCHIE在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。 为了使UNIX操作系统推广,1977年Dennis M.Ritchie 发表了不依赖于具体机器系统的C语言编译文本可移植的C语言编译程序。 1978年Brian W.Kernighian和Dennis M.Ritchie出版了名著The C Programming Language,从而使C语言成为目前世界上流行最广泛的高级程序设计语言。,C+语言的发展过程,1988年,随着微型计算机的日益普及,出现了许多C语言版本。由于没有统一的标准,使得这些C语言之间出现了一些不一致

12、的地方。为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准,成为现行的C语言标准 3.C语言的主要特点,C+语言的发展过程,C+是一种面向对象的编程语言. C#是Microsoft公司设计的一种编程语言。它松散地基于C/C+,并且有很多方面和Java类似。Microsoft是这样描述C#的:“C#是从C和C+派生来的一种简单、现代、面向对象和类型安全的编程语言。,程序的开发过程,开始,程序设计,程序编辑,程序编译,通过,程序连接,通过,程序运行,正确,结束,重新修改原程序,产生*.cpp的源文件,产生*.obj的目标文件,产生*.exe的可执行程序,N,N,N,Y,

13、Y,Y,C+语言概述,讨论C+语言的基本程序结构、学习方法与编程规范等,进入,开发环境简介,主要向同学们介绍Visual C+的使用环境 这部分希望大家认真学习,这是我们后面做实验的基础。,进入,一、C+的基本数据类型 二、变量的赋值与运算,C+的数据类型与运算,C+的基本数据类型,C+数据类型概述 整型数据 实型数据 字符型数据 枚举常量 常量与变量定义 定义类型,C+数据类型概述,数据类型,基本数据类型,非基本数据类型,整型 int,字符型,实型,逻辑型 bool,单字符型 char,宽字符型 w_char,单精度型 float,双精度型 double,数组 type ,指针 type *

14、,空类型 void,结构 struct,联合 union,枚举 enum,类 class,常量与变量,常量: 在程序的运行过程中,值不能被改变。 变量: 在程序的运行过程中,值可以被改变。,整型数据,整型常量 整型变量,整形常量,C+中的整型常量可用三种形式表示: 1、十进制整数。如56,378,0等。,2、八进制整数。 表示时在整数前加0。 如0452,056。 八进制数与十进制数之间的换算关系 (635) 8=682 + 38 + 5 = 541,3、 十六进制整数。 表示时在整数前加0x。 如0x254,0xAC32,0x64B46 等。 十六进制数用 0,1,2,3,4,5,6,7,8

15、,9,A,B,C,D,E,F表示。 十六进制数与十进制数的换算关系 (7A6)16 7162 + A16 + 6 = 1958,整型变量:,整数在存储单元中的存储情况:(以DOS为例),1、 int a,b /*指定a,b为整型*/ 可进行如下赋值运算: a=3;b=5;a=b+4;a=a+10; 2、 short a,b /*指定a,b为短整型*/ 3、 long a,b /*指定a,b为长整型*/ 4、 unsigned int a,b /*指定a,b为无符号型*/ 在只能用正整数数时使用。注意不能给这种变量负数 5、 unsigned short a,b /*指定a,b为无符号短整型 *

16、/ 6、 unsigned long a,b /*指定a,b为无符号长整型*/ 不同种类的整型数据间可以进行算术运算。,整型变量的分类与定义,实型数据,实型常量 实型变量,实型常量,实型常量有两种表示形式: 1、 十进制形式。 如123.456,89.3等。 2、 指数形式。 如123104 可写成123e4或123E4。,实型变量,实型变量分单精度(float,占4个字节)和双精度(double,占8个字节)。 1、float a,b; 可进行如下赋值运算: a=3.45; b=89.32; a=a+46.23; 2、double a,b;,字符型数据,字符常量 字符变量 字符串常量,字符常

17、量,字符常量要用单引号括起来,如: a表示字符常量a; ¥表示字符常量¥;,字符变量,字符型变量用来存放字符常量且只能存放一个字符常量,定义形式如下: char c1,c2; /*定义a,b为字符型变量*/ 可进行如下运算: c1=d; c2=c; /*c1表示字符常量d,c2表示字符常量c*/,字符数据在内存中的存储形式,字符数据在内存中是以整数的形式存储的,所以单字符可以与整数混合运算。例如: char c1,c2,c3; int t1,t2; c1=97; c2=c1+1; c3=c1-32; t1=c1; t2=c2;,字符串常量,字符串常量就是用一对双引号括起来的字符序列。如: “t

18、singhua university”, “a”, “china”。,系统在每一个字符串常量最后都自动加有一个字符串结束符号0,该字符占用一个字符的存储空间,但不可见。例: “china” 在内存中的存储形式为,字符串常量与字符常量的区别,又如:a与“a”的不同之处在于: a的存储形式为 “a”的存储形式为,枚举常量,当一个变量只有几种可能的值,可以定义为枚举类型。枚举类型就是将变量的值一一列举出来,变量的值只限于列举出来的内容。如下便是一个枚举类型的定义: enum weekday sun,mon,tue,wed,thu,fri,sat; enum weekday workday,week_

19、end;,#include typedef enum sun,mon,tue,wed,thu,fri,sat week; /定义一个枚举类型 main() week workday; workday=(week)4; /枚举类型值从0开始 /整数必须强制类型转换 printf(“workday=%s“,workday); printf(“workday=%d“,workday); return 0; ,常量定义,在C+中,如果想让变量的内容自初始化后一直保持不变,可以定义一个常量: const int a=10; const float f=4.5; const char c=a; 定义常量时

20、必须初始化。 C+允许define定义常量,这时为了兼容C,而在C+中常量定义都用const,不用#define。,常量名不能放在赋值语句左边,如: const int a; a=10; /error 常量定义中,初始化的值可以是一个常量表达式,如: const int a=100*3+5; 但该常量表达式中不能出现函数调用: const int a=max(3,5); /error,常量定义中应注意的问题,变量定义,变量命名规则: (1)不能是C+关键字,不要与C+中的库函数名、类名和对像名相同。 (2)变量名由字母、数字和下划线组成,不能以数字开头,中间不能有空格。 (3) C+区分大小写

21、。 (4)采用英文单词,不用中文拼音。 (5)变量用小写字母开头,宏和常量用大写。 (6)类的名称一般用C开头。 (7)尽量使用系统提供的名称。 (8)尽量形成自己的一套风格。,变量定义时可以加前缀,前缀意义如下: p: 指针 s: 字符串 sz: 以0终止的字符串 msg: 消息 fn: 函数 c: 8位的字符 b: 布尔量 by: 无符号字符 u: 无符号整数 w: 无符号整数或整数 dw: 无符号长整数 l: 长整数 h: 句柄 n: 整数,例如: pBrush,nColor, lnumber,定义类型,用typedef定义新的类型名来代替已有的类型名,这样有利于程序的维护。 例如: t

22、ypedef int integer; int a,b; integer a,b;,变量的赋值与运算,运算符 混合运算中的类型转换 优先级与结合性 溢出 求值次序与副作用,运算符,算术运算符 (加法运算符) (减法运算符) *(乘法运算符) d. /(除法运算符,两数相除取整) e. (模运算符,两数相除取余) 在多数机器上,对于“/”运算,若相除结果为负,则向零取整,(使变量加1) , (使变量减1) 例如: i+ /相当于i=i+1 i- /相当于i=i-1 注意:(1).运算符(+)和()只能用于变量,不能用于常量和表达式,如5+和(a+b)+都不合法。 区别:i+,i- /*在使用i之

23、后使i的值增或减1*/ +i,-i /*在使用i之前使i的值增或减1*/,自增、自减运算符,(1). #include main() int i,j,k; i=3; j=i+; i-; k=+i; printf(“j=%d,k=%d“,j,k); return 0; 运行结果为:j=3,k=4。,例如,赋值运算,赋值符号“”就是赋值运算符。 允许以下情况: (1). a=3; (2). a=b=c=5 /a,b,c均为5 (3). a=5+(c=6) /a为11,c为6 在赋值符“”前加上其它运算符,可构成复合的赋值运算符: a+=3 等价于 a=a+3 注意:x *= y+8 等价于x=x*

24、(y+8),不等价于 x = x*y+8,求字节数运算符,求字节数运算符: sizeof 例如: 求int型数据所占的字节数: sizeofint=sizeof(int) 课后练习: 分别求出自己机器上各种数据类型所占的字节数。,强制类型转换运算符,强制类型转换的一般形式为: (类型名)(表达式) 例如:(float)a /*将a强制转换为float型*/ (int)(x+y) /*将(x+y)强制转换为int 型*/ (int)x+y /*将x转换为int型后再与y相加*/ 强制类型转换只是得到一个所需类型的中间变量,原来变量的类型并不发生变化。,#include main() float

25、x; int xi; x=4.5; xi=(int)x; printf(“x类型转换后产生的中间变量值为%d, 而x的值仍为%f.n“,xi,x); return 0; 运行结果为:x类型转换后产生的中间变量值为4,而x的值仍为4.5。,例如:,条件运算符,条件运算符: ? : 例如:max=(ab)? a:b 如果ab,把a的值赋给max;否则,把b的值赋给max。,逗号运算符,一般形式是: 表达式1,表达式2,表达式n 求解顺序为从左至右,整个逗号表达式的值是表达式n的值。 如: a=(3+2,6*4,7-4), /a的值为3 逗号运算符在整个运算符中级别最低。,位运算,(位右移) (位取

26、反) |(按位或) (按位异或) &(按位与),混合运算时数据类型转换,char,short,int,long int,unsigned long,unsigned int,unsigned short,unsigned char,float,double,long double,溢出,各种数据类型都有其数据范围,当数据超出这个范围时就会发生溢出,数据溢出不会引起编译错误,但是会使运行结果发生偏差。例如以下程序:,int a=9999999999; int b=9999999999; cout“a*b=“a*bendl;,在windows环境下运行结果为: a*b=-1158137855,求值

27、次序与副作用,对于复合表达式来说,不同的编译器求值的次序会不同,例如下例: int a=3,b=5; C=a*b+ +b; D=+b*(a+b); E=(a=4)+b; 当求值顺序不同时,运算的结果会有所不同。 这样的程序不提倡,在编程时最好将复合表达式写成几个简单表达式。,C+程序设计,数据的传输 C程序结构 逻辑运算与条件控制 循环控制,数据的传输,标准C的输出 标准C的输入 C+的控制台操作,标准C的输出,C语言本身不提供输入输出语句,输入和输出操作是由C的标准类库中提供的函数来实现的,使用时将用户程序与标准文件相连接。 在使用标准输入输出库函数时,要用预编译命令“#include”将“

28、stdio.h”文件包括到用户源文件中。即 #include,printf函数是向终端输出若干个任意类型的数据。 printf函数的一般格式为:printf(“格式控制”,输出表列) 格式控制由普通字符和格式说明组成,普通字符照原样输出,格式说明由“”和格式字符组成,其作用是指定输出数据的格式。,printf函数(格式输出函数),#include main( ) int a; a=67; printf(“以数字形式输出,a=%d;n以字符形式输 出,a=%cn“,a,a); return 0; ,运行结果为: 以数字形式输出,a=67; 以字符形式输出,a=C,例如:,标准C的输入,scanf

29、可以用来输入任何类型的多个数据。 例如: #include main( ) int a,b,c; scanf(“%d%d%d“, ,运行: 输入:1 2 3(输入数据时两个数据之间可以用空格、回车、tab键隔开) 输出:1,2,3,C+的控制台操作,C除了stdio以外,还为面向对像程序设计了一套相当方便的I/O,其定义在iostream.h中。 cout 标准输出 cin 标准输入 两个运算符: 输入运算符,#include void main( ) char name20; int age; coutname; coutage; cout”your name is :”name endl;

30、 cout”you are”age ”years old” endl; ,例如:,C+的常用控制符,设置值的输出宽度,#include #include void main() float amount=3.14159; coutsetw(4)amountendl; coutsetw(8)amountendl; coutsetw(12)amountendl; ,3.14159 _3.14159 _ _ _ _ _3.14159,运行结果,八进制与十六进制输出,int number=1000; cout“decimal:“decnumberendl; cout“hexadecimal:“hexn

31、umberendl; cout“octal:“octnumberendl; couthex; cout123endl; cout234endl; cout345endl; coutdec;,decimal:1000 hexadecimal:3e8 octal:1750 7b ea 159,运行结果,设置填充字符,coutsetfill(*); coutsetw(2)10endl; coutsetw(10)10endl;,10 *10,运行结果为:,C程序结构,程序设计采用结构化程序设计方法,结构化程序由若干个基本结构组成,C有三种基本结构如下:,程序的三种结构,C程序的基本结构,顺序结构,选择

32、结构,循环结构,如图: 先执行A,再执行B。,顺序结构,A,B,如图: 左图,条件成立,执行A,条件不成立,执行B。 右图,分情况讨论,不同的情况执行不同的语句。,选择结构,A,B,P,真,假,分情况,情况1,语句1,情况n,语句n,左图:当条件成立时,反复执行A,当条件不成立时,跳出循环。 右图:先执行A,再判断条件P,若条件不成立,反复执行A,直到条件成立,跳出循环体。,循环结构,P,A,真,假,P,A,真,假,逻辑运算和条件控制,关系运算 逻辑运算 单分支选择语句 多分支选择语句,关系运算,C中提供六种关系运算符:, =, ,=的优先级相同且高于=和!=,=和!=的优先级相同。 (2).

33、关系运算符的优先级低于算术运算符。 (3).关系运算符的优先级高于赋值运算符。,用关系运算符将两个表达式连接起来的式子称为关系表达式。关系表达式的值是“真”或“假”,C中以1代表真,以0代表假。 例如: “53”的值为0, “50”的值为1。,逻辑运算,C中提供三种逻辑运算符: (1).& 逻辑与。 (2).| 逻辑或 (3).! 逻辑非。,(1).“!”的优先级最高,其次为“&”,“|”的优先级最低。 (2).“!”的优先级高于算术运算符,“&”和“|”的优先级低于关系运算符。,优先级关系,系统在给出逻辑运算结果时,以1代表真,以0代表假;而在参加逻辑运算的运算对象中,以0代表假,以非0(不

34、一定是1)代表真。,例如: (a).若a=4,则!a=0 (b).若a=3,b=0,则a|b的值为1,a&b的值为0。,(c).表达式c|84-!0 c|83 c|0 表达式的值为1 (c=!0),注意:在逻辑运算中,并不是所有的逻辑运算符都被执行,只有在必须执行下一个运算符后才能得出表达式的值时,才执行该运算符。,例如: a&b&c, 只有当a为真时,才依次判断b和c,当a为0时可直接得到表达式的值为0,系统不会再继续判断表达式b和c。,如以下程序: #include main( ) int a=0,b=1,c=1,d; d=a ,运行结果为: a=0 b=1 c=2 d=1,单分支控制语句

35、,根据所给条件是否满足的情况来决定执行两种不同的操作。 它的实现语句用if语句,if语句的一般形式为: if(表达式) 语句体1; else 语句体2;,#include main( ) int a=0,b=0; couta; if (a=0) b+; cout0时,b=“0时执行的操作 else b-; cout“当a0时,b=“bendl; /a0时执行的操作 return 0; ,例如:,(1).if(表达式) 语句; (2).if(表达式)语句1;else 语句2; (3).if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式3) 语句3; else

36、 if(表达式n-1) 语句n-1; else 语句n;,if语句有三种形式,一般形式如下: if ( ) if( ) 语句1 else 语句2 else if( ) 语句3 else 语句4,if 语句可以嵌套使用,下列程序的哪些改法是正确的? #include main( ) int x,y; cinx; if(x0) y=-1; else if(x=0) y=0; else y=1; cout“当x=“x“时,y=“yendl; return 0; ,例1,改法1. if语句改为: if (x=0) if(x0) y=1; else y=0; else y=-1;,改法2. if语句改为

37、: y=-1; if (x!=0) if (x0) y=1; else y=0;,改法3. if 语句改为: y=0; if(x=0) if(x0) y=1; else y=-1;,#include main( ) int a; couta; if(a) cout“该整数不为0“endl; else cout“该整数为0“endl; return 0; ,例2,多分支选择语句,switch语句也是条件选择语句,与if语句不同的是,if语句只提供两个可供选择的分支,而switch语句可以提供多条选择分支。,它的一般形式为: switch(表达式) case 常量表达式1:语句1 case 常量表

38、达式2:语句2 case 常量表达式n:语句n default : 语句n+1; ,当switch表达式和某个case常量表达式的值相同时,就从该case表达式开始向后执行。,int result=0; switch(ope) case +: result=v1+v2; case -: result=v1-v2; case *: result=v1*v2; case /: result=v1/v2; default: cout“operator is wrong!“endl; ,当ope=-时,打印结果为 operator is wrong!,例如:,若要使switch语句只执行一个分支,可以

39、在case语句后加一个break语句来达到此目的。上面例子可以改为:,int result=0; switch(ope) case +: result=v1+v2; break; case -: result=v1-v2; break; case *: result=v1*v2; break; case /: result=v1/v2; break; default: cout“operator is wrong!“endl; ,循环控制,在C+中可以用以下语句来实现循环: 1用while语句; 2用do-while语句; 3用for语句; 4. break和continue语句,while语

40、句,一般形式如下: while(表达式) 语句,例如: 计算整数110的和 #include main( ) int i,sum; i=1;sum=0; while(i=10) sum=sum+i; i+; cout“整数110的和为:“ sumendl; return 0; ,do-while语句,一般形式为: do 语句 while(表达式) 先执行一次语句,再判断表达式是否成立,若表达式的值为非0,返回再执行do后的语句;若表达式的值为0,结束循环。,例1: 计算整数110的和,#include main( ) int i,sum; i=1;sum=0; do sum=sum+i; i+

41、; while(i=10); cout“整数110的和为:“ sumendl; return 0; ,(1) #include main( ) int i; i=1; while(i10) i+; cout“i=“iendl; return 0; ,结果:i=1,例2:比较下列两个程序的结果,(2) #include main( ) int i; i=1; do i+; while(i10); cout“i=“iendl; return 0; ,结果:I=2,注意:对于do-while语句,不管表达式是否成立,都会先执行一次循环体。,for语句,for语句是C中使用最灵活的循环语句,它不仅可以

42、用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况。 for语句的一般形式为: for(表达式1;表达式2;表达式3) 语句,#include main( ) int i,sum; for(i=1,sum=0;i=10;i+) sum=sum+i; cout“整数110的和为:“ sumendl; return 0; ,例如:,(2)、表达式1和表达式3可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其它表达式,如 for(sum=0,i=1;i=10;sum=sum+i,i+);,(3)、表达式2一般是关系表达式,但也可以是其它表达式,只要它的值非0

43、,就执行循环体。例如: for(i=1;(c=getchar()!=n);i+=c);,(1)三个表达式均可省略,break语句和continue语句,break语句用来跳出循环体,continue语句用来结束本次循环。,#include main( ) int i; for(i=0;i4;i+) if (i=2) break; else cout“i=“iendl; cout“*“endl; return 0; ,运行结果为: I=0 I=1 *,例1,#include main( ) int i; for(i=0;i4;i+) if (i=2) continue; else cout“i=“endl; cout“*“endl; ,例2,运行结果为: I=0 I=1 I=3 *,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1