C++基础(10):一维数组中例子要求打印学号1-5同学语文成绩,如果,现在要求打印学号1-5同学的语文、数学、英语成绩,那么,数组元素就从一个数字变成了三个数字(一个一维数组)。

什么是二维数组?

当一维数组元素的类型也是一维数组时,这就构成了“数组的数组”,即,二维数组。二维数组一般这样定义:

1
int a[5][3];

上面的数组a实质上是一个5行、3列的表格,表格中可储存15个元素。第1行第1列对应的数组元素是a[0][0],第n行第m列对应数组元素a[n- 1][m-1]

扩展:

当定义的数组下标有多个时,我们称为多维数组,下标的个数并不局限在一个或两个,可以任意多个,如,定义一个三维数组a和四维数组b:

1
2
int a[100][3][5];
int b[100][100][3][5];

多维数组的引用、赋值等操作与二维数组类似,具体参考二维数组的操作。

二维数组的引用

我们可以将二维数组a[下标1][下标2]看做一个 Excel 表格,有行有列,下标1可以看做行数,下标2 可以看做列数,要在二维数组中定位某个元素,必须同时指明行和列。例如:

1
a[4][2]

定义了一个 3 行 4 列的二维数组,共有 3×4=12 个元素,数组名为 a,即:

a[0][0] a[0][1] a[0][2]
a[1][0] a[1][1] a[1][2]
a[2][0] a[2][1] a[2][2]
a[3][0] a[3][1] a[3][2]
a[4][0] a[4][1] a[4][2]

如果想表示第 2 行第 1 列的元素,应该写作 a[1][0]

二维数组的初始化

二维数组的初始化和一维数组类似。可以将每一行的数据分开来写在各自的括号里,也可以把所有数据写在一个括号里,但尽量不用后一种方式初始化。 例如:

1
2
int a[4][2] = {{1,0},{0,1},{-1,0},{0,-1}};
int direct[4][2]={1,0,0,1,-1,0,0,- 1} //尽量不要用这种方式初始化

【题目】输出杨辉三角的前5行。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#include<iostream>
using namespace std;
int main()
{
   int a[5][5]={0};//定义一个5×5的数组,并初始化为0
   for(int i =0; i <5; ++i){//给数组赋值
       a[i][0] = 1;//给第一例赋值
       for(int j = 1; j <= i; ++j)
           a[i][j] = a[i-1][j-1] + a[i-1][j];//根据杨辉三角规则,给后面元素赋值
   }
   for(int i = 0; i < 5; ++i){
       for(int j = 0; j <= i; ++j)
           cout << a[i][j] << " "; 
       cout << endl;
   } 
   return 0;
}

程序输出:

1 
1 1
1 2 1
1 3 3 1
1 4 6 4 1

公众号:格致书院