C++-逻辑语句

if语句

基本格式:

只有判断结果为true,才会执行后续{}内的代码

if (要执行的判断,结果需是bool型)
{
    判断结果true,才会执行的代码;
}
if (条件判断)
{  
    如果判断结果为true,会执行的代码;
}

else{
    如果判断结果为false,会执行的代码;
}

可以编写多个else if 语句 判断从上到下互斥,

有一个满足就不会在判断其它条件 可以在最后提供else语句,全部条件不满足后的执行

if (条件判断)
{
    如果判断结果为true,会执行的代码;
}
else if (条件判断2)
{
    条件2为true,会执行的代码;
}
else if (条件判断N)
{
    条件N为true,会执行的代码;
}
else
{    
    上述判断全部为false,会执行的代码;
}

嵌套:

if (条件)
{
    code;
    if (条件)  
    {
    code; 
    }
    else
    {
 	 code;
    }
}
else
{
    code;
}

swtich控制语句

它在功能上和if、else if的组合使用基本一致, 只是提供了另外一种更为简洁的针对多条件判断的写法。

switch(expression)
{    
    case expression_1:
        code;
        break; // 可选的     
    case expression_2:
        code;
        break; // 可选的 
       …
       …       
    case expression_N:
        code;
        break; // 可选的
        default:// 当没有任何 case 表达式的值与 expression 的值匹配时,执行此语句
}

需要注意的是,switch语言只执行一次,直到出现break才停止。如果没有出现break,那么就会一直执行后面的程序。

代码举例:

#include "iostream"
using namespace std;


int main()
{
    // 输入数字1-7 输出星期几
//    int num;
//    cout << "请输入数字来告知是星期几(1-7):" << endl;
//    cin >> num;

//    switch(num){
//        case 1:
//            cout << "今天是星期一" << endl;
            break;
//        case 2:
//            cout << "今天是星期二" << endl;
            break;
//        case 3:
//            cout << "今天是星期三" << endl;
            break;
//        case 4:
//            cout << "今天是星期四" << endl;
            break;
//        case 5:
//            cout << "今天是星期五" << endl;
//            break;
//        case 6:
//            cout << "今天是星期六" << endl;
            break;
//        default:
//            cout << "今天是星期天" << endl;
//    }
    int num;
    cout << "请给电影打分10和9是优秀、8和7是一般、6和5是普通,低于5是垃圾:" << endl;
    cin >> num;

    switch (num) {
        case 10:
        case 9:
            cout << "优秀" << endl;
            break;
        case 8:
        case 7:
            cout << "普通" << endl;
            break;
        case 6:
        case 5:
            cout << "一般" << endl;
            break;
        default:
            cout << "垃圾电影" << endl;
    }

    return 0;
}

枚举

枚举是一种用户自定义类型,可以将数字标号定义为具体的符号。

枚举一般用于对各种不同的状态,定义可识别的符号。

枚举类型本质上述数字

默认数字序号从0开始递增,也可以手动指定,如上。指定RED为1,那么YELLOW为2,BLUE为3

枚举可以配合switch case语句一起使用,增加代码的可读性。

#include "iostream"
using namespace std;


int main()
{
    /*
     * enum 枚举类型名称{
     * 枚举元素,
     * 枚举元素,
     * ...,
     * ...,
     * }
     */
    // 询问小朋友喜欢的颜色:红黄蓝三种选1个
//    enum Color{
//        RED,        // 默认是0
//        YELLOW,     // 默认是1
//        BLUE        // 默认是2
//    };
    enum Color{
        RED = 1,
        YELLOW = 3,
        BLUE = 5
    };

    int num;
    cout << "小朋友们你们喜欢什么颜色?1红色,3黄色,5蓝色" << endl;
    cin >> num;

    switch (num) {
        case RED:
            cout << "小朋友喜欢红色!" << endl;
            break;
        case YELLOW:
            cout << "小朋友喜欢黄色!" << endl;
            break;
        case BLUE:
            cout << "小朋友喜欢蓝色!" << endl;
            break;
        default:
            cout << "你输入的数字有误,不知道你喜欢什么颜色!" << endl;
    }

    return 0;
}

while循环:

while循环需要提供判断表达式,只要表达式结果为true,就会持续的执行下去

表达式的判断需要有变量,否则会无限循环。即一般会在代码提供:循环因子,即可以在每一次循环产生变化的变量或其它,用来规避循环无限执行。

#include "iostream"
using namespace std;


int main()
{
    // 循环的控制因子
//    bool is_run = true;
//    int num = 0;        // 控制变量
//    while (is_run) {    // false就结束while循环了,true就继续执行循环体
//        cout << "hello" << endl;
//        num++;
//
//        if (num > 5) {
//            is_run = false; // 控制因子的更新
//        }
//    }

    // 我要向小美表白,每一天都表白,连续表白10天
    int day = 1;        // 循环的控制因子
    while (day <= 10)
    {
        cout << "今天是第" << day << "天,小美我喜欢你!" << endl;

        day++;          // 循环控制因子的更新
    }

    return 0;
}

