C++系列八:选择、循环与转向

news2025/2/25 10:42:12

选择、循环与转向

    • 1. 选择语句
    • 2. 循环语句
    • 3. 转向语句
    • 4. 总结

1. 选择语句

选择语句使用条件来确定程序将执行哪些代码。在C++编程中,选择语句有多种类型,包括if语句、switch语句和三元运算符。

(1)if语句

if语句是C++编程中最常见的选择语句之一,语法如下:

if (condition)
{
    statement;
}

其中,condition是一个布尔表达式,如果它的值为true,则执行statement。如果该条件为false,则程序跳过if语句并执行后续的代码。

if语句也可以带有一个可选的else子句,以便在条件不满足时执行其他语句。它的语法如下:

if (condition)
{
    statement1;
}
else
{
    statement2;
}

这种情况下,如果condition为true,则执行statement1,否则执行statement2。

适用场景:

  • 控制代码的执行流程
  • 根据条件执行不同的代码块

e.g.

#include <iostream>

using namespace std;

int main()
{
    int num = 5;

    if (num > 0)
    {
        cout << "Number is positive." << endl;
    }
    else if (num < 0)
    {
        cout << "Number is negative." << endl;
    }
    else
    {
        cout << "Number is zero." << endl;
    }

    return 0;
}

这个程序将根据变量num的值输出不同的消息。

(2)switch语句

switch语句是另一种常见的选择语句,它基于一个表达式的值来选择要执行的代码块,语法如下:

switch (expression)
{
    case value1:
        statement1;
        break;

    case value2:
        statement2;
        break;

    default:
        statement3;
}

这种情况下,表达式的值将与每个case的value进行比较。如果匹配到了一个case值,则执行相应的statement,并跳出switch语句。如果没有匹配到任何值,则执行default语句块(可选)。

适用场景:

  • 根据不同的条件执行不同的代码块
  • 优化if-else语句的结构和代码风格

e.g.

#include <iostream>

using namespace std;

int main()
{
    int num = 2;

    switch (num)
    {
        case 1:
            cout << "Monday" << endl;
            break;

        case 2:
            cout << "Tuesday" << endl;
            break;

        case 3:
            cout << "Wednesday" << endl;
            break;

        default:
            cout << "Invalid day" << endl;
            break;
    }

    return 0;
}

这个程序将根据变量num的值输出对应的星期几。

(3)三元运算符

三元运算符是一种简单的选择语句,它可用于根据条件选择两个不同的值,语法如下:

condition ? value1 : value2;

如果条件为true,则该语句将返回value1,否则返回value2。

适用场景:

  • 简单的单行条件判断
  • 优化if-else语句的结构和代码风格

e.g.

#include <iostream>

using namespace std;

int main()
{
    int num = 3;
    string message = (num > 0) ? "Number is positive." : "Number is negative or zero.";

    cout << message << endl;

    return 0;
}

这个程序将根据变量num的值输出对应的消息。

2. 循环语句

C ++中的循环语句包括forwhiledo while循环,可用于执行一系列重复操作,直到某个条件不再满足为止。

每种循环结构都有其独特的优点和适用场景,并可根据情况进行调整以实现灵活的循环控制。

一、for循环

for循环是C++中最基本的重复结构之一,语法如下:

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

其中,init是循环初始化表达式,用于初始化循环计数器;condition是循环条件表达式,只要它的值为真,循环就会继续执行;increment是循环更新表达式,用于更新循环计数器。循环体就是要重复执行的代码块。

for循环的优点是易于掌握,可以通过调整循环初始化表达式、循环条件表达式和循环更新表达式来实现灵活的循环控制。但是,对于一些复杂的循环控制,for循环可能会变得难以管理。

适用场景:

  • 处理具有固定数量的元素的数据,例如数组或列表
  • 执行需要执行特定次数的操作

e.g.

#include <iostream>

using namespace std;

int main()
{
    int i, n;

    cout << "Enter a positive integer: ";
    cin >> n;

    for (i = 1; i <= n; i++)
    {
        cout << i * i << " ";
    }

    return 0;
}

