C++学习之程序流程结构

简介: C++学习之程序流程结构

程序流程结构分类

C++程序的流程结构主要由顺序结构、选择结构和循环结构组成。下面是每种结构的简单介绍:

  1. 顺序结构:顺序结构是程序中最简单的结构,按照代码在源文件中的顺序依次执行,没有任何条件或控制语句来改变程序的执行路径。
  2. 选择结构:选择结构根据某个条件的真假情况选择不同的执行路径。在C++中,常见的选择结构有if语句、if-else语句和switch语句。根据条件的判断结果,程序会按照不同的代码块来执行。
  3. 循环结构:循环结构用于重复执行一段代码块,直到满足某个条件后结束循环。在C++中,常见的循环结构有while循环、do-while循环和for循环。这些结构根据条件的真假情况决定是否重复执行循环体。

除了上述基本的流程结构,C++还提供了一些其他的控制结构,如break语句和continue语句。break语句用于中断当前循环或switch语句的执行,跳出循环体或选项执行流程。而continue语句用于终止当前迭代的循环,并开始下一次循环迭代。

顺序结构

C++的顺序结构简单来说就是按照代码的顺序一行一行地执行,没有分支和循环。下面是一个简单的C++程序示例,展示了顺序结构的应用:

#include <iostream>
int main() {
    int num1, num2, sum;
    std::cout << "Enter two numbers: ";
    std::cin >> num1 >> num2;
    sum = num1 + num2;
    std::cout << "The sum is: " << sum << std::endl;
    return 0;
}

在这个示例中,程序首先向用户请求输入两个数字,然后将这两个数字相加,并将结果输出到控制台。整个程序按照代码的顺序从上到下依次执行,没有分支或循环的干涉。

具体的执行过程如下:

  1. 程序运行后,首先打印出提示信息:"Enter two numbers: "。
  2. 接着,程序等待用户输入两个数字,并将这两个数字分别赋值给变量num1num2
  3. 程序执行sum = num1 + num2;语句,将num1num2的和赋值给变量sum
  4. 最后,程序通过std::cout将计算得到的和打印到屏幕上,输出形如"The sum is: XXX"的信息。
  5. 程序执行到return 0;时,表示程序成功结束。

C++的顺序结构基本上就是按照代码的顺序依次执行各个语句,以完成特定的任务。

选择结构

C++提供了几种常见的选择结构,用于根据不同的条件选择不同的执行路径。以下是一些常见的C++选择结构和举例:

  1. if语句:if语句根据给定的条件来判断是否执行某段代码。
int num = 10;
if (num > 0) {
    std::cout << "The number is positive." << std::endl;
}

在这个示例中,如果num大于0,则会执行if语句块内的代码,并输出"The number is positive."。

  1. if-else语句:if-else语句扩展了if语句的功能,允许在给定条件为true或false时执行不同的代码块。
int num = 10;
if (num > 0) {
    std::cout << "The number is positive." << std::endl;
} else {
    std::cout << "The number is non-positive." << std::endl;
}

在这个示例中,如果num大于0,则执行if语句块内的代码;否则,执行else语句块内的代码。输出结果取决于条件的真假情况。

  1. if-else if-else语句:通过嵌套多个if-else语句,可以在多个条件之间进行选择。
int score = 75;
if (score >= 90) {
    std::cout << "A" << std::endl;
} else if (score >= 80) {
    std::cout << "B" << std::endl;
} else if (score >= 70) {
    std::cout << "C" << std::endl;
} else {
    std::cout << "D" << std::endl;
}

在这个示例中,根据不同的成绩范围给出不同的评级。根据变量score的值,程序会按照条件从上到下依次判断,并输出相应的评级。

  1. switch语句:switch语句允许根据一个表达式的值在多个选项之间进行选择。
int day = 3;
switch (day) {
    case 1:
        std::cout << "Monday" << std::endl;
        break;
    case 2:
        std::cout << "Tuesday" << std::endl;
        break;
    case 3:
        std::cout << "Wednesday" << std::endl;
        break;
    default:
        std::cout << "Invalid day" << std::endl;
}

在这个示例中,根据变量day的值,程序将进入相应的case分支,并执行相应的代码块。如果没有匹配的case,程序将执行default分支的代码块。

