C++从零基础到入门(2)—— (if、switch、for、while语句)

news2024/11/16 19:30:37

目录

一、if 条件语句

1.if 语句

2.if-else 语句

3.if-else if-else 语句

4.嵌套 if 语句

二、switch 语句

1.switch 语句基本语法

2.表示 switch 表达式的数据类型

(1)整型

(2)字符型

(3)枚举型

三、for 循环

1.for循环基本语法

2.嵌套for循环

3.程序流程控制

(1)break语句

(2)continue语句

四、while 循环

1.while 基本语法

2.while 使用实例

(1)输出1到5的整数序列

(2)计算1到10之间奇数的和


一、if 条件语句

1.if 语句

在C++中,if 语句用于根据一个给定条件来判断是否执行特定的代码块。 if 语句的语法如下:

if (condition) {
    // 代码块1:当 condition 为真(非零)时执行
}

condition是一个布尔表达式,可以是关系运算(如 a > b,c == d)、逻辑运算(如 a && b,c || d)或其他返回布尔值的表达式。当condition结果为true时,if 语句后面的大括号内的代码块将被执行。反之,如果condition为false,代码块将被跳过,程序将继续执行if语句后的其他部分。

下面是一个简单的if 语句例子:

#include <iostream>

using namespace std;

int main()
{
    int num = 42;

    if (num % 2 == 0) {
        cout << "The number is even." << endl;
    }

    return 0;
}

在这个例子中,我们检查变量 num 是否是一个偶数( num % 2 == 0 )。当条件为 true 时,程序将输出 "The number is even."。如果条件为 false ,程序将不执行任何操作,并继续执行后续代码。

2.if-else 语句

在C++中,if-else语句用于在给定条件的基础上,在两个代码块中选择一个执行。if-else语句的语法如下:

if (condition) {
    // 代码块1:当 condition 为真(非零)时执行
    } else {
    // 代码块2:当 condition 为假(零)时执行
    }

condition是一个布尔表达式,可以是关系运算(如 a > b,c == d)或逻辑运算(如 a && b,c || d)等返回布尔值的表达式。当condition为true时,程序将执行代码块1,并跳过代码块2。当condition为false时,程序将略过代码块1,转而执行代码块2。

下面是一个简单的if-else语句例子:

#include <iostream>

using namespace std;

int main() 
{
    int num = -42;

    if (num >= 0) {
        cout << "The number is non-negative." << endl;
    } else {
        cout << "The number is negative." << endl;
    }

    return 0;
}

在这个例子中,我们检查变量num是否是非负数(num >= 0)。当条件为真(true),程序将输出 "The number is non-negative."。当条件为假(false),程序将输出 "The number is negative."。程序根据condition的结果在两个代码块中进行选择,并执行相应的代码。

3.if-else if-else 语句

在C++中,if-else if-else 语句用于根据多个条件对多个代码块之间进行选择和执行。if-else if-else 语句的语法如下:

if (condition1) {
    // 代码块1:当 condition1 为真 (非零) 时执行
} else if (condition2) {
    // 代码块2:当 condition1 为假 (零),且 condition2 为真 (非零) 时执行
} else {
    // 代码块3:当 condition1 和 condition2 均为假 (零) 时执行
}

condition1 和 condition2 均为布尔表达式,可以是关系运算、逻辑运算或其他返回布尔值的表达式。当 condition1 为 true 时,程序将执行代码块1,并跳过其他代码块。当 condition1 为 false ,但 condition2 结果为 true 时,程序将执行代码块2,并跳过代码块3。当 condition1 和 condition2 均为 false 时,程序将执行代码块3。

可以根据需要增加更多的 else if 分支以处理其他条件。

以下是一个 if-else if-else 语句的示例:

#include <iostream>

using namespace std;

int main() 
{
int score = 75;

    if (score >= 90) {
        cout << "Grade: A" << endl;
    } else if (score >= 80) {
        cout << "Grade: B" << endl;
    } else if (score >= 70) {
        cout << "Grade: C" << endl;
    } else if (score >= 60) {
        cout << "Grade: D" << endl;
    } else {
        cout << "Grade: F" << endl;
    }

    return 0;
}

在这个例子中,我们根据分数区间输出对应的等级。程序会按照 if-else if-else 结构逐个检查条件,并执行满足条件的代码块。注意:一旦执行了满足条件的代码块,整个 if-else if-else 结构将终止,不再检查其他条件。在本例中,得分为75,程序会输出 "Grade: C"。

4.嵌套 if 语句