do while

do while和while功能有相同也有不同:

do while和while都是基于条件判断的循环结构

while是:判断->执行->判断->执行...的流程

do while:执行->判断->执行->判断->执行...的流程

do while适用于需要对循环体先执行的场景

while编写乘法表举例:

#include "iostream"
using namespace std;

/*
 * 打印九九乘法表
 * 1. 外层循环控制行,内层控制列
 * 2. \t分隔内层循环的输出,行和行之间有换行分隔
 * 1x1=1
 * 1x2=2  2x2=4
 * 1x3=3  2x3=6  3x3=9
 * 1x4=4  2x4=8  3x4=12 4x4=16
 * 1x5=5  2x5=10 3x5=15 4x5=20 5x5=25
 * 1x6=6  2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
 * 1x7=7  2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
 * 1x8=8  2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
 * 1x9=9  2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
 * */

int main()
{
    // 1. 通过外层循环输出9行
    int line = 1;       // 外层循环控制因子,从1开始
    while (line <= 9)   // 判断条件,9行输出
    {
//        cout << line << endl;
        // 2. 内层循环
        int num = 1;    // 内层循环的控制因子
        while (num <= line)
        {
            cout << num << "x" << line << "=" << num * line << "\t";
            num++;      // 内层循环控制因子++
        }

        line++;         // 外层循环控制因子的更新
        cout << endl;
    }
    return 0;
}

while编写案列举例:

#include "iostream"
using namespace std;

/**
 * 细节点:
 * 1. 外层循环完成5天的减肥
 * 2. 内层循环进行:三次俯卧撑(三次完成减少1斤体重)、三次400米冲刺(三次完成减少1斤体重)
 * 3. 过程中要累计其体重减少
 */

int main()
{
    cout << "有点胖需要减掉10斤体重,计划5天,每天目标2斤体重。加油!" << endl;

    int sum = 0;            // 体重累加变量
    // 外层循环完成5天的减肥
    int day = 1;        // 减肥日的周期,从第一天开始。外层循环的控制因子
    while (day < 6)     // 控制减肥5天
    {
        cout << "今天是减肥的第" << day << "天" << endl;

        // 俯卧撑的三次控制
        int sport1 = 1;     // 俯卧撑控制因子
        while (sport1 < 4)
        {
            cout << "开始做减肥第" << day << "天的第" << sport1 << "个俯卧撑!  ";
            sport1++;       // 俯卧撑控制因子的更新
        }
        sum += 1;           // 体重减少的累加1
        cout << endl;
        cout << "减肥第" << day << "天的3个俯卧撑做完,体重减少1斤,累计减少" << sum << "斤!" << endl;

        // 400米冲刺的三次控制
        int sport2 = 1;     // 400米冲刺控制因子
        while (sport2 < 4)
        {
            cout << "开始做减肥第" << day << "天的第" << sport2 << "批次的400米冲刺!  ";
            sport2++;       // 400米冲刺控制因子的更新
        }
        sum+=1;             // 体重减少累加1
        cout << endl;
        cout << "减肥第" << day << "天的3个400米冲刺做完,体重减少1斤,累计减少" << sum << "斤!" << endl;
        day++;          // 循环控制因子的更新,每一天完事,day+1
        cout << endl;
    }

    cout << "5天的减肥完成,累计减少:" << sum << "斤体重!" << endl;

    return 0;
}

获取随机函数:

在代码中 #include "random" 将右侧代码放置在main函数之前 即可调用 get_random_num 函数, 随机数范围可以通过调用函数的2个参数控制,可以得到1~10范围的随机数字。

get_random_num(1,10)获取[1,10]的整数

for循环:

while循环,仅:条件判断,是语法要求,循环因子相关是用户自行提供。
for循环循环,条件判断、循环因子初始化、循环因子变化,均包含在for循环的语法内,是语法自带功能。

语法结果:

for循坏是一种更为严谨的循环:
循环因子的初始化
条件判断
循环因子的更新
都是for循环语法要求的。

for循环的循环因子初始化、条件判断、循环因子更新;
三部分是语法功能但不是强制要求,可根据需要提供或不提供

for循环和while循环区别:

for循环需要注意:

执行顺序为1——>2——>3——>4;1这个步骤只执行一次,后续执行是2——>3——>4不断重复执行。

for的嵌套:

for语句乘法表:

#include "iostream"
using namespace std;

/**
 * for|while (; ;)
 * {
 *      ...
 *      for|while ()
 *      {
 *          ...
 *      }
 * }
 */

