介绍: 分支结构是C++三大结构之一, 分支结构主要分为6部分,分别是关系运算符,逻辑运算符,if语句,if语句的嵌套,条件表达式,switch语句.
一、关系运算符
重点内容:
1.关系运算符:<(小于),>(大于),<=(小于或等于),>=(大于或等于),==(等于),!=(不等于)。
2.关系表达式:由运算符连起来的表达式。关系表达式的结果是一个逻辑值"真"(1)或"假"(0),"真"表示关系成立,"假"表示关系不成立。
注意事项:
1.等于与赋值的区别:
"=="表示等于,例如a==5表示判断a是否与5相等。"="表示赋值,表示将常数5赋值给变量a。
2.实型数据(浮点数)的运算关系:
整型数据的关系运算按照数值的大小进行比较,字符型数据按照ASCII码的大小进行比较,但是实型数据在计算机中是近似储存的,直接比较大小会出现问题。0.666666是否等于0.666667呢?这个结果不一定,若要求结果在0.001这个范围内,则相等,若结果在0.000001范围内,则不相等。所以,在C++中,一般用两个数值的差与要求的精度进行比较,判断它们是否相等,或者判断一个数是否等于0。
3.运算符的优先级:运算符的优先级就是在一个表达式中,既有各种算术运算符,又有各种关系运算符时,按照什么先后顺序进行计算。(1.有括号的先算括号里面。2运算符的优先级由高到低:算术运算符,关系运算符,赋值运算符.)
二、逻辑运算符
重点内容:
1.三种逻辑运算符:&&(逻辑与)、‖(逻辑或)、!(逻辑非)。(&&,‖是双目运算符,!是单目运算符)
2.逻辑表达式:由逻辑运算符连起来的表达式称为逻辑表达式。其运算结果也是一个逻辑值"真"或"假"。
典例精选:
1.一个0~100之间(不包括0和100)的数a。
解:0<a<100(错误表达)
a<0&&a<100(正确表达)
2.短路计算:
例如,对于"A&&B",如果已经算出表达式A为假,那么整个表达式的值肯定为假,于是表达式B就不需要再计算下去了。同理,对于"A‖B",如果已经计算出表达式A为真,那么整个表达式一定为真,于是表达式B也不必计算下去了。
3.判断X年是否为闰年:
一种是能被400整除。
另一种是能被四整除,但不能被100整除。
表达式:
(X%400==0)‖(X%4==0)&&(X%100!=0)
注意事项:
1.整型数据也可以参加逻辑运算:
整型数据在参与逻辑运算时,根据
其值是0或非0,分别当作逻辑
值"假"或"真"进行处理。(非零为
真,零为假)
2.逻辑表达式是"短路计算":
在逻辑表达式的计算过程中,一旦
能够确定整个表达式的值,就会立
即停止计算。(例如典例2)
三、if语句
重点内容:
1.if语句的格式:
第一种: if(表达式)
语句1;
else
语句2;
如果表达式成立,执行语句1;
如果表达式不成立,执行语句2。
第二种:if(表达式)
语句;
如果表达式成立,执行语句。
典例精选:
1.两个数交换值:{c=a;
a=b;
b=c;}
注意事项:
1.复合语句:用{ }括起来。
四、if语句的嵌套
典例竞选:
if语句的嵌套的使用:
#include<iostream>
using namespace std;
int main(){
int x,y,z;
cin>>x>>y>>z;
if(x<=y)
if(y<=z)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
else
cout<<"NO"<<endl;
return 0;
}
在上述程序中,if…else…语句的if子句里有套了一个if…else…语句,这就是if语句的嵌套。
上述程序所要注意的事项:
1.在程序设计中,if语句的嵌套,一 般是用来解决三种及以上的分支情况。
2.上述程序中,在第一层的if子句里嵌套了一个if语句(第二层),也就是嵌套一层。有时,情况分类很多,也可以根据需要,在第一层的else子句里嵌套,还可以在第二层的if里继续嵌套第三层,在第三层的if里继续嵌套第四层……
3.if与else的配对关系:一个程序中可能会出现很多的if和else子句,程序中的else子句总是与离它最近的前面一个if子句配对。
4.编程要形成良好的代码风格:为了增强程序的可读性,if…else…语句及其嵌套都采用"缩进"对齐格式,让同层的if子句与else子句对齐。
五、条件表达式
重点内容:
1.条件表达式的格式:
<表达式1>?<表达式2>:<表达式3>
其运算规则为:首先计算表达式1的值,若表达式1的值为真(非0),则只计算表达式2,并将其结果作为整个表达式的值;否则,只计算表达式3,并将其结果作为整个表达式的值。
典例精选:
判断x年是否为闰年(x%4==0?"YES":(x%100!=0?"YES":"NO"):"NO"))
六、switch语句
重点内容:
1.switch语句用于多种分支语句。
2.switch语句的格式:
switch(表达式){
case 常量表达式1:语句1;[break;]
case 常量表达式2:语句2;[break;]
…
case 常量表达式n:语句n;[break;]
[default:语句组n+1]
执行过程:先计算表达式的值,然后从前往后依次与case子句中所列出的各个常量表达式的值进行比较,若表达式的值与常量中的值相等,就开始进入相应的case后面的语气组执行,遇到后续的case也不再进行判断(默认匹配),直到遇到break语句或switch语句结束。default表示表达式与所有常量表达式的值都不匹配,那么就执行其后面的语句组,通常将default放在最后。如果表达式与各分支向量表达式的值都不匹配时,不需要执行任何语句,则default可以省略。
典例精选:
思考分别输入为ABC,则程序输出什么。
#include<iostream>
using namespace std;
int main(){
char ch;
cin>>ch;
switch(ch){
case'A':
case'B':
case'C':cout<<"pass"<<endl;break;
}
}
因为三个case子句共用一个语句组"cout<<"Pass"<<endl;break;"所以输出结果均为"Pass".
我想我感:
分支结构学起来不是很难,实用性也非常高,不同的分支种类,适合不同的语句,例如如果分支少的话,可以选择if语句,分支多的话,则可以选择switch啦,非常方便!
分支结构可以计算分段函数的值,还可以分类讨论事件的不同情况,在数学和现实中都有举足轻重的地位。作为一名专业为数学的学生,我感谢C++中的分支结构,它省了我们数学工作者在计算上的很多麻烦,可以让我们在数学的世界里大步向前,探索更深层的数学奥秘。