在C++中,嵌套if语句指的是在一个if语句内部包含另一个或多个if语句。这种语法结构可以应用在需要对多个条件进行逐层判断的场景。嵌套if语句的语法如下:

if (condition1) {
    // 执行代码块1
    if (condition2) {
        // 当 condition1 为真且 condition2 为真时,执行代码块2
    }
}

condition1和condition2均为布尔表达式。当condition1为true时,程序将进入此if语句。在代码块1内,我们又进行了condition2的检查。仅当condition1和condition2同时为true时,才会执行代码块2。

以下是一个使用嵌套if语句的示例:

#include <iostream>

using namespace std;



int main() 
{
    int x = 10;
    int y = 5;

    if (x > y) {
        cout << "x is greater than y" << endl;

        if (x % y == 0) {
            cout << "x is divisible by y" << endl;
        }
    }

    return 0;
}

在这个例子中,我们首先检查x是否大于y。当此条件满足时,程序将输出 "x is greater than y"。接着,在此if语句中,我们进一步检查x是否可以被y整除。如果两个条件均满足,程序将输出 "x is divisible by y"。在本例中,输出结果为:

x is greater than y

x is divisible by y

二、switch 语句

switch 是一种选择结构的语句,可以用 if 代替。

1.switch 语句基本语法

switch 语句主要有 switch、case、break、default 四个关键字组成。

以下是一个C++中使用 switch 语句的简单例子,演示其基本语法和用法:

#include <iostream>

using namespace std;

int main() 
{
    char grade = 'B';

    cout << "Your rating based on grade: ";

    switch (grade) {
        case 'A':
            cout << "Excellent!" << endl;
            break;

        case 'B':
            cout << "Good!" << endl;
            break;

        case 'C':
            cout << "Fair!" << endl;
            break;

        case 'D':
            cout << "Poor!" << endl;
            break;

        case 'F':
            cout << "Failed!" << endl;
            break;

        default:
            cout << "Invalid grade!" << endl;
    }

    return 0;
}

在这个例子中,我们使用switch语句根据字符变量grade的值,输出相应的评价。switch表达式包含多个case选择,每个case后跟一个常量(字符)表示等级。当grade匹配到某个case常量时,程序将执行对应的代码块并输出结果。

注意,在每个case代码块末尾添加了break语句,它用于在执行完一个case代码块后退出switch语句,这样避免多个case代码块连续执行。最后,default用于处理未匹配到任何case的情况,例如输入了无效的成绩等级。

在本例中,变量grade的值为B,所以程序将输出:"Your rating based on grade: Good!"。

2.表示 switch 表达式的数据类型

在C++中,switch 表达式的数据类型主要包括整型、字符型和枚举型。下面进行详细说明:

(1)整型

表示整数的数据类型,如 int、long、short 等等,使用整数类型的变量作为 switch 表达式。

int num = 2;
switch (num) {
    // case 标签为整数常量
    case 1:
        cout << "One" << endl;
        break;

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

    default:
        cout << "Other" << endl;
}

(2)字符型

表示字符的数据类型,如 char 等,使用字符型变量作为 switch 表达式。

char grade = 'B';
switch (grade) {
    // case 标签为字符常量
    case 'A':
        cout << "Excellent!" << endl;
        break;

    case 'B':
        cout << "Good!" << endl;
        break;

    default:
        cout << "Invalid grade!" << endl;
}

(3)枚举型

用户自定义的特殊整数类型,使用枚举变量作为 switch表达式。

#include <iostream>

using namespace std;

enum Color {RED,GREEN,YELLOW};

int main()
{
        Color color = {YELLOW};

        switch (color) {
                case RED:
                        cout <<"red" <<endl;
                        break;

                case GREEN:
                        cout <<"green" <<endl;
                        break;

                case YELLOW:
                        cout <<"yellow" <<endl;
                        break;

                default:
                        cout <<"Invail color!" <<endl;
        }

        return 0;
}

需要注意的是,在C++中, switch 表达式不支持浮点型(如 float 和 double )和字符串型(如 std::string )。要在这些类型的变量上进行条件判断,通常需要使用 if-else if-else 语句来实现。

三、for 循环

1.for循环基本语法

在C++中,for 循环是一种常见的迭代结构,用于重复执行某段代码,直到满足特定条件。for 循环的基本语法如下:

for (初始化; 条件检查; 更新) {
    // 代码块
}

for 循环的结构包含三个关键部分:

1)初始化(Initialization):这部分通常用于设置循环变量的初始值,只在循环开始前执行一次。

int i = 0; // 初始化循环变量 i 为 0

