`

C++数组进阶——二维数组的应用及行列互换存储思路,擂台法求最大值

c++ 
阅读更多

二维数组的定义和引用

一、相关定义

1、具有两个下标的数组称为二维数组。

2、一般形式:

类型标识符 数组名[常量表达式][常量表达式]

例如:float a[3][4], b[5][6];

3、二维数组的排列顺序:按行存放,即在内存中先顺序存放第一行的元素,再存放第二行的元素。【多维数组元素在内存中的排列顺序:第一维的下标变化最慢,最右边的下标变化最快】

4、二维数组的引用

数组名[下标][下标]

数组元素是左值,可以出现在表达式中,也可以被赋值。

注意:在使用数组元素时,应该注意下标值应在已定义的数组大小的范围内。

定义一个三行四列的整型二维数组:int a[3][4];

严格区别在定义数组时用的a[3][4]和引用元素时的a[3][4]的区别:前者a[3][4]用来定义数组的维数和各维的大小,后者a[3][4]中的34是下标值,a[3][4]代表了某个元素。

二、二维数组的初始化

int a [3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

int a [3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

对不分元素赋初值:int a [3][4]={{1},{5},{9 }};

其他元素自动默认为0.

二维数组中第一维的长度可以不指定,但第二维的长度不能省

 

三、二维数组程序实例:行列互换

将二维数组行列和元素互换,存到另一个二维数组中:

实现如下:


 

/*

* example.cpp

*

* Created on: 2012-3-30

* Author: yangbo_hbzjk

*/

 

#include<iostream>

usingnamespace std;

 

int main()

{

int a[2][3] = {{1,2,3},{4,5,6}};

int b[3][2];

int i,j;

cout<<"array a:"<<endl;

 

for(i=0;i<=1;i++)

{

for(j=0;j<=2;j++)

{

cout<<a[i][j]<<"";

b[j][i]=a[i][j];

}

cout<<endl;

}

cout<<"array b:"<<endl;

 

for(i=0;j<=1;j++)

{

cout<<b[i][j]<<"";

cout<<endl;

}

return 0;

}

======================

擂台法求二维数组最大值,即求二维数组矩阵的最值问题:

思路:求最值方法很多,现在使用“打擂台”的算法。

如果有若干人比武,先一个人站在台上,与另一个人交手,

败者下台,胜者留台。依次进行比武。最后留在台上的就是

胜者。

--------------------------------

开始把a[0][0]的值赋给变量max,max就是开始时的擂主,

让后让下一个元素与它进行比较,将二者中最大者保存

在max中,然后再让下一个元素与新的max比较,直到最后一个

元素比完为止。max最后的值就是数组所有元素中的最大值。

程序如下:

 

//============================================================================

// Name : C++_array.cpp

// Author : yangbo_hbzjk

// Version :

// Copyright : Your copyright notice

// Description : Hello World in C++, Ansi-style

//============================================================================

#include <iostream>

using namespace std;

 

int main()

{

int a[5][6]={

{56,23,2,3,4,87},{12,13,15,45,26,45},

{99,85,64,56,123,45},{123,456,78,56,45,21},

{25,12,56,35,45,789}

};

int colum=0,row=0,max;

 

max=a[0][0]; //使max开始时取a[0][0]的值

for(int i=0;i<5;i++) //从第0行~第2行

{

for(int j=0;j<6;j++) //从第0列~第3列

{

if(a[i][j]>max) //如果某元素大于max

{

max=a[i][j]; //max将取该元素的值

row=i; //记下该元素的行号i

colum=j; //记下该元素的列号j

}

}

}

cout<<"max="<<max<<endl<<"row="<<row<<endl<<"colum="<<colum<<endl;

return 0;

}


分享到:
评论

相关推荐

    C++一维数组二维数组写入txt,从txt中读取数据存到一维数组二维数组

    本教程将重点讲解如何使用C++将一维和二维数组的数据写入文本文件(txt),以及如何从txt文件中读取数据并存储到一维和二维数组中。数组在C++中是基本的数据结构,而指针则为动态操作提供了便利。以下是一些关键知识...

    c++二维数组ppt资源

    1.给定一个n*n的矩阵,求该矩阵中最大元素的值及所在行、列号。 max = 0; maxi = -1; maxj = -1; for (i = 0; i ; i++) for (j = 0; j ; j++) if (a[i][j] &gt; max) { max = a[i][j]; maxi = i; maxj = j; } ...

    C++ 数组 多维数组 -- 二维数组

    "C++ 数组 多维数组 -- 二维数组" 在计算机编程中,数组是一种重要的数据结构,它允许我们在一个变量名下存储多个值。今天,我们将学习 C++ 中的数组,包括一维数组和多维数组。 首先,让我们来了解数组的概念和...

    JNA调用C++动态库,传入二维数组,通过C++返回二维数组,java调用C++完整案例

    这里我们声明了一个名为`processArray`的函数,它接受一个二维整型数组作为输入,另一个二维整型数组作为输出,返回一个整型值。 接下来,加载C++动态库。在Java中,我们可以通过以下方式加载库: ```java MyDLL ...

    二维数组的行列互换(函数调用实现)

    实现数组的行列互换 形参使用二维数组。函数调用使用引用传递,比较基础。

    C++求二维数组中的最大值和最小值的方法

    本文将详细介绍如何在C++中找到二维数组中的最大值和最小值。首先,我们需要理解二维数组的基本概念。二维数组可以看作是一组一维数组的集合,其中每个一维数组都称为行。因此,我们可以用两个索引(一个代表行,另...

    c++return返回二维数组

    在c++中,经常调用函数,而子函数经常要返回的值是数组,无论一维数组还是二维数组都需要运用到指针的知识。一维数组不再过多叙述,给了一个实例如何返回二维数组,希望对大家有帮助(主要用到指针的知识,看不懂的...

    C++关于信息学竞赛 二维数组23个源文件试题 供初学者练习

    C++关于信息学竞赛 二维数组23个源文件试题 供初学者练习 #include using namespace std; main() { int a[6][6],max,max_y,min,min_x; for(int i=1;i;i++) for(int j=1;j;j++) cin&gt;&gt;a[i][j]; for(int i...

    C++数组之中的最大值最小值应用

    首先,我们要明确C++中获取数组最大值和最小值的基本思路。通常,我们初始化两个变量,一个用于存储当前找到的最大值(max),另一个用于存储最小值(min)。然后遍历数组,将每个元素与当前最大值和最小值进行比较...

    求数组中的最大值!求数组中的最大值

    根据给定的文件信息,我们可以总结出以下关于“求数组中的最大值”的知识点: ### 1. 数组的基本概念 数组是一种基本的数据结构,用于存储相同类型数据的集合。在C#中,数组可以通过定义数组类型、分配内存并初始...

    c++数组实例(有代码)

    在 C++ 中,数组可以分为一维数组和二维数组,一维数组用于存储一组相同类型的元素,而二维数组用于存储一个矩阵。 在第一个实例中,程序使用一个函数来将一个数组的值逆序存储。该函数使用了指针来传递数组,并...

    c++二维数组存放迷宫数据

    这个程序是用二维数组实现对迷宫数据的存放

    c++ 二级指针与二维数组之间值操作

    在C++编程语言中,二级指针(Double ...了解二级指针和二维数组的关系以及如何进行值操作,对于理解和编写涉及动态内存分配和复杂数据结构的C++程序至关重要。熟练掌握这一技巧,将有助于编写更高效、更灵活的代码。

    c++数组练习题

    c++数组练习题及答案。本套练习题包含了数组的各方面知识,题型包括判断题 填空题,编程题等

    c++动态数组申请(包括一维,二维的)

    1. 一维动态数组模拟二维数组:这种方法实际上是一维数组的连续存储,需要手动计算每个元素的偏移。例如,创建一个m行n列的二维数组: ```cpp int **arr = new int*[m]; for (int i = 0; i ; ++i) { arr[i] = new ...

    c++数组求平均数函数

    根据给定的文件信息,我们可以总结出几个与C++中数组求平均数相关的知识点: ### 知识点一:理解数组及其操作 **数组定义**: - 数组是一种线性数据结构,它允许存储相同类型的数据元素。 - 在C++中,数组可以通过...

    c++动态创建二维数组

    C++动态创建二维数组的实现方法 在 C++ 中,动态创建二维数组是一种常用的技术,能够满足程序的需求。通过使用指针数组,可以实现动态的二维数组创建。下面将详细介绍动态创建二维数组的方法和技术。 指针数组和数...

    C++二维数组编程实例.zip

    在C++编程中,二维数组是一种非常重要的数据结构,它被广泛用于表示表格或矩阵等数据。本资源“C++二维数组编程实例.zip”提供了一系列可以直接运行的实例,旨在帮助学习者深入理解并掌握C++中二维数组的使用。下面...

    将二维数组进行线性插值

    在本场景中,我们处理的是一个二维数组,这种数据结构通常用来存储矩阵或图像数据。以下是关于二维数组和线性插值的详细知识: 二维数组在计算机科学中,是一个多维数据结构,它由一串连续的内存位置组成,这些位置...

    求二位数组的“数组”。二维数组的“最大点”定义为:某个数式所在行的最大值,并且是所在列的最大值。某行或某列上可能有多个“最大点”

    二维数组的“最大点”定义为:某个数式所在行的最大值,并且是所在列的最大值。某行或某列上可能有多个“最大点” 样例输入: 3 4 8 60 7 100 10 498 12 49 -71 132 4 85 样例输出 100 1 4 498 2 2

Global site tag (gtag.js) - Google Analytics