int main()
{
    // 1. 对行的控制9行
    for (int line = 1; line <= 9; line++)
    {
        // 2. 对列进行控制
        // 1x3  2x3  3x3
        // 左侧操作数从1开始,到行号结束。 右侧操作数是固定为行号
        for (int col = 1; col <= line; col++)
        {
            cout << col << "x" << line << "=" << col * line << "\t";
        }
        // 每一行之间留下回车分隔
        cout << endl;
    }
    return 0;
}

变量的作用域

在C++代码中,变量并不是随时、随处可以访问的,而是要看作用域。
{...…}称之为代码块,也是内部变量的作用域
在{....}内部声明的变量,可以在{}内任何地方被访问,但在{}之外无法被访问到

循环中断语句

在循环中可以使用:

continue关键字,跳过本次循环,进入下一次;

break关键字,直接结束所在循环。

注意:如果执行的是continue这条指令,那么cout这条指令不会被执行。

如果执行的是break语句那么会直接跳出该代码块。

1.continue的作用是:
中断所在循环的当次执行,直接进入下一次
2.break的作用是:
直接结束所在的循环
3.注意事项:
continue和break,在for和while循环中作用一致
在嵌套循环中,只能作用在所在的循环上,无法对上层循环起作用

goto语句

1.goto语句可以实现任意跳转,无任何条件
2.基于其功能其实仅goto就可以实现如:循环,continue、break等的功能
3.goto语句建议:慎重使用、慎重使用、或者压根不用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/637423.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【工具】AFL+Unicorn|二进制程序模糊测试工具 AFL 和 Unicorn 的前世今生、安装以及 Python 使用实例

文章目录 【工具】AFLUnicorn&#xff5c;二进制程序模糊测试基础工具&#xff08;AFLUnicorn&#xff09;写在最前1. 系统环境2. 软件版本3. 背景知识3.1 AFL vs AFLplusplus3.2 QEMU vs Unicorn3.3 Unicorn vs UnicornAFL 4. 工具安装4.1 Ubuntu184.2 Ubuntu 20~224.3 收尾 5…

分布式事务——9种解决方案的原理与分类

目录 一、概要1. 分布式事务的概念2. 分布式事务解决方案分类 二、常见的分布式事务解决方案1. 基础的 2PC&#xff08;二阶段提交&#xff09;1.1 核心思想1.2 简介1.3 主要特点1.3.1 优点1.3.2 缺点 2. 基础的 3PC&#xff08;三阶段提交&#xff09;2.1 核心思想2.2 简介2.3…

【系统架构师】-案例篇(十五)SOA、微服务与数据库

1、可复用构件应具备哪些属性 可用性&#xff1a;构件必须易于理解和使用。 质量&#xff1a;构件及其变形必须能正确工作。 适应性&#xff1a;构件应该易于通过参数化等方式在不同语境中进行配置。 可移植性&#xff1a;构件应能在不同的硬件运行平台和软件环境中工作。 可变…

# 全面解剖 消息中间件 RocketMQ-(2)

全面解剖 消息中间件 RocketMQ-&#xff08;2&#xff09; 一、RocketMQ – RocketMQ 各角色介绍 1、RocketMQ 各角色介绍 Producer : 消息的发送者; 举例:发信者。Consumer : 消息接收者; 举例:收信者。Broker : 暂存和传输消息; 举例:邮局。NameServer : 管理 Broker; 举例…

全网最全爬取-b站爬取弹幕+评论之js逆向与xml降本增效

&#x1f31f; ❤️ 作者&#xff1a;yueji0j1anke 首发于公号&#xff1a;剑客古月的安全屋 字数&#xff1a;801 阅读时间: 10min 声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及…

K-means聚类模型

目录 1.定义 2.K-means聚类模型的优点 3.K-means聚类模型的缺点 4.K-means聚类模型的应用场景 5.对K-means聚类模型未来的展望 6.小结 1.定义 什么是 K-means 聚类模型&#xff1f;K-means 聚类模型是一种无监督学习算法&#xff0c;用于将数据划分为不同的组或簇&#…

概念+bug

模型 迭代模型和增量模型 增量模型是将一个大的需求变成小的功能&#xff0c;然后将每个功能逐个开发几乎完整再上线。 迭代模型会上线一个基础版本&#xff0c;但是基础版本所有的功能都有但是非常简陋&#xff0c;之后再迭代优化上线。 一般都是两个一起用&#xff0c;不…

微服务Day7学习

文章目录 数据聚合聚合分类 自动补全DSL实现Bucket聚合DSL实现Metrics聚合RestAPI实现聚合多条件聚合对接前端接口拼音分词器自定义分词器自动补全查询实现酒店搜索框自动补全 数据同步数据同步思路分析利用mq实现mysql与elasticsearch数据同步 集群介绍搭建ES集群 数据聚合 聚…