2)条件检查(Condition):这部分是一个布尔表达式,它在每次循环迭代前被评估。如果该表达式为 true(非零),则执行循环内的代码块;如果为 false(零),则跳出循环Stop,继续执行循环之后的代码。

i < 5; // 设置循环条件:只要 i 小于5,就继续迭代

3)更新(Update):这部分在每次迭代完成后执行。通常用于更新循环变量的值。

++i; // 在每轮迭代结束后,将循环变量 i 的值加1

把这些部分结合起来,我们可以得到一个完整的for 循环:

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

在此示例中,我们首先初始化循环变量i并将其值设置为0。然后在每次循环迭代前检查i是否小于5。只要这个条件满足,就执行循环内的代码并输出 "Iteration: " 后跟循环计数器i。在每轮迭代完成后,我们更新循环变量i,使其值加1。最终,当i达到5时,循环终止。这个例子将依次输出迭代计数从0到4的结果。

2.嵌套for循环

嵌套for循环是指在一个for循环内部再包含一个或多个for循环。示例说明嵌套for循环的语法和用法。

在C++中,嵌套 for 循环是指在一个 for 循环内部再包含一个或多个 for 循环。这种结构在处理多维数据、多层循环或者需要在一次循环中执行多次操作的场景中非常有用。

以下是一个嵌套 for 循环的示例,用于打印一个9x9的乘法表:

#include <iostream>

using namespace std;

int main()
{
        int size = 9;

        for (int i = 1; i <= size; i++) {
                for (int j = 1; j <= size; j++) {
                        cout << i*j << "\t";
                }
                cout << endl;
        }

        return 0;
}

输出结果如下:

在这个示例中,我们首先使用一个外部 for 循环控制乘法表的行数(通过循环变量 i )。在外部循环中,我们又包含了一个内部 for 循环,控制乘法表的列数(通过循环变量 j )。内部循环中,我们计算 i 和 j 的乘积,并输出结果。每次内部循环结束后,我们打印一个换行符来换行。

嵌套 for 循环的关键在于理解不同层次循环是如何相互搭配以完成任务的。在这个例子中,外层循环负责行循环,而内层循环负责在每行中进行列循环。两者相互协作,构建出完整的乘法表格。

3.程序流程控制

(1)break语句

在C++中, break 语句用于在循环结构(如 for 循环)中提前终止循环。当程序在循环内遇到 break 语句时,它会立即跳出当前循环,不再执行剩余的迭代。 break 语句常常与条件判断语句(如 if )结合使用,以便在满足特定条件时中断循环。

下面是一个使用 break 语句的示例,找到并打印从1开始的第一个能被7整除的数:

#include <iostream>

using namespace std;

int main()
{
        int num;

        for (num = 1; ; num++) {
                if (num % 7 == 0) {
                        break;
                }
        }

        cout << "The first num is:" << num << endl;

        return 0;
}

在此示例中,我们使用for循环无限次迭代,检查从1开始的整数是否能被7整除。当我们找到第一个满足条件的数字时,利用break语句跳出循环。最后,输出结果,即满足条件的数字。

注意,如果循环中没有遇到break语句,for循环将继续执行,直到条件检查变为false。因此,在使用break时,务必确保循环能够在某种条件下终止,以避免无限循环和程序卡顿。

(2)continue语句

在C++中,continue语句用于在循环内(例如for循环)中提前结束当前迭代,并立即开始下一次迭代。当循环遇到continue语句时,它将跳过当前迭代中剩余的语句,回到循环头并继续执行下一个迭代。continue语句通常与条件判断语句(如if)结合使用,以便在满足特定条件时跳过循环体的某些部分。

以下是一个使用continue语句的示例,用于计算1到10之间奇数的和:

#include <iostream>

using namespace std;

int main()
{
        int sum = 0;

        for (int i = 1; i <= 10; i++) {
                if (i % 2 == 0) {
                        continue;
                }
                sum += i;
        }

        cout << "The sum = " << sum << endl;

        return 0;
}

在这个示例中,我们使用for循环遍历1到10之间的整数。对于每一个整数i,我们先检查其是否为偶数。如果是偶数,我们使用continue语句跳过本次循环,即不执行累加操作并直接进入下一个迭代。如果i为奇数,则继续执行累加操作。最后,输出1至10之间奇数的和。

通过使用continue语句,我们可以在循环过程中加入额外的控制逻辑,从而实现更加灵活的循环处理。

四、while 循环

1.while 基本语法

while循环的基本语法如下:

while (condition) {
    // 代码块
}