这个程序接受一个正整数n,并打印出1到n的平方。

(2)while循环

while循环是一种更加通用的重复结构,语法如下:

while (condition)
{
    // 循环体
}

这里的condition是一个布尔表达式,如果它的值为真,则继续执行循环体中的代码块。在循环体执行完毕后,条件被重新评估,如果它仍然为真,则再次执行循环体。

for循环相比,while循环更加灵活

适用场景:

  • 执行需要满足特定条件的操作
  • 处理动态大小的数据集

e.g.

#include <iostream>

using namespace std;

int main()
{
    int i = 0;

    while (i < 10)
    {
        cout << i << " ";
        i++;
    }

    return 0;
}

这个程序将打印出从0到9的数字。

(3)do while循环

do while循环是C++中另一种重复结构,语法如下:

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

while循环相比,do while循环保证循环体至少会执行一次,因为while条件是在循环体执行完后测试的。

适用场景:

  • 执行至少需要执行一次的操作
  • 处理从用户或其他来源获取信息的情况

e.g.

#include <iostream>

using namespace std;

int main()
{
    int i = 0;

    do 
    {
        cout << i << " ";
        i++;
    } while (i < 10);

    return 0;
}

这个程序将打印出从0到9的数字,包括0和9。

3. 转向语句

C++中的转向语句是用来改变程序执行顺序的一种语句,当程序遇到转向语句时,它会跳过某些代码或者跳转到指定的代码位置执行。

C++中的转向语句包括goto语句、break语句、continue语句和return语句。每种语句都有其独特的优点和适用场景,并且可以在编程中实现更高效、更灵活的控制流。

(1)goto语句

goto语句是C++中最基本的转向语句之一,语法如下:

goto label;
//...
label: statement;

其中,label是标签名,它应该唯一并在同一函数中定义,statement是要执行的语句。

当程序执行到goto语句时,它会跳到label处执行相应的语句。因为goto语句具有非常大的灵活性,所以它可以用来解决某些问题,但如果使用不恰当,也可能会导致代码难以理解和维护。

适用场景:

  • 在嵌套结构中跳出循环
  • 在函数中实现错误处理

e.g.

#include <iostream>

using namespace std;

int main()
{
    int i = 0;

    loop:
        cout << i << " ";
        i++;

        if (i < 10)
            goto loop;

    return 0;
}

这个程序将打印出从0到9的数字。

(2)break语句

break语句是另一种用于转向控制流的语句,语法如下:

while (condition)
{
    // 循环体

    if (condition)
    {
        break;
    }
}

当遇到break语句时,程序将立即跳出语句块并执行该语句后面的代码。

适用场景:

  • 跳出循环
  • 在多层嵌套结构中跳出指定的结构

e.g.

#include <iostream>

using namespace std;

int main()
{
    int i = 0;

    while (i < 10)
    {
        cout << i << " ";
        i++;

        if (i == 5)
            break;
    }

    return 0;
}

这个程序将打印出从0到4的数字。

(3)continue语句

continue语句也是用于跳过某些代码的语句,语法如下:

while (condition)
{
    // 循环体

    if (condition)
    {
        continue;
    }

    // 其他代码
}

当遇到continue语句时,程序将跳过它后面的代码,然后开始下一次循环迭代。

适用场景:

  • 跳过当前循环迭代
  • 在多层嵌套结构中跳过指定的结构

e.g.

#include <iostream>

using namespace std;

int main()
{
    int i = 0;

    while (i < 10)
    {
        i++;

        if (i == 5)
            continue;

        cout << i << " ";
    }

    return 0;
}

这个程序将打印出从1到10的数字,但不包括数字5。

(4)return语句

return语句也是一种转向语句,它可用于从函数中返回,并提供一个可选的返回值,语法如下:

return expression;

其中,expression是要返回的值。

适用场景:

  • 从函数中返回
  • 向调用函数返回值

e.g.

#include <iostream>

using namespace std;

int square(int x)
{
    return x * x;
}

int main()
{
    int result = square(5);
    cout << result << endl;

    return 0;
}

