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

链接地址:https://www.31ppt.com/p-5334747.html