在while循环结构中,首先评估条件表达式condition是否为真(非零)。如果条件为真,程序将执行循环体内的代码块。当执行完循环体内的代码块后,再次评估condition的值。只要条件继续为真,循环将一直执行,直到condition的值变为假(零),此时循环将终止。

2.while 使用实例

(1)输出1到5的整数序列

以下是一个使用 while 循环的简单示例,用于输出1到5的整数序列:

#include <iostream>

using namespace std;

int main() 
{
    int num = 1;

    while (num <= 5) {
        cout << num << endl;
        ++num;
    }

    return 0;
}

在这个示例中,我们首先定义一个变量num并初始化为1。然后,我们检查num是否不大于5,如果满足条件,将进入循环,并输出num的当前值。每次迭代后,我们将num的值自增1。当num大于5时,循环终止。程序的输出结果将依次为1到5的整数。

(2)计算1到10之间奇数的和

使用 while 循环计算1到10之间奇数的和:

#include <iostream>

using namespace std;

int main()
{
        int num = 1;
        int sum;

        while (num <= 10) {
                if ( num % 2 == 1) {
                        sum += num;
                }
                num++;
        }

        cout << "The odd sum = " << sum << endl;

        return 0;
}

在这个示例中,我们初始化sum变量为0,用于存储奇数和,一个num变量用于表示当前迭代的自然数。while循环的条件是num要小于等于10。在循环体内,我们通过判断num是否为奇数(num % 2 == 1),如果是奇数,就将其累加到sum中。每次完成循环体,我们将num自增1,进行下一轮迭代。执行完循环后,输出1到10之间奇数的和。

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

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

相关文章

RediSearch vs. Elasticsearch vs. solr

1. RediSearch vs. Elasticsearch RediSearch是一个分布式全文搜索和聚合引擎&#xff0c;作为Redis之上的一个模块构建。它使用户能够以极快的方式在Redis数据集上执行复杂的搜索查询。RediSearch的独特架构是用C编写的&#xff0c;从头开始构建在优化的数据结构上&#xff0…

Histone H3K4me2 Antibody, SNAP-Certified™ for CUTRUN

EpiCypher是一家为表观遗传学和染色质生物学研究提供高质量试剂和工具的专业制造商。EpiCypher推出的CUT&RUN级别的Histone H3K4me2 Antibody符合EpiCypher的批次特异性SNAP-CertifiedTM标准&#xff0c;在CUT&RUN中具有特异性和高效的靶点富集。通过SNAP-CUTANA™K-Me…

JVM基础(9)——新生代调优

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 学习必须往深处挖&…

【linux基础I/O(二)】文件系统讲解以及文件缓冲区的概念

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Linux从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学更多操作系统知识   &#x1f51d;&#x1f51d; 基础I/O 1. 前言2. 理解C语言…

基于STM32的温室大棚环境检测及自动浇灌系统设计

需要全部资料请私信我&#xff01; 基于STM32的温室大棚环境检测及自动浇灌系统设计 一、绪论1.1 研究背景及意义1.2 研究内容1.3 功能设计 二、系统方案设计2.1 总体方案设计 三、系统硬件设计3.1 STM32单片机最小系统3.2 环境温度检测电路设计3.3 土壤湿度检测电路设计3.4 光…

MySQL的事务机制

一、事务机制简述 事务机制,避免写入直接操作数据文件&#xff1b;利用日志来实现间接写入&#xff0c;与事务有关的, redo日志与undo日志&#xff1b;sql语句操作记录复制到undo日志然后增删改查操作的结果会记录在redo日志&#xff0c;如果操作没有什么问题就把数据同步到数…

Linux 抓包还不会?这篇文章赶紧收藏!

前言 什么是TCPDUMP TCPdump&#xff0c;全称dump the traffic on a network&#xff0c;是一个运行在linux平台可以根据使用者需求对网络上传输的数据包进行捕获的抓包工具。 tcpdump可以支持的功能&#xff1a; 1、在Linux平台将网络中传输的数据包全部捕获过来进行分析 …

k8s-调度 13

调度器通过 kubernetes 的 watch 机制来发现集群中新创建且尚未被调度到 Node 上的 Pod。调度器会将发现的每一个未调度的 Pod 调度到一个合适的 Node 上来运行。 kube-scheduler 是 Kubernetes 集群的默认调度器&#xff0c;并且是集群控制面的一部分。 如果你真的希望或者有…

分享一款刚开源的音乐人声分离工具!无需联网!页面化操作!