选择结构嵌套

各种选择结构可以相互嵌套,以实现更复杂的逻辑判断和流程控制。以下是几个选择结构嵌套的例子:

  1. if-else语句嵌套:
int num = 10;
if (num > 0) {
    std::cout << "The number is positive." << std::endl;
} else {
    if (num < 0) {
        std::cout << "The number is negative." << std::endl;
    } else {
        std::cout << "The number is zero." << std::endl;
    }
}

在这个例子中,首先判断num是否大于0,如果是,则输出"The number is positive.“;如果不是,则判断num是否小于0,如果小于0,则输出"The number is negative.”;否则,输出"The number is zero."。

  1. if-else if-else语句嵌套:
int score = 75;
if (score >= 90) {
    std::cout << "A" << std::endl;
} else {
    if (score >= 80) {
        std::cout << "B" << std::endl;
    } else {
        if (score >= 70) {
            std::cout << "C" << std::endl;
        } else {
            std::cout << "D" << std::endl;
        }
    }
}

在这个例子中,首先判断score是否大于等于90,如果是,则输出"A";否则,判断score是否大于等于80,如果是,则输出"B";否则,判断score是否大于等于70,如果是,则输出"C";否则,输出"D"。

  1. switch语句嵌套:
int day = 3;
int month = 2;
switch (month) {
    case 1:
        std::cout << "January " << day << std::endl;
        break;
    case 2:
        switch (day) {
            case 28:
                std::cout << "February (28 days)" << std::endl;
                break;
            case 29:
                std::cout << "February (29 days)" << std::endl;
                break;
            default:
                std::cout << "Invalid day for February" << std::endl;
        }
        break;
    default:
        std::cout << "Invalid month" << std::endl;
}

在这个例子中,首先判断month的值是不是1,如果是,则输出"January"加上具体的day值;否则,如果month的值是2,再根据day的值来确定是输出"February (28 days)“还是"February (29 days)”;如果month的值既不是1也不是2,则输出"Invalid month"。

循环结构

C++提供了几种常见的循环结构,用于重复执行一段代码块。以下是C++中常用的循环结构和举例:

  1. while循环:while循环会在给定条件为true时重复执行一段代码块。
int count = 0;
while (count <= 5) {
    std::cout << "Count: " << count << std::endl;
    count++;
}

在这个示例中,循环将持续执行,直到count变量的值大于5。每次循环,程序输出当前count的值,并将count递增1。

  1. do-while循环:do-while循环与while循环类似,但是它会先执行一次循环体,然后再根据给定条件来判断是否继续执行。
int num = 1;
do {
    std::cout << "Number: " << num << std::endl;
    num++;
} while (num <= 5);

在这个示例中,循环体首先执行一次,然后检查条件。如果条件为真,则继续执行循环体,直到num的值大于5。

  1. for循环:for循环提供了一种简洁的方式来重复执行一段代码块,它包含了初始化、条件和更新三个部分。
for (int i = 0; i < 5; i++) {
    std::cout << "Iteration: " << i << std::endl;
}

在这个示例中,循环通过初始化i为0,然后在每次循环迭代时检查i是否小于5,并在每次迭代结束后将i递增1。循环将执行5次,从0到4。

这些是C++中常见的循环结构。根据需要和实际情况,可以使用这些结构来实现重复执行特定代码块的需求。

循环结构嵌套

各种循环结构可以嵌套在彼此之中,以实现更复杂的重复执行和控制流程。以下是几个常见的循环结构嵌套的例子:

  1. while循环嵌套:
int i = 1;
int j = 1;
while (i <= 5) {
    while (j <= i) {
        std::cout << j << " ";
        j++;
    }
    std::cout << std::endl;
    i++;
    j = 1;
}

在这个例子中,外层的while循环每次执行一行,内层的while循环负责输出一行中的数字。循环嵌套会依次输出如下结果:

1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
  1. for循环嵌套:
for (int i = 1; i <= 3; i++) {
    for (int j = 1; j <= 3; j++) {
        std::cout << "(" << i << ", " << j << ")" << std::endl;
    }
}

在这个例子中,外层的for循环定义了变量i,内层的for循环定义了变量j。循环嵌套会输出如下结果:

(1, 1)
(1, 2)
(1, 3)
(2, 1)
(2, 2)
(2, 3)
(3, 1)
(3, 2)
(3, 3)
  1. do-while循环嵌套:
int i = 1;
int j = 1;
do {
    do {
        std::cout << i * j << " ";
        j++;
    } while (j <= 5);
    std::cout << std::endl;
    i++;
    j = 1;
} while (i <= 5);

在这个例子中,外层的do-while循环每次执行一行,内层的do-while循环负责输出一行中的乘积。循环嵌套会输出如下结果:

1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
5 10 15 20 25

这些例子展示了循环结构的嵌套使用,可以通过多层次的循环来实现复杂的循环逻辑和控制流程。

特殊的选择结构和循环结构

除了常见的选择结构和循环结构之外,还有一些特殊的选择结构和循环结构,用于解决特定的问题或实现特定的逻辑。以下是几个特殊的选择结构和循环结构:

特殊的选择结构:

  1. 三元运算符(Ternary operator):它是一种简洁的条件选择结构,形式为条件 ? 表达式1 : 表达式2,根据条件的真假选择不同的表达式执行。
int num = (score >= 60) ? 1 : 0;

在这个例子中,如果score大于等于60,则num被赋值为1,否则赋值为0。

特殊的循环结构:

  1. foreach循环:用于遍历容器(如数组、集合等)中的元素,不需要事先指定结束条件,可以自动遍历容器中的每个元素。
int arr[] = {1, 2, 3, 4, 5};
for (int element : arr) {
    std::cout << element << " ";
}

在这个例子中,foreach循环会依次遍历数组arr中的元素,并输出每个元素的值。

  1. range-based for循环:类似于foreach循环,用于遍历序列容器(如数组、容器类等)中的元素,可以自动遍历序列容器中的每个元素,并且可以通过引用修改元素的值。
std::vector<int> nums = {1, 2, 3, 4, 5};
for (int& num : nums) {
    num *= 2;
}

在这个例子中,range-based for循环会遍历向量nums中的元素,并将每个元素的值乘以2。

这些特殊的选择结构和循环结构提供了在某些情况下更方便和高效的方式来处理特定的需求。

跳转结构

跳转结构是一种特殊的控制结构,用于在程序中实现非顺序执行的流程。主要有以下几种类型的跳转结构:

  1. break语句:在循环或者switch语句中使用,用于立即终止循环或者跳出switch语句。
for (int i = 1; i <= 5; i++) {
    if (i == 3) {
        break;
    }
    std::cout << i << " ";
}

在这个例子中,当i等于3时,break语句会跳出循环,输出结果为:

1 2
  1. continue语句:在循环中使用,用于跳过当前迭代并继续下一次迭代。
for (int i = 1; i <= 5; i++) {
    if (i == 3) {
        continue;
    }
    std::cout << i << " ";
}

在这个例子中,当i等于3时,continue语句会跳过当前迭代,输出结果为:

1 2 4 5
  1. goto语句:可以直接跳转到程序中指定的标签处,它可以使代码执行从goto语句的位置无条件地转移到目标标签所在的位置。
goto跳转知道就行了,最好少用或者别用;
goto my_label;
std::cout << "This will not be executed." << std::endl;
my_label:
std::cout << "Jumped to the label." << std::endl;

在这个例子中,goto语句会直接跳转到标签my_label处,输出结果为:

Jumped to the label.

虽然跳转结构在某些情况下可以帮助控制程序的流程,但过度使用跳转结构可能会导致代码难以理解和维护。因此,在实际编程中应谨慎使用跳转结构,并确保合理、清晰地组织代码逻辑。

#include <iostream>
int main() {
    std::cout << "程序流程结构其实都是大同小异,除了个别的:例如goto !" << std::endl;
    return 0;
}

关注我,不迷路,共学习,同进步

关注我,不迷路,同学习,同进步

