0
点赞
收藏
分享

微信扫一扫

C++总结 | 10 if嵌套与逻辑运算符



戳一戳!和我一起走进C++的世界

导读

C++是信息学中非常重要的一门课程,也是绝大多数学生入门信息学、参加信息学竞赛所必备的一门编程语言。


掌握C++,不仅可以让孩子对电脑、编程有更加深刻的认识,也能将学习信息学的方法应用到其他学科领域,特别是能够促进孩子对数学逻辑的理解。


本篇文章中,我们一起来回顾一下if嵌套,总结一下if四大结构与逻辑运算符,并完成课后小练习吧!




1 if 四大结构

1 回顾

 之前的课程中,了解到了if判断语句有四种结构,也就是if四大结构,包括:


(1)if;
(2)if-else;
(3)if - else if - else;
(4)if嵌套;


今天我们讲解了后两种,所以我们一起来回顾一下这四种结构,方便我们后续的使用。


在回顾之前,我们要讲一点,我们在上一篇文章中提到的if的简写形式:当判断条件下的执行语句只有一条时,可以有两种简写方式,分别是:


第一种:if判断和执行语句分两行写,执行语句要比if判断语句多一个缩进(tab)
第二种:if判断和执行语句写在同一行,执行语句和if判断语句用空格隔开。


这种简写形式同样适用于if的另外三大结构

2 if 与 if-else

我们昨天讲了两种结构:if if-else


这两种结构是 if 判断语句的基本结构,用法如下:


int a;
cin>>a;

if(a>0) cout<<"a是正数"<<endl;

else cout<<"a不是正数"<<endl;


3 if - else if - else

第三种结构是 if - else if - else 结构,else if 可以使用多次。示例如下:


int a;
cin>>a;

if(a<0){
cout<<"a是负数"<<endl;
}
else if(a == 0){
cout<<"a是0"<<endl;
}
else{
cout<<"a是正数"<<endl;
}



使用多次 else if 示例如下:


#include<iostream>
using namespace std;

int main(){

float score;
cin>>score;

if(score>=90)
cout<<"优"<<endl;
else if(score>=80) //隐含条件是score>=90不成立
cout<<"良"<<endl;
else if(score>=70) //隐含条件是score>=80不成立
cout<<"还行"<<endl;
else if(score>=60) //隐含条件是score>=70不成立
cout<<"及格"<<endl;
else //隐含条件是上面的都不成立 ,即score<60
cout<<"不及格"<<endl;

return 0;
}


后面的每次出现的else if都表示当前面所有if和else if 条件不满足时,如果满足当前条件,执行相关语句。最后的else表示当前面所有条件都不满足时,执行相关语句


所以我们要注意,

后面的判断条件有隐含条件,就是它前面的条件是不成立的


这样,我们就能在写条件的时候,省略掉某些不必要的条件。

4 if 嵌套

if嵌套就是在判断里面写判断




每次嵌套可选择的方式有两种,一种是在if中嵌套,一种是在else中嵌套。例如:


if(a<10) { 
if(a>0){
cout<<"a是一个一位数"<<endl;
}
else{
cout<<"a<=0"<<endl;
}
}


if(a>0){
cout<<"a>0"<<endl;
}
else{
if(a==0){
cout<<"a=0"<<endl;
}
else{
cout<<"a<0"<<endl;
}
}


if嵌套可以和 if - else if - else 结构互相转化,如果每次都在else中嵌套,先满足外层的else,再满足内层的if,表达的含义和else if是一致的;先满足外层的else,再满足内层的else,表达的含义和else是一致的。


2 逻辑运算符

1 总述

 在今天的课程中,我们讲解了新的运算符,逻辑运算符,包括:


(1) && : 逻辑与
(2) || : 逻辑或
(3) ! : 逻辑非


在不同的领域,逻辑运算符有不同的读法,最常用的有如下三种:


(1) 逻辑与、逻辑或、逻辑非
(2) 与、或、非
(3) 或、且、非


逻辑运算符用来连接多个逻辑语句,实现更全面的逻辑功能


逻辑运算符的结果也只有两种情况,分别是truefalse


2 逻辑与 &&

逻辑与也叫且、与,表达的含义就是并且的意思。


逻辑与的结果总结一下就是:有错就错,都对才对


示例如下:


1<2 && 3<4 && 5<6 //true
1<2 && 3<4 && 5>6 //false
1>2 && 3>4 && 5>6 //false


3 逻辑或 &&

逻辑或也叫,表达的含义就是或者的意思。


逻辑或的结果总结一下就是:有对就对,都错才错


示例如下:


1<2 && 3<4 && 5<6 //true
1<2 && 3<4 && 5>6 //true
1>2 && 3>4 && 5>6 //false


4 逻辑非 !

逻辑非也叫,表达的含义就是取反的意思。


逻辑非的结果总结一下就是:对变成错,错变成对


示例如下:


!(1<2) //false
!(5>6) //true


5 运算符优先级与运算顺序

 我们学习加减乘除的时候,我们知道,乘除法的优先级高于加减法。运算顺序从左向右,如果有括号,先算括号里面的。


同样,在逻辑运算符中,也是有优先级存在的:


非 > 与 > 或


所以运算顺序可以总结如下:


(1)先算逻辑非,再算逻辑与,最后算逻辑或;
(2)同级运算中,从左往右依次运算;
(3)有括号运算符(),则先算括号运算符里面的;


6 “屏蔽”与“短路”


int a = 1;

if(1<=2 || a++) cout<<a<<endl;


输出的a的值是:1。这说明a++并未执行。这是因为:


在逻辑或中,如果前面的已经是正确的,那么结果一定为正确, 后面的就没有执行的必要了,计算机会“偷懒”,不计算后面的内容。我们把这种情况叫做“屏蔽”或者“短路”。


会产生屏蔽与短路的情况有如下两种:


(1)逻辑与中,前面的已经错了,则结果一定为错,后面的不执行,被屏蔽(短路);
(2)逻辑或中,前面的已经对了,则结果一定为对,后面的不执行,被屏蔽(短路);


3 习题

根据今天讲的内容,完成下面的两道习题。


先用注释写好代码的功能、流程,再根据流程完成代码。

1 求最大值

键盘输入4个数,输出其中最大的数字。

2 判断闰年

输入一个年份,输出这一个年份是平年还是闰年。




AI与区块链技术

C++总结 | 10 if嵌套与逻辑运算符_嵌套

长按二维码关注











举报

相关推荐

0 条评论