大家好,我是AC使者。
二维数组入门
一、二维数组的定义
假如我们要保存 100 个整数,我们可以使用一维数组,定义数组 int a[100];
,然后就可以把这 100 个整数保存在数组的 a[0],a[1],......,a[99] 。
假如我们有 3 行,每行有 4 个整数,应该如何保存呢?
每行使用一个一维数组是可以的,例如:第一行使用数组 int a[4];
,第二行使用数组int b[4];
,第三行使用数组 int c[4];
。但是这样 3 个数组的名称不一样,有时候使用起来比较麻烦,有没有更好的方法呢?下面介绍二维数组的定义:
**类型标识符 数组名[常量表达式1][常量表达式2]; **
例如: int d[3][4];
表示d数组是整型的二维数组,有 3 行,每行可以保存 4 个整数。行的编号是从 0 至 2 ,列的编号是从 0 至 3 。
第 i 行第 j 列的元素就是 d[i][j],d[i][j] 相当于一个普通的整型变量,它的用法相当于一个普通的整型变量的用法。
二、二维数组的读入
-
定义
int d[3][4]; //定义二维数组
Copy
-
读入数据,赋值到其中一个元素
cin>>d[0][1]; //键盘输入 10
Copy
执行上面的代码,键盘输入 10 ,数组会变成下面这样:
cin>>d[1][3]; //键盘输入 30
Copy
执行上面的代码,键盘输入 30 ,数组会变成下面这样:
2、读入数据,赋值给一行数组元素。
可以用 for 循环读入一行数据,例如下面是用循环读入 4 个整数保存到 d 数组的第 2 行。
for(int j=0; j<4; j++)
cin>>d[2][j]; //键盘依次输入 40 50 60 70
Copy
执行上面的代码,并依次输入40 50 60 70,那么会变成:
3、读入多行数据
假如要把 3 行 4 列的整数全部读入,可以用两重循环:
for(int i=0; i<3; i++) //共3行
for(int j=0; j<4; j++) //每行读入4个整数
cin>>d[i][j]; //每次读入一个整数,存放到 d 数组的第 i 行第 j 列。
Copy
三、二维数组的输出
假如有 n 行 m 列的数据保存在二维数组 d[0...n-1][0...m-1] 。
-
输出其中一个元素
cout<<d[0][2]; //表示输出第0行第2列的数据。
Copy
- 输出一行数据
假如要输出第 i 行的 m 个整数,可以用下面的循环实现:
for(int j=0; j<m; j++)
cout<<d[i][j]<<""; //输出第i行第j个数
Copy
- 输出整个二维数组
可以用二重循环
输出整个二维数组。
for(int i=0; i<n; i++) //共n行
{
for(int j=0; j<m; j++) //每行有m列
cout<<d[i][j]<<" "; //输出第i行第j列的数
cout<<endl; //每输出完一行,就输出一个换行符
}