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

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

一、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;
}

(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 循环:

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

在此示例中,我们首先初始化循环变量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之间奇数的和。

相关文章
|
2月前
|
编译器 C++
C++入门12——详解多态1
C++入门12——详解多态1
47 2
C++入门12——详解多态1
|
2月前
|
编译器 C语言 C++
C++入门3——类与对象2-2(类的6个默认成员函数)
C++入门3——类与对象2-2(类的6个默认成员函数)
38 3
|
2月前
|
存储 编译器 C语言
C++入门2——类与对象1(类的定义和this指针)
C++入门2——类与对象1(类的定义和this指针)
43 2
|
2月前
|
C++
C++入门13——详解多态2
C++入门13——详解多态2
87 1
|
2月前
|
程序员 C语言 C++
C++入门5——C/C++动态内存管理(new与delete)
C++入门5——C/C++动态内存管理(new与delete)
83 1
|
2月前
|
编译器 C语言 C++
C++入门4——类与对象3-1(构造函数的类型转换和友元详解)
C++入门4——类与对象3-1(构造函数的类型转换和友元详解)
29 1
|
2月前
|
存储 编译器 C++
C++入门3——类与对象2-1(类的6个默认成员函数)
C++入门3——类与对象2-1(类的6个默认成员函数)
48 1
|
2月前
|
编译器 C语言 C++
C++入门6——模板(泛型编程、函数模板、类模板)
C++入门6——模板(泛型编程、函数模板、类模板)
60 0
C++入门6——模板(泛型编程、函数模板、类模板)
|
2月前
|
存储 安全 编译器
【C++打怪之路Lv1】-- 入门二级
【C++打怪之路Lv1】-- 入门二级
28 0
|
2月前
|
自然语言处理 编译器 C语言
【C++打怪之路Lv1】-- C++开篇(入门)
【C++打怪之路Lv1】-- C++开篇(入门)
37 0