C++——分支语句

Wesley13
• 阅读 765

  在日常生活中的很多时候,我们要进行判断,比如说:判断1+1是否等于2,今天的主食吃米饭还是馒头,喜欢一个人到底要不要表白......咳咳,总之,需要做判断的情况有很多很多。程序本就是为了解决问题而编写的,自然也有很多需要进行判断的地方。这一节的内容就是学会如何使用分支语句进行判断。

  在学习分支语句前先介绍一个新的数据类型:布尔值(bool)

  在C++中,布尔值只有两种,即真(true)和假(false),然后我们来看一下布尔表达式,布尔表达式是用来判断布尔值为真还是假的表达式,例如:

  1+1==2; //布尔值为真

  1+1!=3; //布尔值为假

  连接两边的叫做关系运算符,有下面几种:(注意等于是两个“=”)

  C++——分支语句

  下面我们学习最简单的单分支if语句

if(boolean-expression)//括号中的是一个布尔值,当其为真时,执行下面statement语句
{
    statement(s);//要执行的部分,有分号
}//注意括号要成对,没有分号

  然后我们来学习如何声明布尔值,并在if分支语句中使用它:

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     bool boolean = 1;
 8 //声明一个bool类型的变量boolean,1或其他非0值表示true,0表示false;
 9     if (boolean)//以if关键字开头的分支语句,当括号内为真时,输出true;
10     {
11         cout << "true";
12     }
13     return 0;
14 }

  运行后的结果就是输出一个单词“true”,如果将boolean = 1改成boolean = 0,那么运行的结果是什么都不输出,因为boolean现在的值是false。

  但是如果我们想知道boolean是什么的时候,我们可以使用双分支if-else语句

if(boolean-expression)
{
    statement(s)-for-true-case;
}
else //如果布尔表达式不是true,执行下面语句
{
    statement(s)-for-false-case;
}

  举个例子,如果我们想让用户输入一个圆的半径进而求出圆的面积,那么用户就不能输入小于0的数:

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     const double PI = 3.14159;//定义一个常量PI的数值为3.14159
 8     double radius = 0,area = 0;
 9     //定义double变量radius和area分别为圆的半径和所求的面积
10     cin >> radius;//输入圆的半径
11     
12     if(radius>=0)//判断输入的半径是否合法
13     {
14         area = radius*radius*PI;
15         cout << "面积为:" << area;
16     }
17     else
18     {
19         cout << "无效输入,请输入不小于0的值";
20     }
21     return 0;
22 }

  如果statement只有一句(像上面else中的情况),可以不写括号,但是并不建议,因为在修改时很容易造成错误。

  然后就是if嵌套语句多分支的if-else语句

   C++——分支语句

  上图中的a就是if嵌套语句,b则是多分支语句,两者表达的意思一样,但是第二种风格要更好一些。

  接下来我们来学习逻辑运算符

   C++——分支语句     

  以及它们各自的真值表:

  C++——分支语句

   "!", "&&", "||" 分别表示离散数学中的逻辑非,逻辑与,逻辑或(相当于集合的补,交,并)。

  比如说我要判断一个整数是否大于10且小于等于20:

 1 #include <iostream>
 2 
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int num = 0;
 8     cin >> num;
 9     
10     if(num>10&&num<=20)
11     {
12         cout << "合法输入"
13     }       
14     else
15     {
16         cout << "非法输入";
17     }
18     return 0;
19 }

  除了if,还有一种分支语句,是switch语句。switch语句可以简化多重情况的分支语句。

switch(switch-expression)
{
    case value1:statement(s)1;break;
    //当switch表达式匹配到的值为value1时,执行statement1语句,并且跳出语句块
    case value2:statement(s)2;break;
    //当switch表达式匹配到的值为value12时,执行statement2语句,并且跳出语句块
    ...
    case value1n:statement(s)n;break; 
    //当switch表达式匹配到的值为valuen时,执行statementn语句,并且跳出语句块
    default:statement-for-default;
    //当switch表达式匹配不到给定的value时,执行statement-for-default语句后退出
}

//上面代码等同于下面代码:
if(if-expression==value1)
{
    statement(s)1;
}
else if(if-expression==value2)
{
    statement(s)2;
}
else ...if(if-expression==valuen)
{
    statement(s)n;
}
else
{
    statement-for-default;
}

  再来说一下条件表达式,它是C++中唯一一个三元运算符,格式如下:

bool-expression ? expression1 : expression2;
//如果bool表达式为真,则表示expression1,否则为expression2

//相当于:
if (bool-expression)
{
    expression1;
}
else 
{
    expression2;
}

  运算符的优先级:

  C++——分支语句

   因为要记住这些优先级很麻烦,所以建议可以不用去记优先级,多用括号即可。

  本节就到这里结束,如有错误,请各位麻烦指出!

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
java中比较两个时间的差值
项目背景1.某篇文稿的发布时间是publishDate,例如:2020072118:00:41。2.现要求判断该篇文稿的发布时间是否在近30天之内。publicstaticlongdayDiff(DatecurrentDate,DatepublishDate){LongcurrentTimecurrentDat
CuterCorley CuterCorley
3年前
C语言基础习题50例(七)31-35
喜提头条号黄V,有兴趣的朋友可以关注一波,主写IT领域。习题31请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。实现思路:使用switch语句,如果第1个字母一样,则判断用情况语句或if语句判断第2个字母。也可以使用条件判断语句,实现相近。代码如下:cinclude<stdio.hintma
Stella981 Stella981
3年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
C语言二次系统学习3(分支循环、函数)
本次学习,主要针对语句和函数两部分进行学习。分支语句(if,switch)与循环语句(while,for,dowhile)switch语句中,在每个选择之后如果不进行break跳出,会执行下一个case,而且应注意default语句的使用,一般会放在{}代码块的后方dowhile语句中,会首先执行一次循环,再进行判定,所以使用相对较少。whi
达里尔 达里尔
10个月前
给数组添加新数据,判断数据是否重复
多选要进行数组拼接,希望判断往原数组里添的新数据是否重复,封装个简易方法languageconstdataArrayname:'aaa',id:1,name:'bbb',id:2;constnewDataname:'ccc',id:2;//要添加的新数