本讲定位:从这一讲开始真正写代码。官方大纲把
cin、scanf、cout、printf、赋值语句放在同一个知识块里点名,说明这四个语句是一级的地基——后面所有的分支题、循环题、编程题,第一行永远是”读入数据”,最后一行永远是”输出答案”。这一讲不难,但必须练到手熟:一级编程题的失分,一半以上不是算法不会,而是输入输出的格式没对上。对应官方大纲:一级知识块 3「结构化程序设计」中的顺序结构;知识块 4「程序的基本语句」——cin 语句、scanf 语句、cout 语句、printf 语句、赋值语句、复合语句。
前置知识:一级第 01 讲(会用 Dev-C++ 新建、保存、编译运行)。
关于变量:本讲会先用变量(
int a;),但变量的完整概念(标识符命名规则、常量、作用)在一级第 03 讲讲透,数据类型在一级第 04 讲讲透。这是刻意安排的——不会输入输出就写不出任何一个能跑的程序,所以先给工具,再讲原理。现在只要记住int a;表示”我要一个叫 a 的整数盒子”。代码说明:本讲所有代码均已用 g++ 11.5(
-std=c++11)编译运行验证,输出结果即为文中标注结果。
输入两个整数 $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;
}
结构化程序设计只有三种结构,一级全考:
| 结构 | 含义 | 本课程位置 |
|---|---|---|
| 顺序结构 | 从上到下,一条一条执行,不跳不转 | 本讲 |
| 分支结构 | 遇到条件,走这条路或那条路 | 一级第 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;
}
输出: