2023年面向对象程序设计课程辅导二.pdf
《2023年面向对象程序设计课程辅导二.pdf》由会员分享,可在线阅读,更多相关《2023年面向对象程序设计课程辅导二.pdf(48页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、面向对象程序设计课程辅导(二)-流程控制语句徐孝凯流程控制语句用来控制程序的执行流程,它涉及选择、循环和跳转三类语句。选择类语句涉及i f 语 句 和 sw i t c h 语句两利I 用它们来解决实际应用中按不同情况进行不同解决的问题。如当调整职工工资时,应按不同的级别增长不同的工资;大学生交纳学费时,应按不同的专业交纳不同的学费。循环类语句涉及fo r循环语句、w h ile 循环语句和do循环语句三种,用它们来解决实际应用中需要反复解决的问题。如当记录全体职工工资总和时,就需要反复地做加法,依次把每个人的工资累加起来;当从一批数据中查找具有最大值的一个数据时,需要反复地做两个数的比较运算
2、,每次把上一次比较得到的大者同一个新(即未比较)的数据比较,当同最后一个新的数据比较后得到的大者就是所有数据中的最大值。跳转类语句涉及g o t o 语句、con t inue语句、br e a k 语句和retu r n 语句四种,用它们来改变顺序向下执行的正常顺序,而转向隐含或显式给出的语句位置,接着从此位置起向下执行。如当从一批数据中查找一个与给定值相等的数据时,最简朴的方法是从前向后使每一个数据依次同给定值进行比较,若不等则继续向下比较,若相等则表白查找成功,应终止比较过程,此时就需要使用跳转语句转移到其他地方执行。这一章将依次介绍每一种流程控制语句的语法格式、执行过程和应用举例等内容
3、。一、i f 语句1.语句格式i f 语句又称条件语句,其语句格式为:i f(表达式)语 句 1 e ls e(语句2i f 语句是一种结构性语句,由于它又包具有语句,即语 句 1和可选择的语 句 2,这两条语句称为i f 语句的子句。在 i f 语句格式中,其后的保存字el s e 和 语句2 是任选项,带与不带都是允许的。i f 语句中的每个子句可以是任何可执行语句或空语句,可执行语句涉及表达式语句、复合语句、以及任一种流程控制语句等。2.语句执行过程i f 语句的执行过程为:(1)求 表达式)的值,若它的值非0,则表白 表达式(又称为条件)为真或成立,否则认为条件为假或不成立;(2)当条
4、件为真则执行语 句 1 ,为假则执行语 句 2 ,但 若 else部分被省略,则不会执行任何操作。执 行 i f 语句的过程可用图1 1描述,其中菱形框表达判断,矩形框表达解决,带箭头的连线表达执行走向。图 1-1(a)和(b)分别表达省略和带有e ls e 部分的具体执行流程。图 1-1 i f 语句执行流程示意图3.语句格式举例(1)i f (x!=T)c+;(2)i f (x =a )s 1+=x;e l s e s 2+=x ;(3)i f (f a b s (x )=6 0&gra d e =1 00)c o u t J,p a s s,e n d 1 ;(5)i f (gr a d
5、 e 100)c o u t,S c o r e e rro r!5,b)cout,a b,e n d 1 ;else c o u t va 所相应的复合语句,否则执行 语句2 所相应的复合语句。4.语句嵌套i f 语句中的任何一个子句可认为任何可执行语句,当然仍可以是一条i f 语句,此种情况称为i f 语句的嵌套。当出现i f 语句嵌套时,不管书写格式如何,e l s e 都将与它前面最靠近的i f 相配对,构成一条完整的i f 语句。如:(1)i f (表达式1)i f (表达式2)e I s e 语句2(2)1仪 )i f (表达式2)e l s e(语句3(3)i f (表 达 式
6、1)语 句 1e l s e i f (表达式2)语句2e l s e (4)i f 表达式1)语 句 1 e 1 s e 1()语句2e l s e i f (表达式3)(语 句 3 e I s e 语句 4 注意:在第二条语句中,e 1 s e 不是同它前面复合语句中的i f 相配对,而是与处在同一层次的最前面的i f 相配对。5.程序举例(1)#i n c l u d e v o i d m a i n ()(i n t x,y ;c o u t x;i f (x 0)y=l+2*x*x ;e l s e y=7*x -4 ;c o u t z,x=/z x ,y=y e n d l;)
7、该程序的功能是:根据从键盘上输入的x的值计算并输出y的值,y的计算公式为:-l+2x2(x 0)Yy=I7 x-4 (x 20)(2)#i n c l u d e#i n c l u d e v o i d m a i n()d o u b l e x,y;c i n x ;i f (x 0)y =f a b s (x);e l s e i f (x 1 0)y=e x p (x)*s i n (x );e 1 s e i f (x 20)y=p o w(x,3);e l s e y=(3+2*x)*l o g(x);c o u t s e t w(1 0)x s e t w(1 0)y e
8、n d 1 ;分别使x和 y的输出宽度为1 0,即占有10个字符位置)该程序的功能是:根据x的值计算出分段函数y的值,y的计算公式为:|x|(X 0)y=|e1 s i nx(0 x 10)x3(10W x(20)(3+2 x )I n x (x 220)#i n c l u d e v o i d m a i n()(i n t a ,b ,c,t e m p;c o u t 输入三个整数:;c i n a b c;i f (a b)t e m p=a;a=b;b=t e m p;i f (a c)t e m p=a;a=c ;c=t e m p;i f (b c)t e m p=b;b =
9、c;c =t e m p ;c o u t a b c e n d l;该程序的功能是把从键盘上输入的按任意顺序排列的三个整数转变为按从大到小的顺序 排 列(即 a 2 b c)并输出出来。注意:对于每条i f 语句中的复合语句,其作用是互换两个变量的值,它一方面把第一个变量的值暂存到t e m p 变量中,接着把第二个变量的值赋给第一个变量,最后把t e m p 变量的值,即第一个变量的原值赋给第二个变量中。若不通过中间变量t e m p,而是直接把第一个变量的值赋给第二个变量,再把第二个变量的值赋给第一个变量,则不可以达成互换两个变量值的目的,请读者思考!二、s w i t c h 语句1
10、.语句格式s w i t c h 语句又称情况语句或开关语句,它也是一种结构性语句,其语句格式为:s w i t c h (表达式)通常是一条复合语句,并在内部的一些语句前加有特殊的语句标号“c a se 常量表达式或“d e f a u 1 t:”,因此,s w i t c h 语句的实际使用格式为:sw i t c h (表达式)c a s e 常量表达式1 :语 句 1-1 语 句 1-2 cas e 常量表达式2 :语句2-2 d e f a u 1 t:语句 n-1 语句n-2)该语句中可以使用一次或多次c a se 标号,但只能使用一次d e f a u l t 标号,或者省略掉整
11、个d e f a u l t 部分。止 匕 外,多个c a se 标号也允许使用在同一条语句的前面。注意:语句标号只起到标记语句位置的作用,对语句的执行不会产生任何影响。2.语句执行过程sw i t c h 语句的执行过程为:(1)计算出 表达式 的值,假定为此若它不是整型,系统将自动舍去其小数部分,只取其整数部分作为结果值;(2)依次计算出每个常量表达式的值,假定它们的值依次为M l,M 2,,同样若它们的值不是整型,则自动转换为整型;(3 )让 M依次同M l,M 2,进行比较,一旦碰到M与某个值相等,则就从相应标号的语句开始向下执行,若碰不到跳转语句的话,将一直执行到右花括号为止才结束整
12、个sw i t c h 语句的执行,若M与所有值都不同,则当带有d e f a u l t 部分时,就从该标号位置起向下执行,否则不执行任何操作。在实际使用sw i t c h 语句时,通常规定当执行完某个语句标号后的一组语句后,就结束整个语句的执行,而不让它继续执行下一个语句标号后面的语句序列,为此,可通过使用b r eak语句来实现。该语句只有保存字b r e a k,而没有其他任何成分。它是一条跳转语句,在sw i t c h语句中执行到它时,将跳转到所属的sw i t c h 语句的后面位置,系统将接着向下执行其他语句。3.语句格式举例(1)sw i t c h (a)c a se 1
13、:c 1 +;b r e a k;c a se 2:c 2 +;b r e a k ;c a se 3 :c 3 +;b r e a k;c a s e 4:c 4 +;b r e a k;d e f a u l t 2 :c +;b r e a k ;)(2)sw i t c h (c r)c a se r e d :c o u t ur e dv e n d 1;b r e a k;c a s e y e l l o w:c o u t 4y e l l o w,e n d l;b r e a k ;c a se b l u e:c o u t ub l u e,e n d l;b r e
14、 a k;)(3)s w i t c h(c h)c a se a:c a s e A:d l=(x+y)/2;d 2=x*y 2;b r e a k;c a s e b:c a se B:d l=(a+b)/2 ;d 2=a *b-2;b r e a k ;d e f a u I t:c o u t 4 I n pu t e r r o r!”V V e n d l;e x i t (1);第一条语句执行时,将按照a的取值使相应的变量增1 ,具体地说,当a取 1 时 c l 增 1,a取 2时 c 2增 1,a取 3时 c 3 增 1,取 4时 c 4 增 1,a取其他任何值时则使变量c 增
15、 1,每执行增1 操作后,都接着执行一条b r e a k语句,使执行流程转出整个s w i t c h 语句,否则将会顺序执行后面的增1 语句。执行第二条语句时,将按照具有枚举类型c o l o r 的变量c r 的值决定输出哪一个常量标记符,当 c h 取值为r e d (即 0)时输出r e d 标记符,取值为y e l l o w (即 1 )时输出y e l l o w标记符,取值为b lu e(即2)时输出b l u e 标记符。输出最后一个常量标记符虽然没有使用 b rea k 语句转出去,但由于它后面就是语句结束标志,右花括号,所以也会自然地结束该语句。当执行第三条语句时,若
16、c h 值为小写字母a 或大写字母A,则执行3 5 行的语句,若ch值为小写字母b 或大写字母B,则执行7 9 行的语句,若ch 不是上述取值,则执行1 0行后结束整个程序的运营。在 s w it c h 语句所含的复合语句中,可以包含任何语句,当然仍可以是s w itc h 语句,所 以 swi t ch 语句也允许出现嵌套的情况。4.程序举例(1)ttinclu devo i d mai n()!。in t w ee kda y;c o u t H今天星期几(06)?;。c inweekday;switch(weekday)。c ase 0:cou t su nday endl;br e
17、a k;c a se 1:co o nd a y Xen d 1;b reak;。c ase 2:co u t z,Tuesda y z,end 1 ;br e ak;。c ase 3:c o u t z/W e d nes d ay*e n d l;bre a k;case 4:c o ut V T h ursd a y vendl;bre a k;。c a se 5:co u t/z F r id a y en d 1;b r e a k;case 6:c out S a tu r day,V V endl;brea k;d ef a ul t:c o u t Input er r o r
18、!endl;)该程序的功能是:根据从键盘上输入的表达星期儿的数字,相应输出它的英文名称。(2)#i n c 1 u d e#in c 1 u d e void ma i n()(e f lo a t sc o r e ;c out s c ore;。i f (sc ore l 0 0)。c ou t V”输入数据有误!X e n d 1;。e x i t(1);0)s witc h(i n t(sc ore)/1 0)。c a s e 9:。c a se 1 0:c o u t sc o r e :优 e nd 1 ;b r e a k;c a s e 8:c out s c o re :良“
19、e n d l;b re a k;c a se 7:c ou t s c ore :中“V e nd 1 ;b re a k;。c a se 6 :c o u t sc ore n:及格“V e nd l;b r e a k;。d e f a ult:c out sc o r e V :不及格 V e n d 1 ;b re a k;该程序的功能是:根据从键盘上输入的一个人的成绩判断并输出它所属的等级。等级分为优、良、中、及格和不及格等五个级别,相应的分数段依次为 9 0,1 0 0 ,8 0,8 9 ,7 0,7 9 ,6 0,6 9 和 0 ,5 9 o(3)#i n c 1 u d e#
20、i nc 1 u d e#i nc l u d e void ma i n()(c h a r ma r k;i nt x,y,z;b oo1 b=f a l s e;sra n d (t ime(0 );初始化系统中的随机数序列x=r a n d ()%5 0 +1 ;y=ra n d ()%1 0 +1 ;c out ma rk;c ou t x m a r k y,;c i n z;sw i t c h (ma rk)c a se +:if (z=x+y)b =tr u e;b re a k;c a s e -:i f (z=x y)b =t r ue;b re a k;c a se :
21、i f (z 二 二 x*y)b=tru e ;b re a k;c a se /:if (z=x/y)b=tru e ;b r e a k;cas e%:i f (z二 二 x%y)b =t r u e;b r e a k;d e f a u It:c o u t VV 运算符输入错!e nd l;e x i t(1);)if (b)c o u t z,rig h t!,z e n d 1;。e lse c o u t e rror!”:表达式)语句其中 是f or语句的循环体,它将按条件被反复执行多次;表达式1 ,(表达式2 和 表达式 都可以被省略,但它们之间的分隔符(即分号)必须保存;
22、此外,表达式1 除了可以是一个表达式外,还可以兼有对变量进行定义的功能,此变量在离开此循环后仍然可以使用。如 i =1 和 i n t i=l 都可以作为 使用,当使用i=l 时,i 必须被定义过,当使用i n t i=l 时,i 在此之前必须没有定义,此表达式同时具有定义变量i 和给它赋初值这两种功能。2.语句执行过程f o r语句的执行过程为:(1)计算(表达式1 ,当然若此项被省略则无须计算;(2)计算 表达式2 得到一个值,假定为M,若该表达式被省略则当作数值1 看待;(3)若 M 为非0,则执行一遍循环体,否则结束整个f o r语句的执行;(4 )计算(表达式3,当然若此项被省略则无
23、须计算;(5)自动转向第(2)执行。3.语句格式举例(1)f o r(i=l;i 10;i+)c o u t i ;。for (in t i =1;i +=1 0 0 0;);o (3)f o r(in t i=0,j=0 ;i+j 10 0 )b re a k;(5)f o r(i=0,y=0;i x;。y+=x ;。(6 )f o r(in t k=2;k s q r t (m);k+)o i f (m%k=0)b re a k;(7)f o r(;b;a=b,b =r)r=a%b;。(8)f o r(k=20;k!=0 ;k)。a-r a n d()%10 0 ;。c o u t a ,
24、并且循环体是一条空语句,该循环体被反复执行10 0 0次,同时进行10 0 0 次 i +=10 0 0 表达式的计算。第(3)条语句中的 表达式1 分别给i和 j 赋初值为0,并对它们进行变量说明,和 表达式3分别为关系表达式和逗号表达式,循环体是一条赋值语句。第(4)条语句中省略了所有三个表达式,循环体是一条复合语句。第(5)条语句中的 表达式1 为逗号表达式,循环体是一条复合语句,该循环语句完毕从键盘上输入n个常数,并把它们依次累加到y 上的任务。第(6)条语句中的循环体是一条条件语句,它将被反复执行,直到k 是一个逗号表达式,循环体是一条赋值语句。第(8)条语句的循环体将被循环执行2
25、0 次,每次一方面得到0 9 9 之间的一个随机数a并输出它,接着若a为奇数就使c l 增 1,否则使c 2 增 1。该循环的功能是得到并输出0 9 9之间的2 0个随机数,并分别记录出奇数和偶数的个数。在f o r循环的循环体中允许使用b re a k语句,其作用是:当执行到该语句时,就使执行流程转出所属的f o r循环语句,然后再向下顺序执行。4.语句嵌套f o r循环体可认为任何可执行语句,当然也可以直接为一条f o r语句,或者在作为循环体的复合语句内使用for语句,并且嵌套的层数不受限制。如:(1)f o r(i=l;i =5;i+)f o r(j =1;j =6;j+)s+=i*_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 面向 对象 程序设计 课程 辅导
限制150内