Skip to content

✅09. 设计一个程序

我们已经学习了一些语法,也设计了一些简单的程序,这节课我们总结一下一些程序的基本要素,然后更加明确的学习如何设计一个程序。

这节课我们需要掌握3种循环结构的写法,以及循环输入和循环输出。

1. 三大流程结构

C++ 里最基本的三种控制结构,叫做三大基本流程控制结构,也是初学者应该掌握的流程:

  1. 顺序执行

  2. 分支(选择) —— ifswitch

  3. 循环 —— forwhiledo...while

1.1 顺序执行

程序从上到下,一行一行按顺序执行,不跳过、不重复、不分支。

一个顺序结构的程序例子:

cpp
#include <iostream>
using namespace std;

int main() {
    cout << "开始程序" << endl;
    cout << "计算 3 + 5" << endl;
    int result = 3 + 5;
    cout << "结果是: " << result << endl;
    cout << "程序结束" << endl;
    return 0;
}

输出:

开始程序
计算 3 + 5
结果是: 8
程序结束

NOTE

这就是最基础的程序执行流程:顺序执行。每一行代码依次执行,直到结束。

1.2 分支(选择)

根据不同的条件,选择执行不同的代码。

一个 if分支语句的程序:

cpp
#include <iostream>
using namespace std;

int main() {
    int score;
    cout << "请输入你的分数:";
    cin >> score;

    if (score >= 60) {
        cout << "及格了!" << endl;
    } else {
        cout << "不及格。" << endl;
    }

    return 0;
}

输入:

70

输出:

及格了!
  • 一个switch分支语句的程序:
cpp
#include <iostream>
using namespace std;

int main() {
    int day;
    cout << "请输入今天是星期几(1-7):";
    cin >> day;

    switch (day) {
        case 1:
            cout << "今天是星期一" << endl;
            break;
        case 2:
            cout << "今天是星期二" << endl;
            break;
        case 3:
            cout << "今天是星期三" << endl;
            break;
        case 4:
            cout << "今天是星期四" << endl;
            break;
        case 5:
            cout << "今天是星期五" << endl;
            break;
        case 6:
            cout << "今天是星期六" << endl;
            break;
        case 7:
            cout << "今天是星期日" << endl;
            break;
        default:
            cout << "输入有误" << endl;
    }

    return 0;
}

TIP

switch 适合多个固定的选项,记得加上 break,否则会一直往下执行。

1.3 循环

重复执行一段代码,直到满足退出条件。

for 循环 —— 知道要重复多少次:

cpp
#include <iostream>
using namespace std;

int main() {
    for (int i = 1; i <= 5; i++) {
        cout << "第 " << i << " 次循环" << endl;
    }
    return 0;
}

输出:

第 1 次循环
第 2 次循环
第 3 次循环
第 4 次循环
第 5 次循环
  • while 循环 —— 不确定要执行的次数
cpp
#include <iostream>
using namespace std;

int main() {
    int count = 1;
    while (count <= 5) {
        cout << "第 " << count << " 次循环" << endl;
        count++;
    }
    return 0;
}

do...while 循环 —— 先执行一次再说

cpp
#include <iostream>
using namespace std;

int main() {
    int count = 1;
    do {
        cout << "第 " << count << " 次循环" << endl;
        count++;
    } while (count <= 5);
    return 0;
}

NOTE

do...while 保证至少执行一次。

1.4 三种循环的对比

结构用途是否先判断
for一般用于确定循环次数的程序
while一般用于不确定循环次数的程序
do...while先执行一次,再判断

2. IPO 模型详解

输入-处理-输出模型(Input - Processing - Output)是一种非常常见的程序结构,指的是一个程序由输入,数据处理,输出三个结构组成。计算器就是典型的例子,我们通过输入数据和计算符号,计算器通过处理后,给我们输出结果。

2.1 输入模块(Input)

输入:让程序从外部获取数据。常见输入来自于键盘、文件、传感器等。 在初学阶段,主要用 cin 从键盘输入。

2.1.1 单一输入

使用 cin 输入一个数值:

cpp
#include <iostream>
using namespace std;

int main() {
    int number;
    cin >> number;
    return 0;
}

NOTE

cin >> 变量名 可以把用户输入的值存入变量里。

2.1.2 循环输入

当需要多次输入时,可以配合循环使用,这也是初学者需要掌握的常用输入。

一个让用户输入 5 次数据的程序:

cpp
#include <iostream>
using namespace std;

int main() {
    int num[5];
    for (int i = 0; i < 5; i++) {
        cin >> num[i];
    }
    return 0;
}

TIP

一般我们使用数组来存放输入的多个数据,一是可以让程序精简,二是可以通过下标的方式管理它们。

上个程序我们使用了 for循环来输入一个确定循环次数的程序,接下来用while设计一个不确定输入次数的循环程序:

cpp
#include <iostream>
using namespace std;

int main() {
    int num;
    cout << "请输入数字(输入 0 结束):";
    cin >> num;

    while (num != 0) {
        cout << "你输入的是:" << num << endl;
        cout << "继续输入(输入 0 结束):";
        cin >> num;
    }
    return 0;
}

思考:这里可以使用数组来存储变量吗?可能遇到哪些问题,如何规避这些问题呢?

2.2 处理模块(Processing)

处理:让程序根据输入的数据进行计算、判断、排序、查找等操作。

一个简单的处理数据的程序:

cpp
#include <iostream>
using namespace std;

int main() {
    int a, b;
    cout << "请输入两个整数:";
    cin >> a >> b;

    int sum = a + b;
    int diff = a - b;

    cout << "和为:" << sum << endl;
    cout << "差为:" << diff << endl;

    return 0;
}

NOTE

处理部分的内容以后会学得越来越丰富,比如数组、函数、算法等。

2.3 输出模块(Output)

输出:把计算结果显示给用户或保存起来。

在初学阶段,主要用 cout 输出到屏幕。

2.3.1 单一的输出

cpp
#include <iostream>
using namespace std;

int main() {
    int result = 10;
    cout << "计算结果是:" << result << endl;
    return 0;
}

2.3.2 循环输出(批量输出)

一个输出15的例子:

cpp
#include <iostream>
using namespace std;

int main() {
    for (int i = 1; i <= 5; i++) {
        cout << "当前数字:" << i << endl;
    }
    return 0;
}

一个输出数组中的所有元素的例子:

cpp
#include <iostream>
using namespace std;

int main() {
    int arr[5] = {10, 20, 30, 40, 50};

    for (int i = 0; i < 5; i++) {
        cout << "第 " << i + 1 << " 个元素:" << arr[i] << endl;
    }

    return 0;
}

💬 与我联系 QQ:774165314 | 微信:Yonas_Luo