这个程序将计算并打印出数值25。

4. 总结

20年前学习C++语言的幼稚记录在这里插入图片描述

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

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

相关文章

Oracle EBS Interface/API(49)- AP付款取消API

快速参考 参考点内容功能导航N: AP->付款->录入->付款并发请求None基表AP.AP_CHECKS_ALLAPI参考下面介绍错误信息表None接口FormNone接口ReportNoneDebug ProfileNone详细例子参考如下实例官方文档None数据验证包None用户界面 Path:AP->付款->录入->付款-&g…

UNIX网络编程卷一 学习笔记 第十三章 守护进程和inetd超级服务器

守护进程是在后台运行且不与任何控制终端关联的进程。Unix系统通常有很多守护进程在后台运行&#xff08;约20到50个的量级&#xff09;&#xff0c;执行不同的管理任务。 守护进程由系统初始化脚本&#xff08;在开机时运行&#xff09;启动&#xff0c;而没有控制终端是系统…

华为交换机特殊场景使用mux vlan

场景主要用于&#xff1a; 设置两个vlan&#xff0c;每个vlan内的所有用户自动获取地址和能上外网&#xff0c;但是自个valn间用户都不能互相访问&#xff0c;每个用户又都可以 和其它vlan的用户通信。 官方版&#xff1a; 操作步骤 1.配置MUX VLAN 创建VLAN2、VLAN3和VLAN…

Python综合案例—利用tkinter实现计算器的程序

目录 一、导入 tkinter 库 定义全局变量 二、定义回调函数 三、创建窗口对象 四、创建标签控件 五、创建数字按钮 六、创建加、减、乘、除和等于按钮 七、创建清空按钮 八、总结 用Python实现计算器可以让我们更好地理解面向对象编程、GUI 编程和事件驱动编程等概念&a…

知识变现海哥:掌握这四个步骤,轻松实现知识变现

你是否有过这种感受&#xff0c;看了很多书&#xff0c;网上报课花了很多钱&#xff0c;课程屯了很多&#xff0c;可是依然很难变现&#xff0c;问题出在哪里呢&#xff1f; 海哥写这本《知识变现道法术器》将为你揭开答案。 海哥&#xff0c;国内知名知识变现创业教练&#x…

Java开发 - 不知道算不算详细的MySQL多维度性能优化剖析

前言 MySQL性能优化是一个很大的话题&#xff0c;小到一句SQL&#xff0c;大到一个系统&#xff0c;都是我们优化的目标&#xff0c;博主之前曾写过一篇关于SQL优化的博客&#xff0c;感兴趣的小伙伴直接点击即可。本篇&#xff0c;我们将从多个维度来讲解MYSQL性能优化相关的…

【Python】朴实无华的yolov5环境配置

前言 最近有一个项目需要用到目标识别&#xff0c;于是我一下子就想到了大名鼎鼎的yolo&#xff0c;于是花了一天时间了解了一下。但是很遗憾的是&#xff0c;我自己随便配置的一个环境能运行torch&#xff0c;但是只要一训练yolov5的库&#xff0c;电脑就要蓝屏&#xff0c; 随…

为什么是ChatGPT引发了AI浪潮?

目录 BERT和GPT简介 BERT和GPT核心差异 GPT的优势 GPT的劣势 总结 随着近期ChatGPT的火热&#xff0c;引发各行各业都开始讨论AI&#xff0c;以及AI可以如何应用到各个细分场景。为了不被时代“抛弃”&#xff0c;我也投入了相当的精力用于研究和探索。但在试验的过程中&…

FE_Vue学习笔记 插槽 slot

插槽分为匿名插槽、具名插槽、作用域插槽。子组件中&#xff1a; 匿名插槽只能有一个&#xff1b;可以有多个具名插槽&#xff1b;作用域插槽中可以有匿名插槽和具名插槽。 当项目中一个组件可以多次复用时&#xff0c;我们可以把这个组件封装成单独的.vue文件&#xff0c;从…

【UDS】ISO15765-2之网络时间参数

