白骑士的C++教学基础篇 1.3 控制流

系列目录

上一篇:白骑士的C++教学基础篇 1.2 C++基础语法

        在编程中,控制流是指控制代码执行顺序的结构和语句。C++ 提供了多种控制流语句,使开发者能够根据条件执行不同的代码块,或者重复执行代码块。本篇博客将介绍 C++ 中的控制流,包括条件语句、循环语句和循环控制。

条件语句

        条件语句允许程序根据特定条件执行不同的代码块。在 C++ 中,常用的条件语句有 ‘if‘、‘else if‘、‘else‘ 和 ‘switch‘。

if 语句

        ‘if‘ 语句用于在条件为真时执行特定代码块。其基本语法如下:

if (condition) {// 当条件为真时执行此代码块
}

        例如:

int number = 10;if (number > 0) {std::cout << "The number is positive." << std::endl;
}

if-else 语句

        ‘if-else‘ 语句用于在条件为假时执行另一代码块。其基本语法如下:

if (condition) {// 当条件为真时执行此代码块
} else {// 当条件为假时执行此代码块
}

        例如:

int number = -5;if (number > 0) {std::cout << "The number is positive." << std::endl;
} else {std::cout << "The number is not positive." << std::endl;}

if-else if-else 语句

        ‘if-else if-else‘ 语句用于检查多个条件,并在匹配第一个条件后执行相应的代码块。其基本语法如下:

if (condition1) {// 当 condition1 为真时执行此代码块
} else if (condition2) {// 当 condition2 为真时执行此代码块
} else {// 当所有条件都为假时执行此代码块
}

        例如:

int number = 0;if (number > 0) {std::cout << "The number is positive." << std::endl;
} else if (number < 0) {std::cout << "The number is negative." << std::endl;
} else {std::cout << "The number is zero." << std::endl;
}

switch 语句

        ‘switch‘ 语句用于基于一个变量的值执行多个代码块。其基本语法如下:

switch (expression) {case value1:// 当 expression 等于 value1 时执行此代码块break;case value2:// 当 expression 等于 value2 时执行此代码块break;// 可以有任意数量的 case 语句default:// 当 expression 不等于任何已知值时执行此代码块break;
}

        例如:

char grade = 'B';switch (grade) {case 'A':std::cout << "Excellent!" << std::endl;break;case 'B':std::cout << "Well done!" << std::endl;break;case 'C':std::cout << "Good!" << std::endl;break;case 'D':std::cout << "Needs improvement." << std::endl;break;default:std::cout << "Invalid grade." << std::endl;break;
}

循环语句

        循环语句允许程序重复执行特定代码块。在 C++ 中,常用的循环语句有 ‘for‘、‘while‘ 和 ‘do-while‘。

for 循环

        ‘for‘ 循环用于执行固定次数的循环。其基本语法如下:

for (initialization; condition; increment) {// 循环体
}

        例如:

for (int i = 0; i < 5; ++i) {std::cout << "Iteration " << i << std::endl;
}

while 循环

        ‘while‘ 循环用于在条件为真时重复执行代码块。其基本语法如下:

while (condition) {// 循环体
}

        例如:

int count = 0;while (count < 5) {std::cout << "Count is " << count << std::endl;++count;
}

do-while 循环

        ‘do-while‘ 循环类似于 ‘while‘ 循环,但它会在条件检查之前至少执行一次循环体。其基本语法如下:

do {// 循环体
} while (condition);

        例如:

int count = 0;do {std::cout << "Count is " << count << std::endl;++count;
} while (count < 5);

循环控制

        在循环中,有时需要提前退出循环或跳过当前循环迭代。C++ 提供了 ‘break‘ 和 ‘continue‘ 语句来实现循环控制。

break 语句

        ‘break‘ 语句用于立即退出当前循环。其基本语法如下:

while (condition) {// 循环体if (another_condition) {break; // 退出循环}
}

        例如:

for (int i = 0; i < 10; ++i) {if (i == 5) {break; // 当 i 等于 5 时退出循环}std::cout << "Iteration " << i << std::endl;
}

continue 语句

        ‘continue‘ 语句用于跳过当前循环迭代,直接开始下一次迭代。其基本语法如下:

for (initialization; condition; increment) {// 循环体if (another_condition) {continue; // 跳过当前迭代}
}

        例如:

for (int i = 0; i < 10; ++i) {if (i % 2 == 0) {continue; // 跳过偶数迭代}std::cout << "Iteration " << i << std::endl;
}

结论

        通过掌握C++中的控制流语句,包括条件语句(‘if‘、‘else‘、‘switch‘)、循环语句(‘for‘、‘while‘、‘do-while‘)以及循环控制语句(‘break‘、‘continue‘),我们可以编写更加灵活和强大的程序。这些控制流语句是C++编程的基础,为我们实现复杂的逻辑和功能提供了有力的工具。在接下来的博客中,我们将继续探讨函数、数组和指针等C++的核心概念,帮助您进一步提升编程技能。

下一篇:白骑士的C++教学基础篇 1.4 函数

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

递归、搜索与回溯算法 2024.7.4-24.7.9

专题介绍&#xff1a; 一、递归 1、汉诺塔问题 class Solution {public void hanota(List<Integer> A, List<Integer> B, List<Integer> C) {int n A.size();move(n,A,B,C);// 将A柱上的n个盘子通过借助B盘子全部挪到C柱子上}void move(int m,List<Integ…

linux之段错误的分析

示例 1&#xff1a;段错误&#xff08;Segmentation Fault&#xff09; 假设你有以下简单的C程序&#xff0c;它会因为尝试解引用一个空指针而导致段错误&#xff1a; #include <stdio.h> int main() {int *ptr NULL;printf("%d\n", *ptr); // 尝试解引用空…

Python | Leetcode Python题解之第226题翻转二叉树

题目&#xff1a; 题解&#xff1a; class Solution:def invertTree(self, root: TreeNode) -> TreeNode:if not root:return rootleft self.invertTree(root.left)right self.invertTree(root.right)root.left, root.right right, leftreturn root

【ELK】filebeat 和logstash区别

Filebeat 和 Logstash 都是 Elastic Stack (也称为 ELK Stack) 的重要组件&#xff0c;用于日志数据的收集、处理和传输。它们有不同的功能和使用场景&#xff1a; Filebeat 角色: 轻量级日志收集器。功能: 从指定的日志文件中读取日志数据。可以从多个源&#xff08;如文件、…

01_空中机器人

空中机器人&#xff08;Aerial Robotics&#xff09;最早由美国乔治亚理工大学的Robert Michelson提出&#xff0c;是指各种搭载了GPS、机载导航设备、视觉识别设备以及无线通信设备等&#xff0c;能够在一定的范围内实现无人飞行的旋翼无人飞行器、无人飞艇等。 空中机器人拓…

Zynq系列FPGA实现SDI视频编解码+图像缩放+多路视频拼接,基于GTX高速接口,提供8套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本博已有的FPGA图像缩放方案本方案的无缩放应用本方案在Xilinx--Kintex系列FPGA上的应用 3、详细设计方案设计原理框图SDI 输入设备Gv8601a 均衡器GTX 解串与串化SMPTE SD/HD/3G SDI IP核BT1120转RGB自研…

带内管理与带外管理

目录 带外管理&#xff08;Out-of-Band Management&#xff09;带内管理&#xff08;In-Band Management&#xff09;Telnet&#xff08;远程登录协议&#xff09;SSH&#xff08;安全外壳协议&#xff09;Console&#xff08;控制台接口&#xff09; 带外管理&#xff08;Out-…

14-58 剑和诗人32 - 使用矢量数据库增强 LLM 应用程序

GPT-4、Bloom、LaMDA 等大型语言模型 (LLM) 在生成类似人类的文本方面表现出了令人印象深刻的能力。然而,它们在事实准确性和推理能力等方面仍然面临限制。这是因为,虽然它们的基础是从大量文本数据中提取统计模式,但它们缺乏结构化的知识源来为其输出提供依据。 最近,我们…

基于信号量的生产者消费者模型

文章目录 信号量认识概念基于线程分析信号量信号量操作 循环队列下的生产者消费者模型理论认识代码部分 信号量 认识概念 信号量本质: 计数器 它也叫做公共资源 为了线程之间,进程间通信------>多个执行流看到的同一份资源---->多个资源都会并发访问这个资源(此时易出现…

【Linux】进程(9):进程控制2(进程等待)

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家了解Linux进程&#xff08;9&#xff09;进程控制2&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 一. 为什么要进程等待二. 如何进行进程等待1.wait函数—…

【免费资源】GPU资源

阿里达摩院魔塔社区 大模型资源丰富 8核24G显存可以免费白嫖36小时 魔塔社区 百度飞浆社区 显存32G的V100每天白嫖8小时 谷歌colab 免费T4 GPU

使用linux的mail命令发送html格式的邮件

1、关闭本机的sendmail服务或者postfix服务 #执行下面的命令&#xff0c;各位大侠都对号入座吧 #sendmial service sendmail stop chkconfig sendmail off #postfix service postfix stop chkconfig postfix off#再狠一点就直接卸载吧.. yum remove sendmail yum remove postf…

欧拉部署nginx

1.下载nginx 下载地址&#xff1a;https://nginx.org/en/download.html 选择稳定版本 下的镜像文件进行下载 2.解压Nginx包 cd /root/nginx tar -zxvf nginx-1.26.0.tar.gz cd nginx-1.26.03.安装nginx相关依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl o…

如何在 CentOS 中配置 Linux 命名空间(ip netns)

引言 Linux 命名空间是一项强大的技术&#xff0c;允许在同一系统上创建多个独立的虚拟化实例&#xff0c;每个实例可以拥有自己的网络栈、路由表、IP 地址等网络资源&#xff0c;实现资源的隔离和管理。本文将深入探讨如何在 CentOS 中配置和使用 ip netns 命名空间&#xff0…

LeetCode K次取反后最大化的数组和(贪心算法)

给你一个整数数组 nums 和一个整数 k &#xff0c;按以下方法修改该数组&#xff1a; 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。 重复这个过程恰好 k 次。可以多次选择同一个下标 i 。 以这种方式修改数组后&#xff0c;返回数组 可能的最大和 。 示例 1&#xff1a;…

【面试题】正向代理和反向代理的区别?

正向代理&#xff08;Forward Proxy&#xff09;和反向代理&#xff08;Reverse Proxy&#xff09;是两种常见的代理服务器类型&#xff0c;它们在网络通信中扮演着不同的角色&#xff0c;具有不同的功能和应用场景。 一、正向代理 1. 定义与位置 正向代理是位于客户端和目标…

TextView 实现最后一行缩进指定距离

实现图上类似的效果。 指定最大行数为三行&#xff0c;最后一行缩进指定的距离。 如果行数小于三行&#xff0c;则不缩进。 同时文字两端对齐 代码里的 JustifyTextView &#xff08;两端对齐的 Textview &#xff09;详见 Android Textview 多行文本两端对齐_android tex…

Go语言入门之基础语法

Go语言入门之基础语法 1.简单语法概述 行分隔符&#xff1a; 一行代表一个语句结束&#xff0c;无需写分号。将多个语句写在一行可以用分号分隔&#xff0c;但是不推荐 注释&#xff1a; // 或者/* */ 标识符&#xff1a; 用来命名变量、类型等程序实体。 支持大小写字母、数字…

k8s核心操作_Deployment的扩缩容能力_Deployment自愈和故障转移能力---分布式云原生部署架构搭建022

然后我们上面说了k8s中的deployment的多副本能力 然后,我们再来看 k8s中的deployment的扩缩容能力 可以看到,对于扩容,要使用 kubectl scale 命令 对于缩容 要使用kubectl scale 命令都是使用这个命令对吧 来试试,可以看到上面命令 首先看看 kubectl get pod 可以看到有…

第58期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以找…