C++学习笔记三--基本控制语句

目录

前言

一、C++语句

二、顺序结构

1.声明语句

2.表达式语句

3.基本输入/输出语句

4.复合语句和空语句

三、选择结构

1.if语句

2.switch语句

四、循环结构

1.for语句 

2.while语句 

3.do...while语句

4.循环的嵌套   

五、跳转语句        


前言

    这篇文章介绍一下C++中的基本控制语句

一、C++语句

        在C++中,语句是构成程序的基本单位,用于执行特定的操作。

二、顺序结构

1.声明语句

        声明语句:声明语句用于声明变量、函数、类等标识符。

int x;
void func();
class MyClass;

2.表达式语句

        表达式语句执行一个表达式,并且以分号结尾。

x = 10;
cout << "Hello, World!";

3.基本输入/输出语句

        输出语句:使用 cout 对象可以将数据输出到标准输出流(通常是显示器)上

cout << "Hello, World!" << endl; 

        输入语句:使用 cin 对象可以从标准输入流(通常是键盘)读取数据。

 int x;
cout << "Enter a number: ";
cin >> x;

4.复合语句和空语句

        空语句:空语句不执行任何操作,只包含一个分号。通常用于语法要求的位置或者占位符

;

        复合语句(也称为块语句)是一组语句的序列,它们被包裹在花括号 {} 中,并被视为一个独立的语句单元。在 C++ 中,复合语句允许将多个语句组合在一起,并在需要单个语句的地方使用。

        

#include <iostream>
using namespace std;int main() {int x = 5;{int y = 10;cout << "Inside inner block: x = " << x << ", y = " << y << endl;} // y的作用域在这里结束// y在这里不可见cout << "Outside inner block: x = " << x << endl;return 0;
}

三、选择结构

1.if语句

        C++ 中最基本和常用的控制流语句之一,用于根据条件选择执行不同的代码块。if 语句的基本语法如下:

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

        如果 condition 的值为真(非零),则执行 if 语句后面的代码块;如果 condition 的值为假(零),则跳过 if 语句后面的代码块,继续执行程序的下一条语句。

if 语句还可以与 else 配合使用,形成 if-else 结构,用于在条件为假时执行另一段代码块。if-else 语句的语法如下:

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

        

下面是一个示例,演示了 ifif-else 语句的用法:

#include <iostream>
using namespace std;int main() {int x = 10;// 简单的if语句if (x > 5) {cout << "x is greater than 5" << endl;}// 带有else的if语句if (x > 20) {cout << "x is greater than 20" << endl;} else {cout << "x is not greater than 20" << endl;}// 嵌套的if语句if (x > 5) {if (x < 15) {cout << "x is between 5 and 15" << endl;}}return 0;
}

2.switch语句

        switch语句是 C++ 中另一种常用控制流语句,用于根据表达式的值选择不同的执行路径。        

        switch语句的基本语法如下:

switch (expression) {
    case value1:
        // 在表达式等于 value1 时执行的代码块
        break;
    case value2:
        // 在表达式等于 value2 时执行的代码块
        break;
    // 更多的 case 语句...
    default:
        // 如果表达式的值与所有的 case 值都不匹配时执行的代码块
        break;
}

        switch语句首先计算表达式的值,然后将这个值与 case 标签中的值进行比较。如果找到一个匹配的 case 标签,则执行相应的代码块,并跳过后面的 case标签;如果没有找到匹配的 case 标签,则执行default标签后面的代码块(如果有),或者直接跳过 switch语句。

        注意:
        - 每个 case 标签后面都必须有一个 break语句,用于终止 switch语句的执行,否则将会继续执行下一个 case 标签后面的代码块。
        - default标签是可选的,用于处理表达式的值与所有 case值都不匹配的情况。

下面是一个示例,演示了 `switch` 语句的用法:

#include <iostream>
using namespace std;int main() {int choice;cout << "Enter a number between 1 and 3: ";cin >> choice;switch (choice) {case 1:cout << "You chose option 1" << endl;break;case 2:cout << "You chose option 2" << endl;break;case 3:cout << "You chose option 3" << endl;break;default:cout << "Invalid choice" << endl;break;}return 0;
}

        在这个示例中,用户输入一个数字,然后根据这个数字执行相应的操作。根据用户的输入,switch语句会选择不同的执行路径。

四、循环结构

1.for语句 

        for循环是 C++ 中常用的一种循环结构,用于重复执行一段代码,直到条件不再足。

        for循环的基本语法如下:

for (initialization; condition; update) {
    // 在条件为真时执行的代码块
}

        其中:

        initialization 是循环开始前的初始化语句,通常用于初始化循环控制变量。
        condition 是循环继续执行的条件,每次循环迭代之前都会进行检查。如果条件为真,则继续执行循环;如果条件为假,则结束循环。
        update是循环迭代后更新循环控制变量的语句,通常用于增加或减少循环控制变量的值。

        for 循环可以替代 while 循环,它的结构更加简洁明了,适合于循环次数已知的情况。

        下面是一个示例,演示了 for循环的用法:

#include <iostream>
using namespace std;int main() {// 打印数字1到5for (int i = 1; i <= 5; ++i) {cout << i << " ";}cout << endl;// 计算数字1到5的和int sum = 0;for (int j = 1; j <= 5; ++j) {sum += j;}cout << "Sum of numbers 1 to 5: " << sum << endl;return 0;
}

        在这个示例中,我们使用 for循环打印了数字1到5,以及计算了数字1到5的和。在 for循环的括号中,我们分别进行了循环变量的初始化、条件的检查和循环变量的更新。

2.while语句 

       while 循环是 C++ 中另一种常用的循环结构,它用于重复执行一段代码,直到指定的条件不再满足。while循环的基本语法如下:

while (condition) {
    // 在条件为真时执行的代码块
}

其中 condition是循环继续执行的条件。在每次循环迭代开始时,会检查 condition的值。如果 condition 为真,则执行循环体内的代码块;如果 condition为假,则结束循环,程序继续执行循环后面的代码。

while循环常用于循环次数不确定的情况,只要条件为真,循环就会继续执行。

下面是一个示例,演示了 `while` 循环的用法:

#include <iostream>
using namespace std;int main() {int num = 1;// 打印数字1到5while (num <= 5) {cout << num << " ";++num;}cout << endl;// 计算数字1到5的和num = 1;int sum = 0;while (num <= 5) {sum += num;++num;}cout << "Sum of numbers 1 to 5: " << sum << endl;return 0;
}

        在这个示例中,我们使用 while 循环打印了数字1到5,以及计算了数字1到5的和。在 `while` 循环的括号中,我们指定了条件 num <= 5,并在循环体内对循环控制变量 num进行递增操作。

3.do...while语句

        do...while 循环是 C++ 中另一种循环结构,它和 while循环类似,但在执行循环体之前会先执行一次条件检查。这意味着无论条件是否为真,循环体至少会执行一次。

        do...while 循环的基本语法如下:

do {
    // 循环体内的代码块
} while (condition);

其中 condition 是循环继续执行的条件。在每次循环迭代开始时,会先执行循环体内的代码块,然后再检查 condition 的值。如果 condition 为真,则继续执行循环;如果 condition为假,则结束循环,程序继续执行循环后面的代码。

do...while 循环适用于需要至少执行一次循环体的情况。

下面是一个示例,演示了 do...while循环的用法:

#include <iostream>
using namespace std;int main() {int num = 1;// 打印数字1到5do {cout << num << " ";++num;} while (num <= 5);cout << endl;// 计算数字1到5的和num = 1;int sum = 0;do {sum += num;++num;} while (num <= 5);cout << "Sum of numbers 1 to 5: " << sum << endl;return 0;
}

        在这个示例中,我们使用 do...while 循环打印了数字1到5,以及计算了数字1到5的和。无论条件 num <= 5是否为真,循环体至少会执行一次。

4.循环的嵌套   

        循环的嵌套是指在一个循环内部包含另一个循环。C++ 允许在任何循环体内部嵌套其他类型的循环,包括 for 循环、while 循环、do...while 循环等。通过循环的嵌套,可以实现更复杂的控制流程和算法逻辑。

下面是一个简单的示例,演示了循环的嵌套:

#include <iostream>
using namespace std;int main() {// 外层循环控制行数for (int i = 1; i <= 5; ++i) {// 内层循环控制每行打印的星号数量for (int j = 1; j <= i; ++j) {cout << "* ";}cout << endl;}return 0;
}

        在这个示例中,外层循环控制行数,内层循环控制每行打印的星号数量。通过循环的嵌套,我们实现了一个打印直角三角形的功能。

        循环的嵌套可以嵌套多层,可以结合条件判断语句,实现更复杂的控制逻辑。然而,过度的循环嵌套可能会导致代码可读性下降和性能问题,因此需要谨慎使用。        

