您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > A3-程序的控制结构-选择结构
程序的控制结构——选择结构YangzhengMiddleSchool概述C++在默认的情况下采取顺序结构,除非特别指明,计算机总是按语句顺序一条一条地执行。但在现实世界中,在解决问题的过程中,不可避免地遇到需要进行选择、或需要循环工作的情况。这时,程序执行的顺序需要发生变化,而非从前向后逐一执行。因此,程序中除了顺序结构以外,通常还有选择结构、循环结构以及转移机制。从结构化程序设计的观点看,所有程序都可用3种控制结构即顺序结构、选择结构、和循环结构实现。YangzhengMiddleSchool概述选择类语句包括if语句和switch语句,用它们来解决实际应用中按不同的情况进行不同处理的问题。如根据学生的成绩,对学生做出不同的等第评价。循环类语句包括for循环语句、while循环语句和do循环语句三种,用它们来解决实际应用中需要重复处理的问题。如当统计全班同学总分时,就需要重复地做加法,依次把每个人的分数累加起来。YangzhengMiddleSchoolif选择结构YangzhengMiddleSchoolif选择结构(单分支结构)格式1:功能:如果条件表达式的值为真,即条件成立,“语句1”将被执行。否则,“语句1”将被忽略(不被执行),程序将按顺序从整个if选择结构之后的下一条语句继续执行。说明:格式中的“条件表达式”必须用圆括号括起来。if(条件表达式)语句1;条件表达式条件表达式语句1falsetrueYangzhengMiddleSchoolif选择结构(单分支结构)——例3.1读入一个整数a,如果a为偶数在屏幕上输出yes#includeiostreamusingnamespacestd;intmain(){inta;cina;if(a%2==0)//关系运算符==不要写成赋值号=coutyes;return0;}YangzhengMiddleSchoolif选择结构(单分支结构)——例3.2读入一个数,若这个数大于1并且小于100,则输出yes#includeiostreamusingnamespacestd;intmain(){inta;cina;if((a1)&&(a100))coutyes;return0;}//此程序中的条件表达式为(a1)&&(a100),根据要求“条件表达式”必须用圆括号括起来,否则编译会出错。YangzhengMiddleSchoolif选择结构(单分支结构)格式2:功能:若条件成立时,要执行的操作由多个句子构成,我们必须把这些句子括在一对花括号{}内,我们称这种形式为语句块或复合语句。if(条件表达式){语句1;语句2;……}YangzhengMiddleSchoolif选择结构(单分支结构)——例3.3读入a,b,若ab则交换a,b的值#includeiostreamusingnamespacestd;intmain(){floata,b,c;cinab;if(ab){c=a;a=b;b=c;}couta=ab=b;return0;}YangzhengMiddleSchoolif选择结构(双分支结构)格式1:功能:如果(条件表达式)的值为“真”,即条件成立,则执行语句1,执行完“语句1”后继续执行整个if-else语句的后继语句;反之,则跳过“语句1”选择执行“语句2”,执行完语句2后继续执行整个if-else语句的后继语句;也就是说if-else语句总是根据(条件表达式)的结果,选择“语句1”和“语句2”中的一个执行,执行完以后,整个if-else就算执行完了。if(条件表达式)语句1;else语句2;条件表达式语句2flasetrue语句1YangzhengMiddleSchoolif选择结构(双分支结构)——例3.4根据用户输入的成绩,判断是否通过了考试。#includeiostreamusingnamespacestd;intmain(){intc;cinc;if(c=60)coutpass!\n;elsecoutsorry!\n;return0;}YangzhengMiddleSchoolif选择结构(双分支结构)——例3.5输入温度t的值,判断是否适合晨练。(25=t=30,则适合晨练ok,否则不适合no)#includeiostreamusingnamespacestd;intmain(){intt;cint;if((t=25)&&(t=30))coutok!\n;elsecoutno!\n;return0;}YangzhengMiddleSchoolif选择结构(双分支结构)格式2:若分支语句由多个句子构成,我们必须把这些句子括在一对花括号{}内。if(条件表达式){语句A1;语句A2;……}else{语句B1;语句B2;……}YangzhengMiddleSchoolif选择结构(双分支结构)——例3.6乘坐飞机时,乘客行李小于等于20公斤时,按每公斤1.68元收费,大于20公斤时,按每公斤1.98元收费,编程计算收费(保留2位小数)。#includecstdiousingnamespacestd;intmain(){floatw,p;scanf(%f,&w);if(w=20){p=w*1.68;printf(%.2f,p);}else{p=w*1.98;printf(%.2f,p);}return0;}YangzhengMiddleSchoolif语句的嵌套if语句允许嵌套,即if分支语句还可以是if语句格式:if(条件表达式)if(条件表达式)语句1;else语句2;elseif(条件表达式)语句3;else语句4;YangzhengMiddleSchoolif语句的嵌套——例3.7当if语句嵌套时,约定else总是和最近的一个if语句配对。if(ab)if(bc)y=a;elsey=c;if(ab){if(bc)y=a;}elsey=c;else部分否定的是条件bc,即它与第二个if语句配对else部分否定的是条件ab,即它与第一个if语句配对YangzhengMiddleSchoolif语句的嵌套——例题读入三条线段的长度(均为正数),判断这三条线段是否能构成三角形,若能构成三角形,判断所构成三角形的形状(等边、等腰、一般)。【问题分析】if三边能构成三角形•if其中有一对边相等–if三边相等,显示“等边三角形”–else(没有三边相等),显示“等腰三角形”•else(没有一边相等)–显示“一般三角形”else(不构成三角形)•显示“无法构成三角形”YangzhengMiddleSchoolif语句的嵌套——例题#includecstdiousingnamespacestd;intmain(){floata,b,c;scanf(%f%f%f“,&a,&b,&c);if((a+bc)&&(a+cb)&&(b+ca))if((a==b)||(a==c)||(b==c))if((a==b)&&(b==c))printf(等边三角形\n);elseprintf(等腰三角形\n);elseprintf(一般三角形\n);elseprintf(不能构成三角形\n);return0;}YangzhengMiddleSchool三目运算符C++中有一个常用来代替if-else语句的操作符,这个操作符被称为三目运算符(?:),它是C++中唯一一个需要3个操作输的操作符。格式为:说明:先求表达式1的值,如果为true,则执行表达式2,并返回表达式2的结果;如果表达式1的值为false,则执行表达式3,并返回表达式3的结果。如:x=53?10:12;//53为true,所以x=10x=3==9?25:18;//3==9为false,所以x=18表达式1?表达式2:表达式3YangzhengMiddleSchool三目运算符——例3.8使用三目运算符来确定两值中较大的一个#includeiostreamusingnamespacestd;intmain(){inta,b;cinab;intc=ab?a:b;coutcendl;return0;}YangzhengMiddleSchool上机练习1、输出较大数的平方值:判断两个数a,b,输出较大数的平方值。2、判断数正负:从键盘读入一个数,判断它的正负。是正数,则输出“+”,是负数,则输出“-”,是零,则输出“0”。3、输出绝对值:输入一个浮点数,输出这个浮点数的绝对值,保留到小数点后两位。4、奇偶数判断:给定一个整数,判断该数是奇数还是偶数。如果n是奇数,输出odd;如果n是偶数,输出even。5、判断是否为两位数:判断一个正整数是否是两位数(即大于等于10且小于等于99)。若该正整数是两位数,输出1,否则输出0。6、判断能否被3,5,7整除:给定一个整数,判断它能否被3,5,7整除,把能整除的数按照从小到大的顺序输出,每个数中间一个空格,若这个数不能被任何数整除,输出小写字符‘n’,不包括单引号。YangzhengMiddleSchoolswitch语句YangzhengMiddleSchoolswitch语句应用条件语句可以很方便地使程序实现分支,但是出现分支比较多的时候,虽然可以用嵌套的if语句来解决,但是程序结构会显得复杂,其至凌乱。为方便实现多情况选择,C++提供了一种switch开关语句。YangzhengMiddleSchoolswitch语句(多分支结构)格式:switch(表达式){case常量表达式1:语句序列1;case常量表达式2:语句序列2;……case常量表达式n:语句序列n;default:语句序列n+1;}switch(表达式)表达式==常量表达式1表达式==常量表达式2表达式==常量表达式n……语句序列n+1语句序列1语句序列2语句序列3……truetruetruefalsefalsefalseYangzhengMiddleSchoolswitch语句(多分支结构)#includeiostreamusingnamespacestd;intmain(){inta;cina;switch(a){case1:cout1;case2:cout2;case3:cout3;default:cout4;}}输入:1输出:1234输入:2输出:234输入:3输出:34输入:4输出:4输入:5输出:4YangzhengMiddleSchoolswitch语句(多分支结构)在实际使用switch语句时,通常要求当执行完某个case后的一组语句序列后,就结束整个语句的执行,而不让它继续执行下一个case语句后面的语句序列。为此,可通过使用break语句来实现。该语句只有保留字break,而没有其它任何成分。它是一条跳转语句,在switch中执行到它时,将结束switch语句,系统接着向下执行其它语句。YangzhengMiddleSchoolswitch语句(多分支结构)格式:switch(表达式){case常量表达式1:语句序列1;break;case常量表达式2:语句序列2;break;……case常量表达式n:语句序列n;break;default:语句序列n+1;}switch(表达式)表达式==常量表达式1表达式==常量表达式2表达式==常量表达式n……语句序列n+1语句序列1语句序列2语句序列3……truetruetruefalsefalsefalseYangzhengMiddleSchoolswitch语句(多分支结构)#includeiostreamusingnamespacestd;intmain(){inta;cina;switch(a){case1:cout1;break;cas
本文标题:A3-程序的控制结构-选择结构
链接地址:https://www.777doc.com/doc-3771787 .html