当前位置:   article > 正文

c++二维数组详解

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。

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

二、二维数组的读入

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

1、读入其中一个元素

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

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

2、读入一行数据。

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

for(int j=0; j<4; j++) cin>>d[2][j]; 并依次输入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列。

三、二维数组的输出

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

1、输出其中一个元素

例如cout<<d[0][2]; 表示输出第0行第2列的数据。

2、输出一行数据

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

for(int j=0; j<m; j++) cout<<d[i][j]<<””; //输出第i行第j个数

3、输出整个二维数组

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

for(int i=0; i<n; i++) //共n行

{

for(int j=0; j<m; j++) //每行有m列

cout<<d[i][j]<<” ”; //输出第i行第j列的数

cout<<endl; //每输出完一行,就输出一个换行符

}

例题:

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

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

以上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

对角线对称 查看测评数据信息

给出n行n列的二维表格,每个格子都有一个整数,问二维表格是否关于主对角线对称?如果是则输出“YES”,否则输出“NO”。主对角线是指从左上角格子到右下角格子的那条线。

下图是4行4列的主对角线:

输入格式

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

接下来是n行,每行有n个正整数,范围是[1,1000]。

输出格式

“YES”或“NO”。

输入/输出例子1

输入:

4

1 3 2 4

3 5 7 9

2 7 6 8

4 9 8 3

输出:

YES

输入/输出例子2

输入:

3

12 31 20

31 52 7

20 7 6

输出:

YES

输入/输出例子3

输入:

3

1 3 3

3 5 7

2 7 6

输出:

NO

对称数组 查看测评数据信息

给出n行m列的二维数组,现在考虑二维数组是否左右对称、上下对称。如果二维数组既不是左右对称也不是上下对称,那么输出“NONE”。如果二维数组既是左右对称又是上下对称,那么输出“BOTH”。如果二维数组是左右对称但不是上下对称,那么输出“H”。如果二维数组不是左右对称而是上下对称,那么输出“V”。

输入格式

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

接下来是n行,每行有m个正整数,范围是[1,1000]。

输出格式

一个字符串。“NONE”或“BOTH”或“H”或“V”。双引号不用输出。

输入/输出例子1

输入:

3 4

1 2 3 4

9 8 7 3

1 2 3 4

输出:

V

输入/输出例子2

输入:

3 4

4 2 2 4

3 7 7 3

3 2 2 3

输出:

H

输入/输出例子3

输入:

3 4

4 2 2 4

3 7 7 3

4 2 2 4

输出:

BOTH

输入/输出例子4

输入:

3 4

3 2 2 4

3 7 7 3

4 2 2 4

输出:

NONE

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/319721
推荐阅读
相关标签
  

闽ICP备14008679号