文章目录 简介分类1. N_As2. N_Ar3. N_Bs4. N_Br5. N_Cs5. N_Cr 总结 ->返回总目录<- 简介 网络层定时参数定义了N_As、N_Ar、N_Bs、N_Br、N_Cs、N_Cr六个参数。 这些时间参数在多帧传输中可以定义在下图的过程中 分类 1. N_As 方向&#xff1a; 发送方->接收方 …

听我一句劝,不要去外包,两年外包生涯做完,感觉自己废了一半....

先说一下自己的情况。大专生&#xff0c;17年通过校招进入湖南某软件公司&#xff0c;干了接近5年的点点点&#xff0c;今年年上旬&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落&#xff01;而我已经在一个企业干了五年的功能测试…

springmvc执行请求的顺序

当一个请求执行时&#xff0c;springMVC的DispatcherServlet&#xff08;前端控制器&#xff09; 会拦截到他&#xff0c;然后调用HandlerMapping &#xff08;处理器映射器&#xff09;&#xff0c;找到对应的URL地址&#xff0c;然后返回给前端控制器。前端控制器根据返回的U…

基于列系数比较一组迭代次数的顺序

( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 让网络的输入有3个节点&#xff0c;训练集AB各由6张二值化的图片组成&#xff0c;让A中每行有1个1&#xff0c;B中全是0&#xff0c;排列组合A &#xff0c;统计迭代次数的顺序。共有729组不同的排列组合&#xff0c;但按照对称性只有26…

第一个Go语言程序

第一个Go语言程序 目录 第一个Go语言程序引言Go的开发环境安装GoPATH编辑器 第一个Go程序总结 引言 本系列博客将手把手带着大家从零基础入门go语言&#xff0c;不定时更新吧&#xff0c;自己学到哪就更新到哪&#xff0c;先讲讲为什么要学习go语言&#xff1a;列出以下几点go…

<TensorRT> 下载及部署

TensorRT-下载及部署 1、下载前相关查询 查看显卡驱动版本&#xff1a;nvidia-smi 查看cuda版本&#xff1a;nvcc -V cuda与显卡驱动对应表&#xff1a;https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#title-new-features TensorRT兼容性查询&#…

详解静态、动态代理以及应用场景

一篇不太一样的代理模式详解&#xff0c;仔细阅读&#xff0c;你一定会获取不一样的代理见解&#xff0c;而不是人云亦云。 查看了社区里关于代理模式描述&#xff0c;发现很多博客千篇一律甚至存在共性错误&#xff0c;写此文提出自己对代理的见解。 静态代理动态代理 JDKCGLi…

ChitGPT回答tp6写答题系统

答题系统是一个涉及多个模块的复杂系统&#xff0c;需要涉及到前端展示、后台管理、题库管理、试卷生成、考试管理等方面。下面我将简单介绍用thinkphp6框架如何实现一个基本的答题系统。 首先&#xff0c;我们需要创建数据库并设计数据表&#xff0c;包括用户表、题目表、试卷…

每日学术速递5.7

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Multimodal Procedural Planning via Dual Text-Image Prompting 标题&#xff1a;通过双文本图像提示进行多模态程序规划 作者&#xff1a;Yujie Lu, Pan Lu, Zhiyu Chen, Wanron…

微信小程序文件上传、下载和图片处理、文件操作API的使用

这次按照我的理解来做这部分的笔记 首先&#xff0c;复习上节课所学的内容。就是网络请求api的使用 现在我有一个需求就是点击按钮实现获取后端返回的图片 先打开服务器 看一下我们要返回的图片路径 书写结构 看一下返回来的数据。是在data下的banners里。因此我们封装一下 这…

【利用AI刷面试题】50道前端基础面试题

文章目录 以下是一些可能出现在前端基础面试中的问题&#xff1a;1. 如何判断当前浏览器是否支持某个 HTML5 特性&#xff1f;2. Box-sizing 属性有哪些取值&#xff0c;分别代表什么意思&#xff1f;3. 什么是浏览器的同源策略&#xff1f;4. 什么是 CORS&#xff1f;如何使用…