T01.如何寻找隐藏目录usr?

当我们打开Mac自带的Shell或者另外安装的zsh等工具时&#xff0c;我们所在的默认目录为用户目录usr。 Mac的这个bin目录&#xff0c;是一个已经包含在环境变量里的目录&#xff0c;程序放在里面或者链接到里面就可以在终端里直接执行。Mac的usr/bin目录是不允许增删文件的&…

tomcat三级指导

版本 ./catalina.sh linux version.bat win 1.确认是否使用了tomcat管理后台 我们先找到配置文件&#xff1a;tomcat主目录下/conf/server.xml 可以查看到连接端口&#xff0c;默认为8080 然后查看manager-gui管理页面配置文件&#xff0c;是否设置了用户登录 配置文件…

Obsidian Git 多端同步

2023年6月&#xff0c;某云笔记限制了免费用户最多同时登录 2 台设备&#xff0c;想要增加设备数量需要付费开通会员。之后我一直想找一款合适的笔记本软件&#xff0c;年底尝试了Obsidian&#xff0c;断断续续摸索了好几天终于成功了。将那时的笔记拿来分享一下。 相关地址&am…

Java轻松转换Markdown文件到Word和PDF文档

Markdown 凭借其简洁易用的特性&#xff0c;成为创建和编辑纯文本文档的常用选择。但某些时候我们需要更加精致的展示效果&#xff0c;例如在专业分享文档或打印成离线使用的纸质版时&#xff0c;就需要将Markdown文件以其他固定的文档格式呈现。通过将 Markdown 转换为 Word 和…

错误代码126:加载x3daudio1_7.dll失败的几种修复方法分享

在使用电脑玩游戏或者工作的过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中最常见的就是“错误代码[126]:加载x3daudio1_7.dll失败&#xff0c;该文件缺失或损坏!”&#xff0c;那么&#xff0c;什么是x3daudio17.dll文件&#xff1f;它为什么会丢失&#xff1…

剪画小程序:3个方法:告诉你如何将普通的照片转换成动漫二次元风格!

Hello&#xff01;亲爱的小伙伴们&#xff01; 你是否还在纠结于自己的自拍太普通&#xff0c;每次分享到社交账号上都觉得平平无奇&#xff0c;引不起波澜&#xff1f; 假如&#xff0c;你和朋友们一起出去玩&#xff0c;大家都开心地拍着自拍。你看着自己的照片&#xff0c…

多联机分户计费控制系统

中央空调多联机分户计费控制系统&#xff0c;针对国内常见几种品牌的多联机空调系统实行&#xff0c;远程控制与计费管理。系统采用MQTT网络协议&#xff0c;以订阅/发布模式实行设备感知&#xff0c;实现对室外机、室内机的状态监测、实时故障报警、累计分摊费用的实时数据传导…

SSMP整合案例第一步 制作分析模块创建与开发业务实体类

制作分析 我们要实现一个模块的增删改查 实际开发中mybatisplus用的不多&#xff0c;他只能对没有外键的单表进行简单的查询 但在这个案例中我们还是选择mybatisplus开发 模块创建 我们把所有服务器都放在一起 就不用前后端分离 我们尝试用后端开发进行全栈开发 新建项目添…

C++语法|多重继承详解(一)|理解虚基类和虚继承

系列汇总讲解&#xff0c;请移步&#xff1a; C语法&#xff5c;虚函数与多态详细讲解系列&#xff08;包含多重继承内容&#xff09; 虚基类是多重继承知识上的铺垫。 首先我们需要明确抽象类和虚基类的区别&#xff1a; 抽象类&#xff1a;有纯虚函数的类 虚基类是什么呢&a…

精选ThingsBoard物联网关

Thingsboard网关BL104 ThingsBoard物联网网关是一个指可以将数据采集转发至ThingsBoard平台的物联网网关&#xff0c;它使用且仅使用MQTT协议与ThingsBoard平台&#xff08;ThingsBoard IoT Platform&#xff09;进行通讯。这个网关为ThingsBoard平台提供支持更多协议的数据收…

poi操作word模板,对原有的word修改

/*** 化工园区调查表** param templatePath* param outPath* param parkInterview*/public static String getDocx(String templatePath, String outPath, ParkInterview parkInterview){File file new File(templatePath);File file1 new File(outPath);if(!file1.exists()…

2024 年 电工杯(B题)大学生数学建模挑战赛 | 平衡膳食食谱 | 数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时&#xff0c;你是否曾经感到茫然无措&#xff1f;作为2022年美国大学生数学建模比赛的O奖得主&#xff0c;我为大家提供了一套优秀的解题思路&#xff0c;让你轻松应对各种难题。 CS团队倾注了大量时间和心血&#xff0c;深入挖掘解决方案。通…