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

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


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++语言的幼稚记录

相关文章
|
8月前
|
设计模式 测试技术 编译器
C++项目中打破循环依赖的锁链:实用方法大全(一)
C++项目中打破循环依赖的锁链:实用方法大全
788 0
|
8月前
|
缓存 编译器 数据处理
【C/C++ 性能优化】循环展开在C++中的艺术:提升性能的策略与实践
【C/C++ 性能优化】循环展开在C++中的艺术:提升性能的策略与实践
745 0
|
6月前
|
存储 安全 编译器
【C++入门 四】学习C++内联函数 | auto关键字 | 基于范围的for循环(C++11) | 指针空值nullptr(C++11)
【C++入门 四】学习C++内联函数 | auto关键字 | 基于范围的for循环(C++11) | 指针空值nullptr(C++11)
|
7月前
|
算法 程序员 编译器
C++的四类循环分享
C++的四类循环:Entry or Exit controlled, Ranged-based or For_each
|
7月前
|
C++
C++一分钟之-循环结构:for与while循环
【6月更文挑战第18天】在C++中,`for`循环适合已知迭代次数,如数组遍历;`while`循环适用于条件驱动的未知次数循环。`for`以其初始化、条件和递增三部分结构简洁处理重复任务,而`while`则在需要先检查条件时更为灵活。常见错误包括无限循环和逻辑错误,解决办法是确保条件更新和正确判断。了解两者应用场景及陷阱,能提升代码效率和可读性。
72 6
|
7月前
|
C语言 C++ 容器
c++primer plus 6 读书笔记 第五章 循环和关系表达式
c++primer plus 6 读书笔记 第五章 循环和关系表达式
|
7月前
|
程序员 编译器 C++
探索C++语言宝库:解锁基础知识与实用技能(类型变量+条件循环+函数模块+OOP+异常处理)
探索C++语言宝库:解锁基础知识与实用技能(类型变量+条件循环+函数模块+OOP+异常处理)
54 0
|
8月前
|
算法 程序员 C++
C++程序中的循环语句:实现重复执行的关键
C++程序中的循环语句:实现重复执行的关键
429 2
|
8月前
|
安全 编译器 程序员
【C++入门】内联函数、auto与基于范围的for循环
【C++入门】内联函数、auto与基于范围的for循环
|
8月前
|
C++ Python
C++教学——从入门到精通 10.循环
学习编程建议先Python后C++,以避免C++思维影响。课程涵盖for、while和do while循环。for循环示例:`for(int i=0;i&lt;n;i++)`,用于计算114514天后的金币总数(1145140个)。死循环通过`for(int i=0;;i++)`实现,用`break`退出。while循环格式`while(条件)`,同样可解决金币问题。do while循环特点是先执行后判断,结构为`do{...}while(条件)`。
54 2