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。

c++二维数组,基础精讲,c++,算法,数据结构,开发语言,Powered by 金山文档

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

二、二维数组的读入

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

c++二维数组,基础精讲,c++,算法,数据结构,开发语言,Powered by 金山文档

1、读入其中一个元素

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

c++二维数组,基础精讲,c++,算法,数据结构,开发语言,Powered by 金山文档

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

c++二维数组,基础精讲,c++,算法,数据结构,开发语言,Powered by 金山文档

2、读入一行数据。

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

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

c++二维数组,基础精讲,c++,算法,数据结构,开发语言,Powered by 金山文档

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。每个学生的身高都是读入的。如果一个学生比他“密切相关”的学生都高,那么该学生就是“高人”,问总共有多少个学生是“高人”。下面以小明同学为例,通过图来说明与小明“密切相关”的同学。

c++二维数组,基础精讲,c++,算法,数据结构,开发语言,Powered by 金山文档

以上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列的主对角线:

c++二维数组,基础精讲,c++,算法,数据结构,开发语言,Powered by 金山文档

输入格式

第一行,一个整数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文章来源地址https://www.toymoban.com/news/detail-739296.html

到了这里,关于c++二维数组详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【每日算法 && 数据结构(C++)】—— 03 | 合并两个有序数组(解题思路、流程图、代码片段)

    An inch of time is an inch of gold, but you can’t buy that inch of time with an inch of gold. An inch of time is an inch of gold, but you can\\\'t buy that inch of time with an inch of gold 给你两个有序数组,请将两个数组进行合并,并且合并后的数组也必须有序 这个题目要求将两个有序数组合并成一个有序数组。在数

    2024年02月11日
    浏览(52)
  • 【每日算法 && 数据结构(C++)】—— 02 | 数组的并交集(解题思路、流程图、代码片段)

    When you feel like giving up, remember why you started. 当你想放弃时,请记住为什么你开始 给你两个数组,请分别求出两个数组的交集和并集 在数学中,我们可以通过交集和并集来描述两个集合之间的关系。 交集(Intersection) :指的是两个集合中共有的元素组成的集合。可以用符号

    2024年02月11日
    浏览(50)
  • 数据结构与算法教程,数据结构C语言版教程!(第五部分、数组和广义表详解)五

    数组和广义表,都用于存储逻辑关系为“一对一”的数据。 数组存储结构,99% 的编程语言都包含的存储结构,用于存储不可再分的单一数据;而广义表不同,它还可以存储子广义表。 本章重点从矩阵的角度讨论二维数组的存储,同时讲解广义表的存储结构以及有关其广度和

    2024年01月23日
    浏览(49)
  • 数据结构与算法教程,数据结构C语言版教程!(第五部分、数组和广义表详解)三

    数组和广义表,都用于存储逻辑关系为“一对一”的数据。 数组存储结构,99% 的编程语言都包含的存储结构,用于存储不可再分的单一数据;而广义表不同,它还可以存储子广义表。 本章重点从矩阵的角度讨论二维数组的存储,同时讲解广义表的存储结构以及有关其广度和

    2024年01月21日
    浏览(47)
  • C++基础-介绍·数据结构·排序·算法

    C++是一门风格严谨又不失自由的开发语言,提供了完整的内存管理、支持函数式编程和面向对象编程,支持模板、多继承、多实现、重载、重写等多态特性。 优势在于目前90%的操作系统、数据库、应用基础架构、硬件嵌入式等都是使用C/C++制作的,而C++是对C的标准扩展,掌握

    2024年02月03日
    浏览(42)
  • 数据结构实验之矩阵的运算器(二维数组)

    实验目的 掌握并学会运用数组及相关知识 掌握矩阵相关运算的代码实现 学会小组的分工与合作 体会封装的好处 实验任务及要求 要求实现矩阵的计算器,能供用户选择不同菜单,进而实现不同存储形式及调用相应计算的算法,并记录运算过程。 运算程序主要包括:①矩阵的

    2024年01月15日
    浏览(37)
  • 【数据结构】二维数组的行优先、列优先存储问题

    今天同学问我一道感觉很基础的数据结构问题,虽然答案做对了,但是原理一直比较迷,仔细看了一下题,原来是自己把自己绕进去了。。。在此记录一下,大佬如果有更好的方法,可以在评论区留言,不定期更新。 先给出行优先和列优先的计算公式: 设数组为A[m][n]( m 行

    2024年02月10日
    浏览(53)
  • 数据结构二维数组计算题,以行为主?以列为主?

    1.假设以行序为主序存储二维数组A=array[1..100,1..100],设每个数据元素占2个存储单元,基地址为10,则LOC[5,5]=(  )。 A.808            B . 818             C.1010             D.1020 答案: B 解释:以行序为主,则 LOC[5,5]=[ ( 5-1 ) *100+ ( 5-1 ) ]*2+10=818 。 2

    2024年02月05日
    浏览(48)
  • 【C++入门】学习使用二维数组基本知识及用法详解

    🧛‍♂️iecne个人主页: : iecne的学习日志 💡每天 关注 iecne的作品,一起进步 💪一起学习,必看iecne 🐳希望大家多多支持🥰一起进步呀! 二维数组就是在一维数组上多加一个维度。 建议:以下三种定义方式,利用第二种更加直观,提高代码可读性 第二种就是在定义一

    2024年01月25日
    浏览(52)
  • 数据结构与算法—二叉树数组表示(ArrayBinTree)、二叉树的链式表示(LinkedBinTree)的基于C++模板代码实现

    1、二叉树的顺序表示:ArrayBinTree.h 二叉树的顺序表示法操作方便,但缺点是容易造成存储空间浪费。 这是一个用数组实现的二叉树类模板。它可以创建一个空树,也可以在指定的位置插入结点并设置结点的值,可以删除子树,并支持逐层遍历。使用该类时,需要提供一个元

    2024年02月06日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包