Level 1 · Day 6

数组(一维与二维)

要存"一排同类型数据",不用开 100 个变量 —— 一个名字管一排盒子。

一、数组就是一排连续的盒子

int a[10]; —— int 是元素类型,a 是名字,10 是大小。 用下标访问,从 0 开始。点下面任意一个盒子看它是第几个:

二、互动演示:初始化规则(没给到的补 0)

花括号里给了的用给的值,没给到的一律补 0。点按钮看不同写法的真实结果。

三、下标越界很危险

int a[5]; 合法下标只有 a[0]~a[4]。写 a[5] 编译器不报错,但运行时可能破坏数据甚至崩溃。点按钮看哪些越界:

基本功:数组一定开够大小。竞赛常用技巧——开大一点、从 a[1] 开始用,让下标和题意对齐。

四、参考代码:读入并求和 + 二维数组

#include <iostream>
using namespace std;

const int maxn = 1005;   // 用常量当数组大小
int a[maxn];

int main() {
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) cin >> a[i];   // 从 a[1] 开始读 n 个

    int sum = 0;
    for (int i = 1; i <= n; i++) sum += a[i];   // 求和
    cout << sum << endl;

    // 二维数组:嵌套循环遍历(外层行、内层列)
    int g[3][4];
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 4; j++)
            g[i][j] = 0;
    return 0;
}

一维配单层 for,二维配嵌套 for —— 呼应上一课的循环嵌套。