备战大晨7月 GESP C++ 1级(二):顺序结构,让程序学会"算账"

备战大晨7月 GESP C++ 1级(二):顺序结构,让程序学会”算账”

上一篇(一)里,大晨写出了第一个程序、认识了变量。这一篇进入顺序结构——也就是”一步一步往下算”,这是 C++ 里最朴素也最常用的逻辑。

目标很明确:学会让程序读入数据 → 计算 → 输出结果。这正是 GESP 一级应用题的骨架。

让程序”听”用户说话:cin

(一)里我们用 cout 把东西显示出来;反过来,用 cin 把用户敲的东西读进来

1
2
3
int a, b;
cin >> a >> b; // 从键盘读两个数,分别放进 a 和 b
cout << a + b << endl;

大晨第一次见 >><< 一脸懵:”这俩箭头怎么反了?”

我打了个比方:cout << 是把数据送出去(箭头朝屏幕),cin >> 是把数据收进来(箭头朝变量)。他点头:”哦,方向就是数据流的方向。”

陪跑笔记:GESP 一级几乎必考”读入两个数做运算”,cin >> a >> b; 这行必须练到形成肌肉记忆。

算术运算:加减小乘法

C++ 的运算符和数学里差不多:

1
2
3
4
5
6
int a = 10, b = 3;
cout << a + b << endl; // 13
cout << a - b << endl; // 7
cout << a * b << endl; // 30
cout << a / b << endl; // 3 ← 注意!不是 3.33
cout << a % b << endl; // 1 ← 取余数

这里大晨踩了第一个”大坑”,也是 GESP 高频考点:整数除法会丢小数

10 / 3 在数学里是 3.333…,但在 C++ 里,两个整数相除,结果还是整数 3,后面的 .333 直接被切掉。他当时盯着屏幕喊:”爸,计算器明明是 3.33,它算错了!”

我让他把 a 改成 double 再试:

1
2
double a = 10, b = 3;
cout << a / b << endl; // 3.33333

结论他这辈子忘不了:想算小数,参与运算的数里至少有一个是 double 这就是书里讲的”类型转换”最接地气的版本。

一个真实小练习:买文具算总价

书里顺序结构章节的题,本质都是”读入 → 算 → 输出”。我们拿一道练手:

铅笔 2 元一支,大晨买了 x 支、橡皮 y 块(1 元一块),求总价。

1
2
3
4
5
6
7
8
9
10
#include <iostream>
using namespace std;

int main() {
int x, y;
cin >> x >> y;
int total = x * 2 + y * 1;
cout << total << endl;
return 0;
}

敲完跑通,大晨得意:”这不就是让我当收银员嘛。” 没错,顺序结构就是”人怎么算,程序就怎么写”

为”电影票”铺垫一下

下周要学的 3020练 5.3 电影票,内核其实就是上面这套:读入人数/单价 → 算总价 → 可能还要判断优惠。把今天的 cin + 算术吃透,下篇加一个 if 分支,那道题就水到渠成了。

小结(二)

起步篇(二)三件事:会用 cin 读入、搞懂整数除会丢小数、能用顺序结构写”读算输”小应用题。

顺序结构是 C++ 的”走路”,后面分支、循环都是在这条路上加转弯和重复。先把直路走稳。

下一篇(三):分支结构 if——判断、优惠、比较大小,直接拿下 5.3 电影票这道题,这也是大晨目前学到的进度点。

本系列按《一本通•编程启蒙C++版》进度记录,当前学到 3020练 5.3 电影票。陪学经验仅代表我们家庭实践,不构成培训承诺。