0第3讲关系、逻辑运算符和if语句1本讲内容为课本第三章3.5、3.6、3.72顺序结构顺序结构:之前所写程序为顺序结构,从主函数的第1个语句开始逐个语句执行,直至主函数结束。顺序结构不能满足实际需求,考虑期末成绩转换。程序非从头至尾逐语句执行,开始有不同转向。结构化程序设计:程序由顺序、选择、循环三种基本结构组成。下面学习选择结构—if语句。先介绍流程图的概念。33.1流程图4算法的基本概念程序=数据结构+算法程序设计关键之一,是解题的方法与步骤,即算法。算法的描述方法自然语言NS结构化流程图伪码流程图本节重点介绍流程图描述,其它描述方法请参考王敬华书。5流程图是一种传统的算法表示法,利用几何图形的框代表各种不同性质的操作,用流程线表示算法的执行方向。处理框判断框输入输出框连接点常见流程图符号:起止框流程线6例3.1:对下列编程题,画出流程图描述求解算法。输入三角形三条边a、b、c(假设输入有效),按如下公式求三角形面积:s=(a+b+c)/2A=√s(s–a)(s–b)(s–c)练习7开始输入a,b,c输出A结束))()((2/)(cSbSaSSAcbaS例3.1流程图8练习例3.2:输入立方体三条边,求体积和表面积。用流程图描述解题过程。9开始输入a,b,c输出vol,area结束)(2**acbcabareacbavol例3.2流程图103.2关系运算符与逻辑运算符11关系运算符、=、、=、==、!=#includestdio.hvoidmain(){inti;i=6;printf(“%3d%3d%3d\n”,i=4,i!=9,7i5);}C中,真为1,假为0。注:关系表达式成立,结果为1,否则为0。12逻辑运算符&&,||,!表达式1&&表达式2//逻辑与只有当表达式1和表达式2均为真(非0),结果为真(1)。表达式1||表达式2//逻辑或只要表达式1、表达式2有1个为真(非0),结果为真(1)。!表达式//逻辑非表达式为真(非0),结果为假(0)表达式为假(0),结果为真(1)13#includeiostream.hvoidmain(){inti,result;i=6;result=i&&i5coutresultendl;}注:C中,非0代表真,0代表假。14练习编程:输入年,输出1,0分别代表该年是否闰年。闰年:能被400整除或者能被4整除但不能被100整除。exp3_1.cpp15运算符优先级!*,/,%+,-,=,,===,!=&&||关于关系、逻辑运算符的详细内容参见王敬华书P111图5.216&&、||的计算顺序表达式1||表达式2根据||的定义,只要表达式1为真,结果为真。因此在计算表达式1||表达式2时,若式1为真,式2不计算。例:intn,a=-1;n=10;printf(“%d\t%d\n”,n||(a=a+1),a);17表达式1&&表达式2根据&&的定义,只要表达式1为假,结果必为假。因此在计算表达式1&&表达式2时,若式1为假,式2不计算。例:intn,a=-1;n=0;printf(“%d\t%d\n”,n&&(a=a+1),a);18bool—布尔型C++基本数据类型,逻辑型bool值只有true(1)或false(0)用于关系表达式或逻辑表达式判定中boolflag;flag=!(year%400)||!(year%4)&&year%100;193.3if语句20if语句语法if(表达式)语句;if(表达式){语句;}流程图表达式语句假真多于一个语句,构成复合语句,加{}21if语句语义当且仅当表达式为真时,执行语句(复合语句)。22练习编程:键入一字符,若是’b’,则响铃。exp3_2.cppcharch;1)ch=getche();#includeconio.h2)ch=getchar();#includestdio.h23空语句例:写出程序运行结果。#includeiostream.h#includeconio.hvoidmain(){coutplsinputthebkeytohearabell.\n;//提示信息charch;ch=gete();//输入一个字符if(ch==‘b’);cout'\a';}空语句;if(ch==‘b’);count‘\a’;//不管输入何字符,都会响铃24if…else语句语法if(表达式)语句1;else语句2;流程图表达式语句2语句1假真语义若表达式为真,执行语句1;否则,执行语句2。25练习编程:输入数a、b,输出最大值。exp3_3.cpp26条件运算符语法表达式1?表达式2:表达式3语义计算表达式1,若为真,则计算表达式2,作为结果值,否则计算表达式3,作为结果值。注:C++中唯一一个三目运算符,if…else语句的替代。27练习用条件运算符改写exp3_3.cpp。max=a=b?a:b;exp3_4.cpp28练习例:写出下列程序的运行结果。#includestdio.hvoidmain(){intx=10,y=20;printf(“%d%s%d\n,x,xy?greatthan:x==y?equalto“:lessthan“,y);}条件运算符可嵌套29•输入year•若year是闰年,输出year是闰年•否则,输出非闰年练习exp3_5.cpp30输入三个数a、b、c,若构成三角形,则按如下公式求三角形面积:A=√s(s–a)(s–b)(s–c)s=(a+b+c)/2练习exp3_6.cpp31本节知识回顾掌握关系运算符、逻辑运算符;掌握C++中真、假的表示,了解bool数据类型;掌握if的单分支、两路分支语法结构。