五、跳转语句        

        跳转语句是 C++ 中的一种特殊语句,用于改变程序的执行流程,通常用于控制程序的跳转和循环中的终止。

        以下是几种常见的跳转语句:

        1. break 语句:在循环语句 (for, while, do...while) 或 switch 语句中,break语句用于终止当前循环或 switch语句的执行,并跳出循环或 switch语句的代码块。

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

        2. continue 语句:在循环语句 (for, while, do...while) 中,continue 语句用于跳过当前迭代的剩余部分,直接进入下一次循环迭代。

    for (int i = 0; i < 10; ++i) {if (i % 2 == 0) {continue; // 当 i 为偶数时跳过本次循环}cout << i << endl;}

        3. return 语句:在函数中,return语句用于返回函数的执行结果,并结束函数的执行。

    int square(int x) {return x * x; // 返回 x 的平方}

        4. goto 语句:goto语句是 C++ 中最基本的跳转语句,它可以直接跳转到指定标签(标签必须在当前作用域内)的语句处执行。

    int x = 0;loop:cout << x << endl;++x;if (x < 10) {goto loop; // 跳转到 loop 标签处继续执行}

        尽管 `goto` 语句在一些特定情况下可能会提供一种解决问题的途径,但通常不推荐使用,因为它会使程序的流程变得难以理解和维护。相比之下,使用结构化的控制语句(如 break、continue、return)可以使代码更加清晰易读。

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

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

相关文章

C++11可变模板参数:海纳百川的Args

目录 一、可变模板参数的概念及功能 1.1Args的概念与使用 1.2获取args中的参数 二、emplace可变模板参数的实际应用 三、逗号表达式展开参数包 一、可变模板参数的概念及功能 1.1Args的概念与使用 C11的新特性可变参数模板能够让您创建可以接受可变参数的函数模板和类模板…

二维码门楼牌管理应用平台建设:物业缴费的数字化革新

文章目录 前言一、物业缴费的数字化革新二、在线缴费功能的实现三、智能化缴费管理的优势四、面临的挑战与未来展望五、结语 前言 随着科技的不断进步&#xff0c;二维码门楼牌管理应用平台已成为物业管理的新趋势。在这样一个平台上&#xff0c;物业缴费的数字化革新不仅提高…

【计算机网络】TCP协议可靠传输保证(序列号/确认应答机制、超时重传、最长消息长度、滑动窗口控制、拥塞控制)

TCP协议可靠传输 1.序列号确认应答机制2.超时重传3.最长消息长度4.滑动窗口控制5.拥塞控制 1.序列号确认应答机制 这个机制类似于问答的形式。比如在课堂上老师会问你“明白了吗&#xff1f;”&#xff0c;假如你没有隔一段时间没有回应或者你说不明白&#xff0c;那么老师就会…

橘子学JDK之JMH-03(@State)

这里我们来搞官方的第三个案例&#xff0c;引入新的注解State。 一、案例三代码 package com.levi;/*** Description:* Author: Levi* Date: 2024/4/8 18:44*/import org.openjdk.jmh.annotations.*; import org.openjdk.jmh.runner.Runner; import org.openjdk.jmh.runner.R…

【YOLOV8】项目目录重点部分介绍和性能评估指标

目录 一 项目目录重点部分介绍 二 性能评估指标 一 项目目录重点部分介绍 1 ultralytics

揭秘Dropbear SSH:轻量级的安全外壳协议实现

在远程管理和通讯的世界里&#xff0c;安全是至关重要的一环。SSH&#xff08;Secure Shell&#xff09;协议是互联网上用于安全远程登录和其他网络服务的标准方式。当我们提到SSH时&#xff0c;OpenSSH可能是最广为人知的实现。然而&#xff0c;在资源受限的环境中&#xff0c…

windows环境变量滥用维权/提权

0x01 前提 通过滥用系统的路径搜索机制来欺骗高权限用户执行看似合法的系统二进制文件&#xff0c;实际上是恶意的代码或程序&#xff0c;从而导致升权限并执行恶意操作。 攻击的关键前提&#xff1a; 路径搜索顺序&#xff1a; 当用户在命令行或程序中执行一个命令时&#x…

kafka 高吞吐设计分析

说明 本文基于 kafka 2.7 编写。author blog.jellyfishmix.com / JellyfishMIX - githubLICENSE GPL-2.0 概括 支撑 kafka 高吞吐的设计主要有以下几个方面: 网络 nio 主从 reactor 设计模式 顺序写。 零拷贝。 producer producer 开启压缩后是批量压缩&#xff0c;bro…

【Qt】:常用控件(七:输入类控件)

常用控件 一.Combo Box&#xff08;下拉框&#xff09;二.Spin Box&#xff08;微调框&#xff09;三.ate Edit&Time Edit&#xff08;日期微调框&#xff09;四.Dial&#xff08;旋钮&#xff09;五.Slider&#xff08;滑动条&#xff09; 一.Combo Box&#xff08;下拉框…

738.单调递增的数字

// 定义一个名为Solution的类 class Solution { public:// 定义公共成员函数&#xff1a;计算并返回大于等于输入整数N且其各位数字非降序排列的最小整数int monotoneIncreasingDigits(int N) {// 将整数N转换成字符串形式&#xff0c;方便操作每一位数字string strNum to_str…

23linux 自定义shell文件系统

打印环境变量&#xff0c;把当前子进程所有环境变量打印出来 环境变量也是一张表&#xff08;指针数组以null结尾&#xff0c;最后条件不满足就退出了 &#xff09; 用子进程调用 结论1 当我们进行程序替换的时候 &#xff0c;子进程对应的环境变量&#xff08;子进程的环境变…

聚焦ChatGPT:学术写作全攻略

ChatGPT无限次数:点击直达 聚焦ChatGPT&#xff1a;学术写作全攻略 引言 在当今信息爆炸的时代&#xff0c;学术写作对于研究人员和学生来说是至关重要的技能。而随着人工智能的不断发展&#xff0c;ChatGPT作为一个强大的自然语言处理工具&#xff0c;为学术写作带来了全新的…

Mybatis执行器(Executor)

Executor简介 Executor Executor是MyBatis的核心接口之一&#xff0c;其中定义了数据库操作的基本方法。在实际应用中经常涉及的SqlSession接口的功能&#xff0c;都是基于Executor接口实现的。 BaseExecutor BaseExecutor是一个实现了Executor接口的抽象类,它实现了Execut…

pytorch 与 python版本对应关系

pytorch 与 python版本对应关系 torchtorchvisionPythonmain / nightlymain / nightly>3.8, <3.112.20.17>3.8, <3.112.10.16>3.8, <3.112.00.15>3.8, <3.111.130.14>3.7.2, <3.101.120.13>3.7, <3.101.110.12>3.7, <3.101.100.11&…

word文档拆分

Word如何拆分文档&#xff1f;-Word将文档拆分的方法 - 极光下载站 (xz7.com) 可以参考这篇&#xff0c;注意需要全部选中后再创建。 最需要注意的是&#xff0c;拆分后原文档不存在了&#xff0c;最多可以显示引用的拆分的文档&#xff0c;如果拆分有误&#xff0c;则无法恢复…

Yolov8-pose关键点检测:特征融合 | CAMixing:卷积-注意融合模块和多尺度提取能力 | 2024年4月最新成果

💡💡💡本文独家改进:CAMixingBlock更好的提取全局上下文信息和局部特征,包括两个部分:卷积-注意融合模块和多尺度前馈网络; 💡💡💡如何跟YOLOv8结合:1)放在backbone后增强对全局和局部特征的提取能力;2)放在detect前面,增强detect提取能力; 提供多种改进方…

RabbitMQ3.13.x之十一_RabbitMQ中修改用户密码及角色tgs

RabbitMQ3.13.x之十一_RabbitMQ中修改用户密码及角色tgs 文章目录 RabbitMQ3.13.x之十一_RabbitMQ中修改用户密码及角色tgs1. 修改用户的密码1. 修改密码语法2. 修改案例 2.修改角色tags1. 修改标签(tags)语法2. 修改案例 可以使用 RabbitMQ 的命令行工具 rabbitmqctl 来修改用…

【MATLAB源码-第180期】基于matlab的PTS,SLM,CPFilter三种降低OFDM系统的PAPR仿真。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 1. 限幅和滤波&#xff08;Clipping and Filtering&#xff09; 原理简介 限幅和滤波是一种基础且直观的方法&#xff0c;用于降低OFDM信号的PAPR。在限幅阶段&#xff0c;信号的幅度在达到设定阈值时会被削减&#xff0c;…

皮具5G智能制造工厂数字孪生可视化平台,推进企业数字化转型

皮具5G智能制造工厂数字孪生可视化平台&#xff0c;推进企业数字化转型。随着信息技术的快速发展&#xff0c;数字化转型已成为企业提升竞争力、实现可持续发展的关键路径。皮具行业&#xff0c;作为一个传统的手工制造业&#xff0c;正面临着巨大的市场变革和技术挑战。如何在…