第5章流程控制语句徐遵义15063353018zunyixu@sdjzu.edu.cn,zunyixu@sohu.comC++程序设计2主要内容if语句switch语句for语句while,do-while语句循环的嵌套转向语句过程化语句的综合示例小结及作业C++程序设计35.1if语句语句是组成高级语言源程序的基本单位操作运算语句:用于描述计算机执行的操作运算(如表达式语句)流程控制语句,又称过程化语句,用于控制操作运算的执行顺序顺序结构、选择结构和循环结构是结构化程序设计的3种基本结构,是各种复杂程序的基本构造单元C++程序设计45.1if语句C++有9种控制语句if()条件语句do~while()循环语句if()~else~条件语句continue结束本次循环语句switch多分支选择语句break中止执行switch或循环语句for()~循环语句return从函数返回语句while()~循环语句C++程序设计55.1if语句if语句是用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一if语句的三种形式if(表达式)语句if(表达式)语句1else语句2if(xy)coutxendl;elsecoutyendl;if(xy)coutxendl;C++程序设计65.1if语句if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3…elseif(表达式m)语句melse语句nC++程序设计75.1if语句if语句的应用CH5_1.cpp求三角形的面积CH5_2.cpp编写程序,判断某一年是否为闰年CH5_3.cppif语句的嵌套:在if语句中又包含一个或多个if语句称为if语句的嵌套if与else的配对关系:else总是与它上面最近的、且未配对的if配对如果if与else的数目不一样,为顺利的实现程序,可以加花括号来确定配对关系if()if()语句1else语句2elseif()语句3else语句4内嵌if内嵌ifC++程序设计85.1if语句if()if()语句1else语句2elseif()语句3else语句4内嵌if内嵌ifif(){if()语句1else语句2}else{if()语句3else语句4}内嵌if内嵌ifif(){if()语句1//这个语句是上一行if语句的内嵌if}else//本行与第一个if配对语句2{}限定了内嵌if语句的范围,{}外的else不会与{}内的if配对。关系清楚,不易出错。C++程序设计9例5_4:体型判断按“体指数”对肥胖程度进行划分:体指数t=体重w/(身高h)2(w单位为公斤,h单位为米)当t18时,为低体重;当t介于18和25之间时,为正常体重;当t介于25和27之间时,为超重体重;当t=27时,为肥胖。编程从键盘输入你的身高h和体重w,根据给定公式计算体指数t,然后判断你的体重属于何种类型。用3种方法编程:算法1:用不带else子句的if语句编程算法2:用在if子句中嵌入if语句的形式编程算法3:用在else子句中嵌入if语句的形式编程5.1if语句t=18&&t25t=25&&t27C++程序设计105.1if语句算法1:用不带else子句的if语句编程(CH5_4.cpp)开始floath,w,t;输入体重w和身高ht=w/pow(h,2);t18?t=18&&t25?t=25&&t27?t=27?结束NNNN打印”低体重”;打印”正常体重”;打印”超重体重”;打印”肥胖”;YYYYC++程序设计115.2switch语句是多分支选择语句,用来实现多分支选择结构它的一般形式如下switch(表达式){case常量表达式1:语句1case常量表达式2:语句2...case常量表达式n:语句ndefault:语句n+1}要求按照考试成绩的等级打印出百分制分数段,可以用switch语句实现:switch(grade){case'A':cout85~100\n;case'B':cout70~84\n;case'C':cout60~69\n;case'D':cout60\n;default:couterror\n;}C++程序设计125.2switch语句说明switch后面括号内的“表达式”,只能为数值、字符或枚举值当switch表达式的值与某一个case子句中的常量表达式的值相匹配时,就执行此case子句中的内嵌语句;若所有的case子句中的常量表达式的值都不能与switch表达式的值匹配,就执行default子句的内嵌语句每一个case表达式的值必须互不相同,否则就会出现互相矛盾的现象各个case和default的出现次序不影响执行结果。例如,可以先出现“default:…”,再出现“case‘D’:…”,然后是“case‘A’:…”C++程序设计135.2switch语句说明在执行switch语句时,根据switch表达式的值找到与之匹配的case子句,就从此case子句开始执行下去,不再进行判断“case常量表达式”只是起语句标号作用,并不是在该处进行条件判断在case子句中虽然包含一个以上执行语句,但可以不必用花括号括起来,会自动顺序执行本case子句中所有的执行语句在执行完一个case子句后,若使流程跳出switch结构,即终止switch语句的执行,可以用一个break语句来达到此目的;最后一个子句(default)不要加break语句C++程序设计145.2switch语句switch(grade){case‘A’:cout“85~100\n”;break;case‘B’:cout“70~84\n”;break;case‘C’:cout“60~69\n”;break;case‘D’:cout“60\n”;break;default:cout“error\n”;}C++程序设计155.2switch语句说明多个case可以共用一组执行语句...case‘A’:case‘B’:case‘C’:cout“60\n”;break;...当grade的值为‘A’、‘B’或‘C’时都执行同一组语句。C++程序设计165.2switch语句说明default语句是可选的,若defaul不出现而且表达式的值与所有常量表达式的值都不相等时,则跳过switch语句switch语句可以嵌套,此时case与default标号是与包含它的最小的switch相联系inti,j;//…switch(i){case1://…case2:switch(j)//嵌套switch{case1://…case2://…default://…}case3://….…..default://…}C++程序设计175.2switch语句例5_5编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式:操作数1运算符op操作数2,然后,计算表达式的值,指定的运算符为加(+)、减(-)、乘(*)、除(/)例5_6根据输入的学生成绩,给出其等级评定。要求90分(含)以上为A,80分(含)以上为B,70分(含)以上为C,60分(含)以上为D,其它为EC++程序设计185.2switch语句switch语句与if语句的相互补充若测试一个整型变量取多个不同的值,用switch语句如果对浮点数测试,建议用if若测试值包含一个较大的范围,需用关系表达式时建议用ifC++程序设计195.3for语句for语句语法形式:for(表达式1;表达式2;表达式3)语句C++中的for语句使用最为广泛和灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况循环前先求解循环条件判定每次执行完循环体后求解C++程序设计205.3for语句//用for循环语句求1+2+3+…+100#includeiostreamusingnamespacestd;intmain(){inti,sum=0;for(i=1;i=100;i++)sum=sum+i;coutsum=sumendl;return0;}inti=1,sum=0;for(;i=100;i++)for(inti=1,sum=0;i=100;i++)C++程序设计215.3for语句有关for语句的若干说明表达式1可以是设置循环变量初值的赋值表达式for语句的一般格式中的“表达式1”可以省略,此时应在for语句之前给循环变量赋初值,但“表达式1”后的分号不能省表达式2不能省略,省略即不判断循环条件,循环无终止进行下去;若省略需要在循环体中有跳出循环的控制语句表达式2一般是关系表达式(如i=100)或逻辑表达式(如ab&&xy),但也可以是数值表达式或字符表达式,只要其值为非零,就执行循环体表达式3包括使循环趋于结束的操作(修正循环变量)C++程序设计225.4while语句语法形式:while(表达式)语句;执行顺序:先判断表达式的值,为true时,再执行语句可以是复合语句,其中必须含有改变条件表达式值的语句C++程序设计235.4while语句#includeiostreamusingnamespacestd;intmain(){inti=1,sum=0;while(i=100){sum=sum+i;i++;}cout″sum=″sumendl;}例:求1+2+3+…+100。用流程图表示算法,根据流程图写出程序C++程序设计245.5do-while语句语法形式do语句;while(表达式);执行顺序先执行循环体语句,后判断条件;表达式为true时,继续执行循环体与while语句的比较while语句先判断表达式的值,为true时,再执行语句可以是复合语句,其中必须含有改变条件表达式值的语句C++程序设计255.5do-while语句用do-while语句求1+2+3+…+100。根据流程图,编写程序#includeiostreamusingnamespacestd;intmain(){inti=1,sum=0;do{sum=sum+i;i++;}while(i=100);cout″sum=″sumendl;return0;}C++程序设计265.5do-while语句几种循环的比较三种循环都可以用来处理同一问题,一般情况下它们可以互相代替while和do-while循环,是在while后面指定循环条件的,在循环体中应包含使循环趋于结束的语句(如i++,或i=i+1等)for循环可以在表达式3中包含使循环趋于结束的操作,甚至可以将循环体中的操作全部放到表达式3中。for语句的功能更强,凡用while循环能完成的,用for循环都能实现。用while和do-while循环时,循环变量初始化的操作应在while和do-while语句之前完成,而for语句可以在表达式1中实现循环变量的初始化C++程序设计275.6循环的嵌套一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多层循环三种循环(while循环、dowhile循环和for循环)可以互相嵌套while(){┆while(){…}}do{┆do{…}while();}while();for(;;){┆for(;;){…}}C++程序设计285.7转向语句C++中的转向语句有break,continue,goto三种break主要用在switch,while,do…while和for语句中在switch语句中,break用来使流程跳出switch语句,继续执行switch后的语句在循环语句中,break用来从最近的封闭循环体内跳出C++程序设计295.7转向语句breakfor(;;){for(;;){……if(i==1)break