学习
错题
模考
我的
登录/注册/忘记密码
学习 / 数组 / 二维数组
二维数组
语法并引出多维;创建与初始化;循环读入、循环输出
1. 二维数组的语法,多维从这里来
一行写不下时,就排成**表**:若干行、每行若干列。这是二维数组。 ```c int a[2][3]; ``` 读法:2 行、每行 3 个 `int`,一共 6 个元素。访问写成 `a[行][列]`,都从 0 数: - `a[0][0]` `a[0][1]` `a[0][2]` 是第一行 - `a[1][0]` `a[1][1]` `a[1][2]` 是第二行 二维就是「数组的数组」:`a[0]` 这一整行,本身又是一个长度为 3 的一维数组。 再加一对方括号就是三维:`int b[2][3][4]`。一层层套下去,叫**多维数组**。专升本主要考到二维,三维少见,写法一样,多一对 `[]`。
2. 创建与初始化
定义时同样用花括号。**按行**填,更清楚。 ```c int a[2][3] = {{1, 2, 3}, {4, 5, 6}}; int b[2][3] = {1, 2, 3, 4, 5, 6}; /* 也按行依次填,结果和上面一样 */ int c[2][3] = {{1}, {4, 5}}; /* 其余补 0 */ int d[][3] = {{1, 2, 3}, {4, 5, 6}}; /* 第一维可以空,让编译器数行数 */ ``` 第二维(每行几个)**不能省**。`int d[][] = ...` 不行。 未写初值的二维数组,里面同样是垃圾。不能定义完再 `a = {{1,2,3},{4,5,6}}`。
3. 循环读入、循环输出
表用**两层循环**进出:外层走遍每一行,内层走遍这一行的每一列。就是嵌套循环。 ```c int i, j, a[2][3]; for (i = 0; i < 2; i++) for (j = 0; j < 3; j++) scanf("%d", &a[i][j]); for (i = 0; i < 2; i++) { for (j = 0; j < 3; j++) printf("%d ", a[i][j]); printf("\n"); } ``` - 读每个元素仍要 `&a[i][j]` - 外层 `i` 是行,内层 `j` 是列,不要写反成 `a[j][i]`,除非题目就是按列处理 - 打完整一行再 `printf("\n")`,表才是一行一行的 3 行 4 列就把 2、3 换成 3、4。圈数:内层列数固定时,`scanf` 次数 = 行 × 列。
开始练习
动手写
返回数组
动手写
8 道编程 · 综合运用本阶段知识点
编程题把本阶段知识点串起来用。只看要点不做,认识停在纸面上。
查看本阶段全部编程题
矩阵读写
未做
开始写
各行之和
未做
开始写
主对角线之和
未做
开始写
边界元素之和
未做
开始写
矩阵转置
未做
开始写
上三角矩阵
未做
开始写
下三角矩阵
未做
开始写
矩阵相加
未做
开始写
登录
注册
忘记密码
点击此处输入用户名
点击此处输入密码
登录
点击此处输入用户名
点击此处输入密码
点击此处输入邮箱
发送验证码
点击此处输入验证码
点击此处输入邮箱
发送验证码
点击此处输入验证码
点击此处输入新密码