GESP 一级 第 02 讲:输入、输出与顺序结构

本讲定位从这一讲开始真正写代码。官方大纲把 cinscanfcoutprintf、赋值语句放在同一个知识块里点名,说明这四个语句是一级的地基——后面所有的分支题、循环题、编程题,第一行永远是”读入数据”,最后一行永远是”输出答案”。这一讲不难,但必须练到手熟:一级编程题的失分,一半以上不是算法不会,而是输入输出的格式没对上

对应官方大纲:一级知识块 3「结构化程序设计」中的顺序结构;知识块 4「程序的基本语句」——cin 语句、scanf 语句、cout 语句、printf 语句、赋值语句、复合语句。

前置知识:一级第 01 讲(会用 Dev-C++ 新建、保存、编译运行)。

关于变量:本讲会先用变量(int a;),但变量的完整概念(标识符命名规则、常量、作用)在一级第 03 讲讲透,数据类型在一级第 04 讲讲透。这是刻意安排的——不会输入输出就写不出任何一个能跑的程序,所以先给工具,再讲原理。现在只要记住 int a; 表示”我要一个叫 a 的整数盒子”。

代码说明:本讲所有代码均已用 g++ 11.5(-std=c++11)编译运行验证,输出结果即为文中标注结果。


1. 先看一道真题

输入两个整数 $a$ 和 $b$,输出它们的和。

输入:一行两个整数,用空格分隔。 输出:一行一个整数。

样例输入3 5  样例输出8

这就是一级编程题第 1 题的典型难度。它需要三件事:读进来、算一下、写出去。这一讲把”读”和”写”讲清楚,“算”在一级第 05 讲。

先把答案贴出来,本讲结束时你要能默写它:

#include<iostream>
using namespace std;

int main() {
    int a, b;
    cin >> a >> b;
    cout << a + b << endl;
    return 0;
}

2. 顺序结构:程序是从上往下跑的

结构化程序设计只有三种结构,一级全考:

结构 含义 本课程位置
顺序结构 从上到下,一条一条执行,不跳不转 本讲
分支结构 遇到条件,走这条路或那条路 一级第 07 讲
循环结构 一段代码反复执行 一级第 08 讲

顺序结构是默认的,也是最简单的:写在上面的先执行,写在下面的后执行。

看这个例子——同样的三条语句,换个顺序结果就变了

#include<iostream>
using namespace std;

int main() {
    int a;
    a = 10;
    a = a + 5;
    cout << a << endl;
    return 0;
}

输出:

15

如果把中间两行对调

#include<iostream>
using namespace std;

int main() {
    int a;
    a = 0;
    a = a + 5;
    a = 10;
    cout << a << endl;
    return 0;
}

输出: