数组也能嵌套数组。如果你需要存储一个表格,那么需要使用多维数组。
二维数组本质上是以数组作为数组元素的数组,即“数组的数组
5.1 定义和初始化
如果说一维数组是一排变量,二维数组就是矩阵。
5.1.1 数组的定义
定义:数据类型 数组名[常量表达式1] [常量表达式2]
int a[4][5]; //一个四行五列的数组
5.1.2 输入输出
#include<bits/stdc++.h> using namespace std; int a[105][105],m,n;//定义在mian()外面,系统会分配较大的内容,超过10万int整型 int main(){ //数组输入 cin >> n >> m; for (int i = 1; i <= n; i++){ for (int j = 1; j <= m; j++){ cin >> a[i][j]; } } //输出 for (int i = 1; i <= n; i++){ for (int j = 1; j <= m; j++){ cout << a[i][j] << " "; } cout << endl;//记得换行 } return 0; }
5.2 矩阵特点
5.2.1 矩阵的对角线
在一个m行m列的矩阵中,从左上角到右下角这一斜线上的m个元素的位置,叫做主对角线。
从右上角到左下角这一斜线上的m个元素的位置,叫做副对角线。
主对角线方向(主线)的元素特点 : 若行号 - 列号 + m = k,那么这个元素在第k条主线上
副对角线方向(副线)元素特点 : 若行号 + 列号 - 1 = k,那么这个元素在第k条副线上;
//输出m*m主对角线上的元素 #include<bits/stdc++.h> using namespace std; int a[105][105],m;//定义在mian()外面,系统会分配较大的内容,超过10万int整型 int main(){ //数组输入 cin >> m; for (int i = 1; i <= m; i++){ for (int j = 1; j <= m; j++){ cin >> a[i][j]; } } //输出 for (int i = 1; i <= n; i++){ for (int j = 1; j <= m; j++){ if(i == j) cout << a[i][j] << " "; } } return 0; }
5.2.2 数组坐标的表示
一个格子的坐标值是 (x,y),那么它是这个表格 x 行 y 列。
上方:x-1, y
下方:x+1, y
左方:x, y-1
右方:x, y+1
a[x] [y] 是第 x 行第 y 列的数据
//杨辉三角形【题面】下图是杨辉三角的前 6 行。观察样例的规律,输出杨辉三角的前 n 行。//样例输入6//样例输出 11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1//标程#include<bits/stdc++.h>using namespace std;int n,a[11][11];int main(){ //输入 cin >> n; for(int i = 1; i <= n; i++){ for(int j = 1; j <= i; j++){ if(j == 1 || j == i) a[i][j] = 1;//边界赋值1 else a[i][j] = a[i-1][j-1] + a[i-1][j];//递推公式 } } //输出 for(int i = 1; i <= n; i++){ for(int j = 1; j <= i;j++){ cout << a[i][j] << " "; } cout << endl; } return 0;}
爱编程 玩科技 懂教育
领取专属 10元无门槛券
私享最新 技术干货