c《面向对象程序设计》第三章-2011.ppt
《c《面向对象程序设计》第三章-2011.ppt》由会员分享,可在线阅读,更多相关《c《面向对象程序设计》第三章-2011.ppt(100页珍藏版)》请在三一文库上搜索。
1、2019/2/21,北京科技大学计算机系,-1-,C+大学基础教程,第3章 C+控制语句 北京科技大学计算机系,2019/2/21,北京科技大学计算机系,-2-,用计算机解决实际问题,首先要分析问题,设计合适的算法,然后编程实现算法。,2019/2/21,北京科技大学计算机系,-3-,第3章 过程化语句,3.0 算法的基本控制结构: 算法,基本控制结构,基本控制语句 3.1 顺序结构程序设计 3.2 if选择语句 语句格式,IF嵌套,考点说明 3.3 switch选择语句 语句格式和执行顺序,例子,考点说明 3.4 循环语句 使用场合,基本概念,格式 转向语句 3.5 循环嵌套 国际象棋,例2
2、 3.6 应用举例 素数,按位翻转,小球落地(不要求), 小牛家族,最大公约数,阶乘 课堂练习,总结和作业,2019/2/21,北京科技大学计算机系,-4-,算法,什么是算法 为解决某一应用问题而采用的解题步骤 算法 1、计算机执行的操作 2、这些操作的顺序,2019/2/21,北京科技大学计算机系,-5-,算法,算法的描述方式 用自然语言描述算法 用流程图描述算法 用N-S结构图描述算法,例如:输出两个数中的最大数,2019/2/21,北京科技大学计算机系,-6-,用自然语言描述算法,第一步:输入x和y的值 第二步:比较x和y的值,如果x大于y,则输出x的值,否则输出y的值。,易于理解,但冗
3、长,不够精确,难于描述复杂算法。,例如当描述“输出10个数中最大数”的算法时,会冗长、难于理解,2019/2/21,北京科技大学计算机系,-7-,用流程图描述算法,用流程图描述算法,起止框,输入/输出框,判断框,处理框,流程线,2019/2/21,北京科技大学计算机系,-8-,3.1 算法的基本控制结构,流程图 开始/结束 执行 判断 联系,2019/2/21,北京科技大学计算机系,-9-,用N-S结构图描述算法,用N-S结构图描述的算法,2019/2/21,北京科技大学计算机系,-10-,3.1 算法的基本控制结构,程序的三种基本控制结构 小结 (1)顺序结构 (2)选择结构 (3)循环结构
4、,已经证明,任何复杂的问题都可以三种基本算法结构来描述:顺序、选择、循环。因此用计算机语句描述的程序也包含三种基本结构。,2019/2/21,北京科技大学计算机系,-11-,顺序结构流程图,A,B,A,B可以是一条语句,也可以是一条复合语句,,C+中默认的语句执行次序为:顺序执行。,2019/2/21,北京科技大学计算机系,-12-,分支结构流程图,2019/2/21,北京科技大学计算机系,-13-,循环结构流程图,2019/2/21,北京科技大学计算机系,-14-,总结 以上三种结构有以下的共同特点: ) 只有一个入口。 ) 只有一个出口。 ) 结构内的每一个部分都有机会被执行到 ) 结构内
5、不存在死循环。,2019/2/21,北京科技大学计算机系,-15-,3.1 算法的基本控制结构,流程控制语句 选择语句:ifelse、switch 选择结构 循环语句: while、for 、dowhile 循环结构 转向语句:break、continue,2019/2/21,北京科技大学计算机系,-16-,顺序结构程序是按照语句的先后顺序依次执行。一般而言,顺序结构的算法中应包括几个基本操作步骤。各操作步骤的逻辑顺序关系如图3-1所示。,图3-1 顺序程序的一般算法,2019/2/21,北京科技大学计算机系,-17-,【例3-2】数据交换。从键盘输入x、y的值,输出交换以后的值。,#incl
6、ude using namespace std; int main( ) int x,y,c; cout xy; cout “n“before exchange: x=“x“ y=“yendl; c=x; x=y; y=c; cout “n“after exchange: x=“x“ y=“yendl; return 0; ,2019/2/21,北京科技大学计算机系,-18-,1. 简单分支(无else分支) if (表达式) 语句 例:if (xy) coutb) c=a;a=b;b=c; 2. 双分支 if (表达式) 语句1 else 语句2 例:if (a=b) couta; else
7、 coutb; 3. 多分支 if (表达式1) 语句1 else if (表达式2) 语句2 else if (表达式3) 语句3 else 语句 n,if 语句 三种形式,1条内嵌语句,表达式是逻辑表达式,例子:闰年,2019/2/21,北京科技大学计算机系,-19-,例子,任意输入一个4位整数的年份,判断该年是否是闰年?,闰年的条件: 能够被4整除,但不能被100整除的年份 能够被4整除,同时也能被400整除的年份,是指年份能被4整除的那些年,但不包括能被100整除而不能被400整除的年,if (year % 4 = 0 & year % 100 != 0) |(year % 400 =
8、 0),if (year % 4=0) & !(year %100 = 0) & (year % 400!=0),2019/2/21,北京科技大学计算机系,-20-,#include using namespace std; void main() int year; cinyear; if (year % 4 = 0 ,2019/2/21,北京科技大学计算机系,-21-,2019/2/21,北京科技大学计算机系,-22-,例子:输出学生的成绩,#include using namespace std; void main() int x; cinx; if(x=90) cout=80) co
9、ut=60) cout“合格”endl; else cout“不及格”endl; ,2019/2/21,北京科技大学计算机系,-23-,3.2 if选择语句,4、if 语句的嵌套,if (表达式1) if (表达式2) 语句1 else 语句2 else if (表达式3) 语句3 else 语句4,2019/2/21,北京科技大学计算机系,-24-,2019/2/21,北京科技大学计算机系,-25-,例子:输出a,b,c中最大的数,#include using namespace std; void main() int a,b,c; cinabc; if (ab) if (bc) cout
10、cendl; else coutbendl; else if (ac) coutcendl; else coutaendl; ,cout (ab?(bc?c:b):(ac?c:a ) );,演示,2019/2/21,北京科技大学计算机系,-26-,1.内嵌语句只能是一条语句。 eg. a,b,c的值分别为1,2,3 if(a+b) c=a; a=b;b=c; c=3; a=2;b=3;,考点注意:,c=3;a=2;b=2;,2019/2/21,北京科技大学计算机系,-27-,2.条件表达式是逻辑值,但可以使用任何类型的表达式,结果非0为真,结果0为假。 思考执行下面语句后,变量b的值是多少?
11、a = 10; b = 30; if (a = 0) b = 15; else b = 20 ; if (a = 1) b = 15; else b = 20 ; if (a = 1) b = 15; else b = 20 ; 注意: 赋值表达式 a = 1与关系表达式 a = = 1 的区别。 表达式的值为0时语句的执行情况。,注意:,2019/2/21,北京科技大学计算机系,-28-,3.2 if选择语句,3 注意:二义性(出现嵌套) int x=-1; if (x0) if (x50) cout“x is 50”endl; else cout“x is =0”endl;,if和else
12、的对应关系,else总是与离它最近的if匹配。,2019/2/21,北京科技大学计算机系,-29-,说明:C+规定,在if嵌套时,else总是与最近的if配对 eg. if (b1) if (b2) x=1; else x=2; if (b1) if (b2) x=1; else x=2; if (b1) if (b2) x=1; else x=2; 如果内嵌的if是简单分支,没有else子句(即if和else的数目不一样),必须用 将其括起,2019/2/21,北京科技大学计算机系,-30-, if (c=50) cout 150n“; if (c=50) cout “ 50=c=100n“
13、; else cout “ c50n“;,例如:, if (c=50) cout “50=c=100n“;,与哪个if 配对?,2019/2/21,北京科技大学计算机系,-31-,再例如:,if(ab) /1 if(ac) /2 if(ad) flag=1; /3 else flag=2; /4 else flag=3; /5,问题:第4 行和第5 行的 else 和哪一个 if 相匹配? 分析:匹配方案可以有很多种:(2-4,1-5)、(3-4, 2-5),(1-4,),匹配规则:在嵌套的ifelse语句中,else总是与上面的、离它最近的、在同一复合语句中还没有配对的if配对。,2019/
14、2/21,北京科技大学计算机系,-32-,等价于:, if (ab) if (ac) if (ad) flag=1; else flag=2; else flag=3;, if (ab) if (ac) if (ad) flag=1; else flag=2; else flag=3;,flag=3的条件:,flag=3 的条件:,当 cab 时,当 a b 时,2019/2/21,北京科技大学计算机系,-33-,一般形式 switch (表达式) case 常量表达式 1:语句1 case 常量表达式 2:语句2 case 常量表达式 n:语句n default : 语句n+1 ,switc
15、h 语句,执行顺序 以case中的常量表达式值为入口标号,由此开始顺序执行。因此,每个独立的case分支最后应该加break语句,跳出整个switch语句。,2019/2/21,北京科技大学计算机系,-34-,2019/2/21,北京科技大学计算机系,-35-,例子:输出学生的成绩,int x; cinx; switch(x/10) case 10: case 9:cout“优秀”endl; break; case 8: cout“良好”endl; break; case 7: case 6: cout“合格”endl; break; default: cout“不及格”endl; ,2019
16、/2/21,北京科技大学计算机系,-36-,使用switch语句应注意的问题,case分支可包含多个语句,且不用 。 表达式、常量表达式值都是int型或char型。 若干分支执行内容相同可共用一组语句。 Break退出switch结构,2019/2/21,北京科技大学计算机系,-37-,例子,k=23,int v1=0,v2=0,v3=0,v4=0,k; cin k; switch(k) default:v4+; case 1:v1+; case 2:v3+; case 3:v2+; ,v1=1, v2=1, v3=1, v4=1,2019/2/21,北京科技大学计算机系,-38-,问题1:如
17、何根据收入,确定一个人的纳税比例及纳税额?,当一个公司有多名员工时,如何计算每个人的纳税比例及纳税额?,提出问题:,C+语言:循环语句,?,?,问题2 :如何根据学生的分数判断是否及格?,如何根据全班学生的分数,分别判断他们是否及格?,2019/2/21,北京科技大学计算机系,-39-,#include #include using namespace std; void main() coutsetfill(*) setw(2)n setw(3)n setw(4)n setw(5)n setw(6)n setw(7)n setw(8)n; ,* * * * * * *,2019/2/21,北
18、京科技大学计算机系,-40-,#include #include using namespace std; void main() int i=2; coutsetfill(*); while( ) coutsetw( )n; ,* * * * * * *,循环变量,循环体,循环控制条件,i=8,i,i+;,2019/2/21,北京科技大学计算机系,-41-,3.4 循环语句,主要包括3个部分: 1、循环控制条件: 判断循环操作是否进行的条件; 2、循环体: 重复进行的操作; 3、循环控制变量: 记录循环体执行的次数,或控制循环的结束条件。,2019/2/21,北京科技大学计算机系,-42-,
19、3.4 循环语句,三种基本语法 1、 while 语句 格式和顺序,例子 2、 dowhile 语句格式和顺序,对比,例子 3、 for 语句 格式和顺序,例子,说明 三种语句的应用区别,2019/2/21,北京科技大学计算机系,-43-,3.4 循环语句,while循环语句,while(表达式) 循环体语句;,2019/2/21,北京科技大学计算机系,-44-,例1:编程循环输出1-9这9个数字?,#include using namespace std; void main() int i=1; while ( ) cout“循环结束”endl; ,运行结果: 1 2 3 4 5 6 7
20、8 9 循环结束,i=9,coutiendl; i+;,2019/2/21,北京科技大学计算机系,-45-,例2:编程计算1+3+5+.+99的值,#include using namespace std; void main() int sum=0,i=1; while( ) coutsumendl; ,2500,sum+=i; i+=2;,i=99,2019/2/21,北京科技大学计算机系,-46-,注意:,如果while的 (表达式) 值为0,则循环体一次也不执行 (例如当i的初值=100) 。 在循环体中必须有使循环趋向结束的操作,否则循环将无限进行(死循环)。 在循环体中,语句的先后
21、位置必须符合逻辑,否则会影响运算结果。,思考程序段的输出? while (i=99) i+=2; sum=sum+i; ,运行后,输出: sum=2600 原因是什么?,2019/2/21,北京科技大学计算机系,-47-,其他的while 语句形式,while (0) 由于表达式恒等于0,所以循环体永远也不会执行,是一个逻辑错误的语句,while (1) 由于表达式恒等于1,所以不可能通过循环控制条件来结束循环体的执行,即死循环。 为了保证循环正常运行,应该特别注意: 循环控制条件的描述 控制条件的初始状态(初始值) 循环体内部对控制条件的影响,2019/2/21,北京科技大学计算机系,-48
22、-,例3:打印可视字符,#include using namespace std; void main() unsigned char ch=32; while(ch128) cout(int)chtcht; ch+; ,2019/2/21,北京科技大学计算机系,-49-,例4:编程计算 的值,#include using namespace std; void main() int k=1,sum=0,n; cout0):“; cinn; while( ) if(n0) coutsum/nendl; else cout“n不能=0“endl; ,k=n,sum=sum+k*k; k+;,20
23、19/2/21,北京科技大学计算机系,-50-,3.4 循环语句,dowhile循环语句,do 循环体语句; while(表达式);,2019/2/21,北京科技大学计算机系,-51-,do-while 语句,执行顺序 先执行循环体语句,后判断条件。 表达式为 true 时,继续执行循环体 与while 语句的比较: do-while语句至少执行循环体一次; While语句有可能一次也不执行循环体,2019/2/21,北京科技大学计算机系,-52-,对比下列程序:,程序1: #include void main( ) int i, sum(0); cini; while(i=10) sum+=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向对象程序设计 面向 对象 程序设计 第三 2011
链接地址:https://www.31doc.com/p-2142254.html