备战大晨7月 GESP C++ 1级(16):for循环初体验,从1加到100

上篇聊完if-else嵌套,大晨做完那几道题后长舒一口气:”爸,分支我会了,后面还有啥?”

我说别急,今天开始上硬菜——循环。

说实话,for循环是GESP 1级的核心考点之一,也是后面所有算法的地基。这关过不去,数组、排序全都白搭。

为什么循环这么重要

之前大晨做的题,输入一个数、判断一下、输出结果,跑一遍就结束了。

但现实问题哪有这么简单?比如”从1加到100”,你要是不用循环,难道写100行 cout << 1+2+3+...

大晨听完乐了:”那也太累了吧!”

对,循环就是让计算机帮你干重复的活儿。 这才是编程真正开始”省力”的地方。

for循环的基本语法

我先在白板上写了for循环的框架:

1
2
3
for (初始化; 条件判断; 更新) {
// 要重复做的事
}

大晨盯着看了半天,问我:”这三个东西之间为啥是分号不是逗号?”

好问题。我说因为这是三个独立的语句,用分号隔开,C++的规定,先记住就行。

然后我拆开讲:

  • 初始化:循环开始前做一次,比如设个计数器 int i = 1
  • 条件判断:每次循环前检查,true就继续,false就退出
  • 更新:每次循环体执行完后跑一次,比如 i++ 让计数器加1

大晨点了点头:”哦,就是出发前设好起点,跑到终点就停,每跑一步往前挪一下。”

这比喻还挺到位。

实战:从1加到100

直接上经典题,代码如下:

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

int main() {
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum = sum + i;
}
cout << sum << endl;
return 0;
}

运行结果:5050

大晨看到输出后眼睛一亮:”这不就是高斯小时候算的那个吗!”

没错,高斯用公式秒算,我们用循环一步步累加,思路不同,结果一样,编程的魅力就在这。

老父亲陪跑笔记

今天这关大概花了40分钟。大晨主要犯了两个错。

第一个:把 i <= 100 写成了 i < 100,结果算出来4950,少加了100那个数。

他盯着屏幕看了半天:”咦,怎么少了100?”

我让他自己查,翻来覆去看了三遍才发现条件写错了。这个坑考试肯定还会踩,自己踩一次比别人说十遍都管用。

第二个:一开始把 sum = sum + i 写成了 sum = i,每次都把sum覆盖掉。我问他:”你这叫累加吗?你这叫每次都扔掉重来。”他嘿嘿一乐,赶紧改了。

小结

for循环三要素:初始化、条件、更新,一个都不能少,一个都不能写错。尤其是那个 <= 还是 <,差一个等号结果天差地别。

今天大晨完成《一本通•编程启蒙C++版》第38到40页的三道for循环基础题,正确率2/3,第一关算过了。

但循环的坑远不止这些。下一篇我们聊while循环,以及一个让无数娃头秃的问题——死循环。

下篇见。

免责声明:本博客记录的是大晨同学备考GESP C++的真实过程,代码和知识点讲解仅为家庭学习笔记分享,不构成任何教学建议。每个孩子学习节奏不同,请根据实际情况参考。