相关文章
|
3月前
|
C++
C++ 根据程序运行的时间和cpu频率来计算在另外的cpu上运行所花的时间
C++ 根据程序运行的时间和cpu频率来计算在另外的cpu上运行所花的时间
44 0
|
3月前
|
算法 C语言 C++
C++语言学习指南:从新手到高手,一文带你领略系统编程的巅峰技艺!
【8月更文挑战第22天】C++由Bjarne Stroustrup于1985年创立,凭借卓越性能与灵活性,在系统编程、游戏开发等领域占据重要地位。它继承了C语言的高效性,并引入面向对象编程,使代码更模块化易管理。C++支持基本语法如变量声明与控制结构;通过`iostream`库实现输入输出;利用类与对象实现面向对象编程;提供模板增强代码复用性;具备异常处理机制确保程序健壮性;C++11引入现代化特性简化编程;标准模板库(STL)支持高效编程;多线程支持利用多核优势。虽然学习曲线陡峭,但掌握后可开启高性能编程大门。随着新标准如C++20的发展,C++持续演进,提供更多开发可能性。
79 0
|
23天前
|
编译器 C语言 C++
配置C++的学习环境
【10月更文挑战第18天】如果想要学习C++语言,那就需要配置必要的环境和相关的软件,才可以帮助自己更好的掌握语法知识。 一、本地环境设置 如果您想要设置 C++ 语言环境,您需要确保电脑上有以下两款可用的软件,文本编辑器和 C++ 编译器。 二、文本编辑器 通过编辑器创建的文件通常称为源文件,源文件包含程序源代码。 C++ 程序的源文件通常使用扩展名 .cpp、.cp 或 .c。 在开始编程之前,请确保您有一个文本编辑器,且有足够的经验来编写一个计算机程序,然后把它保存在一个文件中,编译并执行它。 Visual Studio Code:虽然它是一个通用的文本编辑器,但它有很多插
|
1月前
|
存储 程序员 编译器
简述 C、C++程序编译的内存分配情况
在C和C++程序编译过程中,内存被划分为几个区域进行分配:代码区存储常量和执行指令;全局/静态变量区存放全局变量及静态变量;栈区管理函数参数、局部变量等;堆区则用于动态分配内存,由程序员控制释放,共同支撑着程序运行时的数据存储与处理需求。
103 21
|
1月前
|
Java 编译器 C++
c++学习,和友元函数
本文讨论了C++中的友元函数、继承规则、运算符重载以及内存管理的重要性,并提到了指针在C++中的强大功能和使用时需要注意的问题。
20 1
|
1月前
|
程序员 C++
C++编程:While与For循环的流程控制全解析
总结而言,`while`循环和 `for`循环各有千秋,它们在C++编程中扮演着重要的角色。选择哪一种循环结构应根据具体的应用场景、循环逻辑的复杂性以及个人的编程风格偏好来决定。理解这些循环结构的内在机制和它们之间的差异,对于编写高效、易于维护的代码至关重要。
52 1
|
2月前
|
C++
【C++基础】程序流程结构详解
这篇文章详细介绍了C++中程序流程的三种基本结构:顺序结构、选择结构和循环结构,包括if语句、三目运算符、switch语句、while循环、do…while循环、for循环以及跳转语句break、continue和goto的使用和示例。
45 2
|
3月前
|
PHP C++ Python
右手坐标系,空间点绕轴旋转公式&程序(Python和C++程序)
右手坐标系,空间点绕轴旋转公式&程序(Python和C++程序)
63 0
|
3月前
|
C++
c++学习笔记03 程序流程结构
C++学习笔记,主要介绍了程序流程结构,包括顺序结构、选择结构和循环结构。选择结构中详细解释了if语句、三目运算符和switch语句的用法和注意事项。循环结构部分则涵盖了while循环、do-while循环和for循环的语法和使用技巧。此外,还介绍了跳转语句,包括break、continue和goto语句的用途和用法。
35 0
|
8天前
|
存储 编译器 C++
【c++】类和对象(中)(构造函数、析构函数、拷贝构造、赋值重载)
本文深入探讨了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值重载。构造函数用于对象的初始化,析构函数用于对象销毁时的资源清理,拷贝构造函数用于对象的拷贝,赋值重载用于已存在对象的赋值。文章详细介绍了每个函数的特点、使用方法及注意事项,并提供了代码示例。这些默认成员函数确保了资源的正确管理和对象状态的维护。
34 4