您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > c++ 语言 选择结构程序设计
第3章选择结构程序设计第3章:选择结构程序设计前面已讨论程序结构顺序结构选择结构循环结构本章讨论下章讨论控制语句用来实现一定的控制功能的语句称为控制语句。C++语言用控制语句来实现选择结构和循环结构。C++语言有九种控制语句。可分成以下三类:if()~else~switchfor()~while()~do~while()continuebreakgotoreturn分支循环辅助控制本章讨论3.1选择结构的程序设计1.if语句简单if语句形式if(表达式)语句;格式:执行流程:语句表达式T例如:请用简单if语句形式实现输入两个整数,输出其中的大数。if_else形式if(表达式)语句1;else语句2;格式:执行流程:表达式语句1语句2TFF例:请用if_else形式实现输出两个整数中的最大数。例如:下面的程序段是用简单的if语句实现输入两个整数,输出其中的大数。inta,b,max;cout“请输入两个整数:”;cinab;max=a;if(maxb)max=b;coutmax;例如:下面的程序段用if…else形式实现输出两个整数中的最大数。inta,b,max;cout“请输入两个整数:”;cinab;if(ab)max=a;elsemax=b;coutmax;课堂练习编写程序实现汽车超速判断:要求从键盘输入速度,然后判断其是否超速。如果速度超过60,则显示“超速”,否则显示“正常”。1.if语句if_else_if形式if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;……elseif(表达式n)语句n;else语句n+1;格式:执行流程:表达式1F表达式2表达式3FTFTTF表达式n语句n语句n+1T语句3语句2语句1例如:请编写程序段实现判断输入字符的种类:数字、大写字母、小写字母或其他字符。例如:下面的程序段是判断输入字符的种类。charc;cout“请输入字符:”;cinc;if(c='0'&&c='9')coutThecharacterisadigit\n;elseif(c='A'&&c='Z')coutThecharacterisacapitalletter\n;elseif(c='a'&&c='z')coutThecharacterisalowerletter\n;elsecoutThecharacterisothercharacter\n;课堂练习1.编程实现根据输入x的值,输出y。x和y满足数学分段函数关系如下:课堂练习2.编程实现判断成绩的等级。根据输入的成绩,判断输出成绩的等级:90分以上(包含90):A;80-89:B;70-79:C;60-69:D60分以下(不包含60):F。if语句注意事项(1)if语句后面的表达式必须用括号括起来。(2)表达式通常是逻辑表达式或关系表达式,但也可以是其它任何表达式,如赋值表达式等,甚至也可以是一个变量。只要表达式非零时,表达式的值就为真,否则就是假。(3)在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{}括起来组成一个复合语句。但要注意的是在}之后不能再加分号。(4)在if语句中,如果表达式是一个判断两个数是否相等的关系表达式,要当心不要将==写成了赋值运算符=。例:ifx0cout“x0”;例:if(x0)cout“x0”;if(a=5)语句;//表达式的值永远为非0,所以其后的语句总是要执行的if(b)语句;//等价于if(b!=0)语句;例:if(ab)a++;b++;else{a=0;b=1;}例:if(ab){a++;b++;}else{a=0;b=1;}例:#includeiostreamusingnamespacestd;voidmain(){intx=0;if(x==0)cout“x=0\n”;elsecout“x!=0\n”;}例:#includeiostreamusingnamespacestd;voidmain(){intx=0;if(x=0)cout“x=0\n”;elsecout“x!=0\n”;}运行结果:x=0运行结果:x!=0if(……)if(……)if(……)else……else……else……C++语言规定,在缺省{}时,else总是和它上面离它最近的未配对的if配对例:#includeiostreamusingnamespacestd;voidmain(){inta=1,b=-1;if(a0)if(b0)a++;elsea--;couta=%d\n;}例:#includeiostreamusingnamespacestd;voidmain(){inta=1,b=-1;if(a0){if(b0)a++;}elsea--;couta=%d\n;}运行结果:a=0运行结果:a=1if_else配对原则例输入两数并判断其大小关系#includeiostreamusingnamespacestd;voidmain(){intx,y;coutEnterintegerx,y:;cinxy;if(x!=y)if(xy)coutXY\n;elsecoutXY\n;elsecoutX==Y\n;}运行结果:Enterintegerx,y:12,23XYEnterintegerx,y:12,6XYEnterintegerx,y:12,12X==Yif语句嵌套:一般形式:if(expr1)if(expr2)statement1elsestatement2elseif(expr3)statement3elsestatement4内嵌if内嵌ifif(expr1)if(expr2)statement1elsestatement2内嵌ifif(expr1)if(expr2)statement1elsestatement3内嵌ifif(expr1)statement1elseif(expr3)statement3elsestatement4内嵌if2.switch语句(开关分支语句)一般形式:switch(表达式){caseE1:语句组1;break;caseE2:语句组2;break;…….caseEn:语句组n;break;[default:语句组;break;]}执行过程:switch表达式语句组1语句组2语句组n语句组…...E1caseE2caseEncasedefaultcase使用switch语句注意事项(1)switch后面的“表达式”,可以是int、char和枚举型中的一种,但不可为浮点型。floata,b=4.0;cina;switch(a){case1:b=b+1;break;case2:b=b-1;break;}cout“b=“b;不可为浮点型表达式inta,b=4;cina;switch(a){case1:b=b+2;break;case2:b=b*2;break;case1:b=b+2;break;}coutb=,b);使用switch语句注意事项(2)case后面语句(组)可加{}也可以不加{},但一般不加{}。(3)每个case后面“常量表达式”的值,必须各不相同,否则会出现相互矛盾的现象。switch(i){case1:{b=b+1;break;}//{}可加可不加case2:b=b-1;break;}case1在前面已使用课堂练习1:使用switch语句按照考试成绩的等级打印出百分制分数段。成绩等级对应的分数段如下:A:90-100;B:80-89;C:70-79;D:60-69;F:59以下;使用switch语句注意事项(4)每个case后面必须是“常量表达式”,表达式中不能包含变量。例:按成绩分成A、B、C、D、E、F几个等级。charscore;coutEnterScore:;cinscore;switch(score){casescore=90:coutA;break;casescore=80&&score90:coutB;break;casescore=70&&score80:coutC;break;casescore=60&&score70:coutE;break;default:coutF;break;}case后面包含变量课堂练习2.写程序实现输入一个整数,如果分数为:90-100输出“A”;80-89输出“B”;70-79输出“C”;60-69输出“D”;59以下输出“F”;其它,输出“输入错误”。使用switch语句注意事项(5)多个case子句,可共用同一语句(组)。例:当a的值是1、2、3时,将b的值加2,当a的值是4、5、6时,将b的值减2。inta,b=4;cina;switch(a){case1:case2:case3:b+=2;break;case4:case5:case6:b-=2;break;default:b*=2;break;}coutb=“b;使用switch语句注意事项(6)case后面的“常量表达式”仅起语句标号作用,并不进行条件判断。系统一旦找到入口标号,就从此标号开始执行,不再进行标号判断,所以必须加上break语句,以便结束switch语句。voidmain(){charch;ch=getch();switch(ch){case'Y':printf(Yes\n);break;case'N':printf(No\n);break;case'A':printf(All\n);break;default:printf(Yes,NoorAll\n);}}运行结果:No//假设输入为:Nvoidmain(){charch;ch=getch();switch(ch){case'Y':printf(Yes\n);break;case'N':printf(No\n);case'A':printf(All\n);break;default:printf(Yes,NoorAll\n);}}//假设输入为:N运行结果:NoALL使用switch语句注意事项(7)case子句和default子句如果都带有break子句,那么它们之间顺序的变化不会影响switch语句的功能。#includeiostreamusingnamespacestd;voidmain(){charch;cinch;switch(ch){case'Y':coutYes\n;break;case'N':coutNo\n;break;case'A':coutAll\n;break;default:coutYes,NoorAll\n;break;}}#includeiostreamusingnamespacestd;voidmain(){charch;cinch;switch(ch){case'Y':coutYes\n;break;default:coutYes,NoorAll\n;break;case'N':coutNo\n;break;case'A':coutAll\n;break;}}使用switch语句注意事项(8)case子句和default子句如果有的带有break子句,而有的没有带break子句,那么它们之间顺序的变化可能会影响输出的结果。#includeiostreamusingnamespacestd;intmain(){charch;cinch;switch(ch){case'Y':coutYes\n;break;case'N':coutNo\n;break;case'A':coutAll\n;break;default:c
本文标题:c++ 语言 选择结构程序设计
链接地址:https://www.777doc.com/doc-7026286 .html