一、二维数组的认识:
一维数组是一个线性结构
二维数组是一个平面结构
三维数组是立方体
四维:柱子
五维:柱子组成的一面墙
二、二维数组的定义方法
1、类型 (数组名)[行数][列数];
使用下标进行定义
比如:
#include<bits/stdc++.h>
using namespace std;
int main(){
int a[2][3];
a[0][0]=0;
a[0][1]=1;
a[0][2]=5;
a[1][0]=2;
a[1][1]=3
a[1][2]=4;
return 0;
}
2、定义时就赋初始值
格式:类型 数组名[行数][列数] ={{数据1,数据2……},{数据3,数据4……}……}
例如:
#include<bits/stdc++.h>
using namespace std;
int main(){
int a[2][4]={1,2,3,4},{5,6,7,8}};
return 0;
}
3、一维数组的赋值方法
格式:类型 数组名[行数][列数]={数据1,数据2,数据3,数据4…………}
比如:
#include<bits/stdc++.h>
using namespace std;
int main(){
int a[2][4]={1,2,3,4,5,6,7,8};
return 0;
}
4、不写行数
类型 数组名[][列数]={数据1,数据2,数据3,数据4,………};
例如:
#include<bits/stdc++.h>
using namespace std;
int main(){
int a[][4]={1,2,3,4,5,6,7,8};
return 0;
}
以上是最基本的四种二维数组的定义方式。
三、二维数组的输入输出
#include<bits/stdc++.h> using namespace std; int main(){ int n,m; cin>>n>>m; int a[n][m]; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cin>>a[i][j]; } } for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cout<<a[i][j]<<" "; } cout<<endl; } return 0; }
四、例题
(郭远摘苹果)郭远有一天走到了一片苹果林,里面每颗树上都结有不同数目的苹果,郭远身上只能拿同一棵树上的苹果,他每到一棵果树前都会把自己身上的苹果扔掉并摘下他所在树上的苹果并带走(假设郭远会走过每一棵苹果树),问在郭远摘苹果的整个过程中,他身上携带的最多苹果数与最小苹果数的差是多少?
输入:
第 1 行读入 n,m(即苹果林中有果树的行数和列,0<n,m≤10);
接下来 n 行,每行读入 m 个整数(即每颗树上的苹果数);
输出:
1 个数字(郭远摘苹果的整个过程中,他身上携带的最多苹果数与最小苹果数的差)
代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m,ma=INT_MIN,mi=INT_MAX;
cin>>n>>m;
int a[n][m];
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>a[i][j];
ma=max(a[i][j],ma);
mi=min(a[i][j],mi);
}
}
cout<<ma-mi;
return 0;
}