前言 人声分离 是一项重要的音频处理技术&#xff0c;它可以将混合音频中的 人声和背景音乐 分离出来&#xff0c;为音频处理和后期制作提供了便利。 随着人声分离技术的发展&#xff0c;越来越多的开源工具被开发出来&#xff0c;为音频处理领域带来了新的发展机遇。小编之前…

C# 图解教程 第5版 —— 第21章 异步编程

文章目录 21.1 什么是 异步21.2 async/await 特性的结构21.3 什么是异步方法21.3.1 异步方法的控制流21.3.2 取消一个异步操作21.3.3 在调用方法中同步地等待任务21.3.4 在异步方法中异步地等待任务21.3.5 Task.Delay 方法 21.4 GUI 程序中的异步操作&#xff08;*&#xff09;…

倒L天线设计

λ/4单极子天线具有工作带宽较宽&#xff0c;辐射效率较高的优点&#xff0c;但是其体积较大&#xff0c;随着无线终端设备的体积越来越小&#xff0c;对天线空间的要求也越来越严格&#xff0c;于是为了适应终端设备的发展&#xff0c;单极子天线开始出现一些变形&#xff0c;…

基于Python实现身份证信息识别

目录 前言身份证信息识别的背景与意义自动识别身份证的需求 实现环境与工具准备Python编程语言OpenCV图像处理库Tesseract OCR引擎 身份证信息识别算法原理图像预处理步骤(图像裁剪、灰度化 、二值化、去噪)信息提取与解析 Python代码实现通过OCR提取身份证号码代码解析身份证信…

SQL-修改数据

&#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;重拾MySQL &#x1f379;文章作者技术和水平很有限&#xff0c;如果文中出现错误&am…

计算机毕业设计 | SSM 校园线上订餐系统(附源码)

1&#xff0c; 概述 1.1 项目背景 传统的外卖方式就是打电话预定&#xff0c;然而&#xff0c;在这种方式中&#xff0c;顾客往往通过餐厅散发的传单来获取餐厅的相关信息&#xff0c;通过电话来传达自己的订单信息&#xff0c;餐厅方面通过电话接受订单后&#xff0c;一般通…

【博士每天一篇论文-综述】Brain Inspired Computing : A Systematic Survey and Future Trends

阅读时间&#xff1a;2023-11-17 1 介绍 年份&#xff1a;2023 作者&#xff1a;李国琪 期刊&#xff1a;TechRxiv 引用量&#xff1a;2 这篇论文主要介绍了脑启发计算&#xff08;Brain Inspired Computing&#xff0c;BIC&#xff09;以及其在人工智能&#xff08;Artifici…

MySQL安装服务启动失败解决方案

在安装MySQL中&#xff0c;应用配置阶段&#xff0c;显示服务启动失败 查看日志说服务启动失败 我的电脑是win764位 新装的操作系统&#xff0c;之前出现过权限不足的提示&#xff0c;首先定位故障为权限问题。由于MySQL80服务在 计算机管理->服务 里面显示户别为&#xff…

ubuntu20固定串口名称

查看串口的详细信息 udevadm info --name/dev/ttyUSB0结果&#xff1a; P: /devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.2/1-1.2:1.0/ttyUSB0/tty/ttyUSB0 N: ttyUSB0 L: 0 S: serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UAR…

机器人持续学习基准LIBERO系列4——robosuite最基本demo

0.前置 机器人持续学习基准LIBERO系列1——基本介绍与安装测试机器人持续学习基准LIBERO系列2——路径与基准基本信息机器人持续学习基准LIBERO系列3——相机画面可视化及单步移动更新 1.robosuite的相关资料 是基于MuJoCo的机器人学习方针环境&#xff0c;提供一套基准环境…

2024.1.8 Day04_SparkCore_homeWork

目录 1. 简述Spark持久化中缓存和checkpoint检查点的区别 2 . 如何使用缓存和检查点? 3 . 代码题 浏览器Nginx案例 先进行数据清洗,做后续需求用 1、需求一&#xff1a;点击最多的前10个网站域名 2、需求二&#xff1a;用户最喜欢点击的页面排序TOP10 3、需求三&#x…

2024年最好用的简历编辑工具,助你腾飞职业生涯!

随着科技的不断发展&#xff0c;求职竞争也愈发激烈。在2024年&#xff0c;如何在众多求职者中脱颖而出成为关键问题。为了帮助大家在职业生涯中取得更好的机会&#xff0c;特别推荐一款在2024年最为出色的简历编辑工具——芊芊简历。 1. 创新的编辑功能 芊芊简历拥有直观易用…