c++二维数组详解

一、二维数组的定义

假如我们要保存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。

c++二维数组详解_第1张图片

第i行第j列的元素就是d[i][j],d[i][j]相当于一个普通的整型变量,它的用法相当于一个普通的整型变量的用法。

二、二维数组的读入

定义二维数组 int d[3][4];

c++二维数组详解_第2张图片

1、读入其中一个元素

例如:cin>>d[0][1],输入10,那么会变成这样:

c++二维数组详解_第3张图片

假如再读入cin>>d[1][3],并输入30,那么会变成这样:

c++二维数组详解_第4张图片

2、读入一行数据。

可以用for循环读入一行数据,例如下面是用循环读入4个整数保存到d数组的第2行。

for(int j=0; j<4; j++) cin>>d[2][j]; 并依次输入40 50 60 70,那么会变成:

c++二维数组详解_第5张图片

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列。

三、二维数组的输出

假如有n行m列的数据保存在二维数组d[0...n-1][0...m-1]。

1、输出其中一个元素

例如cout<

2、输出一行数据

假如要输出第i行的m个整数,可以用下面的循环实现:

for(int j=0; j

3、输出整个二维数组

可以用二重循环输出整个二维数组。

for(int i=0; i

{

for(int j=0; j

cout<

cout<

}

例题:

密切相关 查看测评数据信息

有n*m个学生,排成n行m列,行编号从1至n,列编号从1至m。每个学生的身高都是读入的。如果一个学生比他“密切相关”的学生都高,那么该学生就是“高人”,问总共有多少个学生是“高人”。下面以小明同学为例,通过图来说明与小明“密切相关”的同学。

c++二维数组详解_第6张图片

以上A,B,C,D,E,F,G,H共8个位置的学生就是与小明同学“密切相关”的人。注意,上图提及的8个位置当中,如果有哪些位置是超出队伍范围的,那么超出范围的那些位置可以不考虑。

输入格式

第一行,两个整数n和m。1<=n,m<=100。

接下来是n行,每行有m个整数,每个整数范围[140,200]。

输出格式

一个整数

输入/输出例子1

输入:

3 4

150 190 170 180

145 150 165 175

140 178 149 190

输出:

4

样例解释

“高人”用蓝色标识

150 190 170 180

145 150 165 175

140 178 149 190

你可能感兴趣的:(基础精讲,c++,算法,数据结构,开发语言)