面向对象程序设计课程辅导二.doc
《面向对象程序设计课程辅导二.doc》由会员分享,可在线阅读,更多相关《面向对象程序设计课程辅导二.doc(64页珍藏版)》请在咨信网上搜索。
1、面向对象程序设计课程辅导(二)-流程控制语句 徐孝凯 流程控制语句用来控制程序的执行流程, 它包括选择、 循环和跳转三类语句。 选择类语句包括if语句和switch语句两种, 用它们来解决实际应用中按不同情况进行不同处理的问题。如当调整职工工资时, 应按不同的级别增长不同的工资; 大学生交纳学费时, 应按不同的专业交纳不同的学费。 循环类语句包括for循环语句、 while循环语句和do循环语句三种, 用它们来解决实际应用中需要重复处理的问题。如当统计全体职工工资总和时, 就需要重复地做加法, 依次把每个人的工资累加起来; 当从一批数据中查找具有最大值的一个数据时, 需要重复地做两个数的比较运
2、算, 每次把上一次比较得到的大者同一个新( 即未比较) 的数据比较, 当同最后一个新的数据比较后得到的大者就是全部数据中的最大值。 跳转类语句包括goto语句、 continue语句、 break语句和return语句四种, 用它们来改变顺序向下执行的正常次序, 而转向隐含或显式给出的语句位置, 接着从此位置起向下执行。如当从一批数据中查找一个与给定值相等的数据时, 最简单的方法是从前向后使每一个数据依次同给定值进行比较, 若不等则继续向下比较, 若相等则表明查找成功, 应终止比较过程, 此时就需要使用跳转语句转移到其它地方执行。 这一章将依次介绍每一种流程控制语句的语法格式、 执行过程和应用
3、举例等内容。 一、 if语句 1. 语句格式 if语句又称条件语句, 其语句格式为: if () else if语句是一种结构性语句, 因为它又包含有语句, 即和可选择的, 这两条语句称为if语句的子句。 在if语句格式中, 其后的保留字else和是任选项, 带与不带都是允许的。 if语句中的每个子句能够是任何可执行语句或空语句, 可执行语句包括表示式语句、 复合语句、 以及任一种流程控制语句等。 2. 语句执行过程 if语句的执行过程为: (1) 求的值, 若它的值非0, 则表明( 又称为条件) 为真或成立, 否则认为条件为假或不成立; (2) 当条件为真则执行, 为假则执行, 但若else
4、部分被省略, 则不会执行任何操作。 执行if语句的过程可用图1-1描述, 其中菱形框表示判断, 矩形框表示处理, 带箭头的连线表示执行走向。图1-1(a)和(b)分别表示省略和带有else部分的具体执行流程。 图1-1 if语句执行流程示意图 3. 语句格式举例 (1) if(x!=-1) c+; (2) if(x=a) s1+=x; else s2+=x; (3) if(fabs(x)=60 & grade=100) cout”pass”endl; (5) if(grade100) cout”Score error!”b) coutb”endl; else cout”a=b”endl; (7
5、) if(x*x+y*y=z*z) c+; w=x+y+z; (8) if(x) y=3*x-1; z=sqrt(fabs(x)+2; else y=6; z=y*pow(y,4)-3; 在以上列举的语句中, 作为判断条件的表示式有的为单个变量, 有的为关系表示式, 有的为逻辑表示式, 作为子句的语句1或语句2有的为简单语句, 有的为复合语句。每条语句的执行过程一目了然, 如执行第一条语句时, 若x不等于-1成立, 则执行c+操作, 否则不执行任何操作; 执行第二条语句时, 若x小于等于a成立, 则执行s1+=x操作, 否则执行s2+=x操作; 执行第八条语句时, 若x不为0, 则执行格式中所
6、对应的复合语句, 否则执行所对应的复合语句。 4. 语句嵌套 if语句中的任何一个子句能够为任何可执行语句, 当然仍能够是一条if语句, 此种情况称为if语句的嵌套。当出现if语句嵌套时, 不论书写格式如何, else都将与它前面最靠近的if相配对, 构成一条完整的if语句。如: (1) if() if() else (2) if() if() else (3) if() else if() else (4) if() else if() else if() else 注意: 在第二条语句中, else不是同它前面复合语句中的if相配对, 而是与处于同一层次的最前面的if相配对。 5. 程序举
7、例 (1) #include void main() int x,y; coutx; if(x0) y=1+2*x*x; else y=7*x-4; coutx=x, y=yendl; 该程序的功能是: 根据从键盘上输入的x的值计算并输出y的值, y的计算公式为: 1+2x2 (x0) y= 7x-4 (x0) (2) #include #include void main() double x,y; cinx; if(x0) y=fabs(x); else if(x10) y=exp(x)*sin(x); else if(x20) y=pow(x,3); else y=(3+2*x)*log
8、(x); coutsetw(10)xsetw(10)yendl; /分别使x和y的输出宽度为10, 即占有10个字符位置 该程序的功能是: 根据x的值计算出分段函数y的值, y的计算公式为: |x| (x0) y= exsinx (0x10) x3 (10x20) (3+2x)lnx (x20) (3) #include void main() int a,b,c,temp; coutabc; if(ab) temp=a; a=b; b=temp; if(ac) temp=a; a=c; c=temp; if(bc) temp=b; b=c; c=temp; couta b cendl; 该程
9、序的功能是把从键盘上输入的按任意次序排列的三个整数转变为按从大到小的次序排列( 即abc) 并输出出来。 注意: 对于每条if语句中的复合语句, 其作用是交换两个变量的值, 它首先把第一个变量的值暂存到temp变量中, 接着把第二个变量的值赋给第一个变量, 最后把temp变量的值, 即第一个变量的原值赋给第二个变量中。若不经过中间变量temp, 而是直接把第一个变量的值赋给第二个变量, 再把第二个变量的值赋给第一个变量, 则不能够达到交换两个变量值的目的, 请读者思考! 二、 switch语句 1. 语句格式 switch语句又称情况语句或开关语句, 它也是一种结构性语句, 其语句格式为: s
10、witch () 该语句中所包含的一般是一条复合语句, 并在内部的一些语句前加有特殊的语句标号”case :”或”default:”, 因此, switch语句的实际使用格式为: switch() case : M case : M M default: M 该语句中能够使用一次或多次case标号, 但只能使用一次default标号, 或者省略掉整个default部分。另外, 多个case标号也允许使用在同一条语句的前面。 注意: 语句标号只起到标识语句位置的作用, 对语句的执行不会产生任何影响。 2. 语句执行过程 switch语句的执行过程为: (1) 计算出的值, 假定为M, 若它不是整
11、型, 系统将自动舍去其小数部分, 只取其整数部分作为结果值; (2) 依次计算出每个常量表示式的值, 假定它们的值依次为M1,M2,L, 同样若它们的值不是整型, 则自动转换为整型; (3) 让M依次同M1,M2,L 进行比较, 一旦遇到M与某个值相等, 则就从对应标号的语句开始向下执行, 若碰不到跳转语句的话, 将一直执行到右花括号为止才结束整个switch语句的执行, 若M与所有值都不同, 则当带有default部分时, 就从该标号位置起向下执行, 否则不执行任何操作。 在实际使用switch语句时, 一般要求当执行完某个语句标号后的一组语句后, 就结束整个语句的执行, 而不让它继续执行下
12、一个语句标号后面的语句序列, 为此, 可经过使用break语句来实现。该语句只有保留字break, 而没有其它任何成分。它是一条跳转语句, 在switch语句中执行到它时, 将跳转到所属的switch语句的后面位置, 系统将接着向下执行其它语句。 3. 语句格式举例 (1) switch(a) case 1: c1+; break; case 2: c2+; break; case 3: c3+; break; case 4: c4+; break; default 2: c+; break; (2) switch(cr) case red: cout”red”endl; break; cas
13、e yellow: cout”yellow”endl; break; case blue: cout”blue”endl; break; (3) switch(ch) case a: case A: d1=(x+y)/2; d2=x*y-2; break; case b: case B: d1=(a+b)/2; d2=a*b-2; break; default: cout”Input error!”endl; exit(1); 第一条语句执行时, 将按照a的取值使相应的变量增1, 具体地说, 当a取1时c1增1, a取2时c2增1, a取3时c3增1, 取4时c4增1, a取其它任何值时则使变
14、量c增1, 每执行增1操作后, 都接着执行一条break语句, 使执行流程转出整个switch语句, 否则将会顺序执行后面的增1语句。 执行第二条语句时, 将按照具有枚举类型color的变量cr的值决定输出哪一个常量标识符, 当ch取值为red( 即0) 时输出red标识符, 取值为yellow( 即1) 时输出yellow标识符, 取值为blue( 即2) 时输出blue标识符。输出最后一个常量标识符虽然没有使用break语句转出去, 但由于它后面就是语句结束标志, 右花括号, 因此也会自然地结束该语句。 当执行第三条语句时, 若ch值为小写字母a或大写字母A, 则执行35行的语句, 若ch
15、值为小写字母b或大写字母B, 则执行79行的语句, 若ch不是上述取值, 则执行1011行后结束整个程序的运行。 在switch语句所含的复合语句中, 能够包含任何语句, 当然仍能够是switch语句, 因此switch语句也允许出现嵌套的情况。 4. 程序举例 (1) #include void main() int weekday; coutweekday; switch(weekday) case 0: coutsundayendl; break; case 1: coutMondayendl; break; case 2: coutTuesdayendl; break; case 3:
16、 coutWednesdayendl; break; case 4: coutThursdayendl; break; case 5: coutFridayendl; break; case 6: coutSaturdayendl; break; default: coutInput error!endl; 该程序的功能是: 根据从键盘上输入的表示星期几的数字, 对应输出它的英文名称。 (2) #include #include void main() float score; coutscore; if(score100) cout输入数据有误! endl; exit(1); switch(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 课程 辅导
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。