读入一串数并求和
今天学完,你就能做成这件事: 先读入 n,再读入 n 个整数,打印它们的和。
输入:
4
3 1 4 2
窗口里应出现 10。
昨天的求和,数字是 1、2、3… 自己长出来的。今天的数字是你从键盘读进来的一串,要先有地方放下它们。下面按顺序做。
事情 1:先排好一排盒子,再往里倒
int n;
int a[100];
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
int s = 0;
for (int i = 0; i < n; i++) {
s = s + a[i];
}
cout << s << endl;
编译、运行,按上面那样输入,得到 10,今天的主任务就做成了。
int a[100]; 是一排 100 只能装整数的盒子。真正用几只,用 n 自己记。没有 append,也没有 len(a)。

已经写了 int a[3]; 并且放进了 1、2、3。还想再放一个 4,哪句对?
下标从 0 开始
第一只盒子叫 a[0],最后一只合法的是 a[n-1]。这一点和 Python 的 list 一样。
int a[5];
a[0] = 7; // 第一只

读入循环写成 i < n,正好倒进 a[0] 到 a[n-1]。n 不能大于 100,否则盒子不够。
int a[5]; 里,最后一个合法下标是 。
为什么不能像 list 那样边读边长
Python 可以:
n = int(input())
a = [int(x) for x in input().strip().split()]
列表在运行时还能 append。C++ 的一排盒子在编译时就要说好有多少只。运行时只往已经排好的格子里倒。
所以习惯写成:声明一个够大的 a[100],再用 n 记住这次真正用了几只。

方括号里写现在看得见的数字,不要写刚 cin 进来的 n。
已经写了 int n; int a[100];。要先读 n,再读 n 个整数放进 a。哪一段对?
走遍这排盒子
求和、找最大、再打印一遍,都是同一套循环:从 0 走到 n-1。用你记下的 n,不是方括号里的 100。空着的盒子不要拿来加。
踩出这排盒子,编译常常不管
Python 里 a[5] 在长度为 5 时立刻 IndexError。C++ 越界多半能编过,跑起来才崩,或读到乱七八糟的数。

所以循环要自己写成 i < n,别把这件事交给编译器。
int a[5]; 然后 cout << a[5];。什么时候会出问题?
今天做成了什么
一份能跑的程序:读 n 和 n 个数,打印它们的和。
一排盒子要先写死长度,用 n 记住真正用了几只,下标从 0 到 n-1。
明天做第五件事:把盒子排成一张表。