缔造者
二维数组
1.二维数组的概念:
- 单行或者单列(1个维度)的数组称为一维数组。
- 多行且多列(2个维度)的数组称为二维数组。
2.定义二维数组:
- 二维数组定义的一般格式:
数据类型 数组名[常量表达式1][常量表达式2];
例如:int a[4][3];
定义了一个4行3列的二维整型数组 a。
数组 a **可以存储 4*3=12 个元素。
注意:行和列的标号都是从 0 开始的。
数组a中的元素分别是:
a[0][0],a[0][1],a[0][2],
a[1][0],a[1][1],a[1][2],
a[2][0],a[2][1],a[2][2],
a[3][0],a[3][1],a[3][2]。
3.二维数组元素的引用:
- 二维数组的元素引用与一维数组元素引用类似。
区别:二维数组元素的引用必须给出两个下标。 - 引用的格式为:
数组名[行下标][列下标] - 如定义二维数组:int a[4][3];
那么a[1][2]就是二维数组 a中的第2行第3列元素。
注意a[4][3]不是对二维数组 a中元素的引用,因为a[4][3] 已经越界了,它并不在定义的二维数组范围之内!
4.二维数组元素的输入输出:
- 以二维数组a[4][3]为例:int a[4][3];
1)输入:
for(i=1;i<=4;i++){ //控制行下标 for(j=1;j<=3;j++){ //控制列下标 cin>>a[i][j]; } }
2)输出:
for(i=1;i<=4;i++){ for(j=1;j<=3;j++){ cout<<a[i][j]<<" "; //每个元素之间用空格间隔 } cout<<endl; //每一行输出结束之后需要换行 }
5.二维数组的行下标、列下标:
- 一个m行n列的二维数组x,如果第一个元素的行、列下标是0、0,那么它的行下标是从0开始,到m-1结束,列下标是从0开始,到n-1结束。此时,二维数组x第a行第b列的元素是x[a-1][b-1]。
- 而如果输入时,二维数组x的行列下标都从1开始,行下标到m结束,列下标到n结束,则第a行第b列的元素就是x[a][b]。
###6.二维数组元素的值交换:
a.某两个元素交换
类似于两个变量之间的值交换,需要借助于另外一个中间变量。如:将整型二维数组a的两个元素a[1][1]和a[3][3]进行交换,定义一个中间变量temp:int temp; 然后借助“斜线法则”:
temp=a[1][1];
a[1][1]=a[3][3];
a[3][3]=temp;
完成二维数组元素a[1][1]与a[3][3]值的交换。
b.整行/列元素进行交换
如果交换某两列的元素,则从第一行开始,对每一行这两列的元素进行交换,直到最后一行。
如:交换二维数组a[10][20]第3列和第7列的元素
for(int i=1;i<=10;i++){
int t=a[i][3];
a[i][3]=a[i][7];
a[i][7]=t;
}
同理,如果交换某两行的元素,则从第一列开始,对每一列这两行的元素进行交换,直到最后一列。
课堂练习选讲:
2534 交换矩阵的列
任意给定一个m行n列的矩阵,将第a列和第b列交换,并输出交换后的结果。(1≤a≤m≤100;2≤b≤n≤100)
#include<iostream> using namespace std; int main() { int x[101][101],m,n,a,b,t; cin>>m>>n>>a>>b; for(int i=1;i<=m;i++){ for(int j=1;j<=n;j++){ cin>>x[i][j]; } } for(int i=1;i<=m;i++) //从第1行到第m行,交换每行第a列与第b列的元素 { t=x[i][a]; x[i][a]=x[i][b]; x[i][b]=t; } for(int i=1;i<=m;i++){ for(int j=1;j<=n;j++){ cout<<x[i][j]<<" "; } cout<<endl; } return 0; }
1636 二维数组标准输入输出
已知一个m行n列的整型二维数组,要求按照输入的样子原样输出这个二维数组,请各位同学编写程序解决这个问题(0<m,n<10)。
#include<iostream> using namespace std; int a[12][12],m,n; int main() { cin>>m>>n; for(int i=0;i<m;i++) { for(int j=0;j<n;j++){ cin>>a[i][j]; } } for(int i=0;i<m;i++) { for(int j=0;j<n;j++){ cout<<a[i][j]<<" "; } cout<<endl; } return 0; }
高级光能
???
你那么逊的吗?
数组名[几行][几列]
输入用双重循环
输出用双重循环
课后讲义:
二维数组、二维数组习题课 课后讲义(火箭v2)
二维数组
1.二维数组的概念:
- 单行或者单列(1个维度)的数组称为一维数组。
- 多行且多列(2个维度)的数组称为二维数组。
2.定义二维数组:
- 二维数组定义的一般格式:
数据类型 数组名[常量表达式1][常量表达式2];
例如:int a[4][3];
定义了一个4行3列的二维整型数组 a。
数组 a **可以存储 4*3=12 个元素。
注意:行和列的标号都是从 0 开始的。
数组a中的元素分别是:
a[0][0],a[0][1],a[0][2],
a[1][0],a[1][1],a[1][2],
a[2][0],a[2][1],a[2][2],
a[3][0],a[3][1],a[3][2]。
3.二维数组元素的引用:
- 二维数组的元素引用与一维数组元素引用类似。
区别:二维数组元素的引用必须给出两个下标。 - 引用的格式为:
数组名[行下标][列下标] - 如定义二维数组:int a[4][3];
那么a[1][2]就是二维数组 a中的第2行第3列元素。
注意a[4][3]不是对二维数组 a中元素的引用,因为a[4][3] 已经越界了,它并不在定义的二维数组范围之内!
4.二维数组元素的输入输出:
- 以二维数组a[4][3]为例:int a[4][3];
1)输入:
for(i=1;i<=4;i++){ //控制行下标 for(j=1;j<=3;j++){ //控制列下标 cin>>a[i][j]; } }
2)输出:
for(i=1;i<=4;i++){ for(j=1;j<=3;j++){ cout<<a[i][j]<<" "; //每个元素之间用空格间隔 } cout<<endl; //每一行输出结束之后需要换行 }
5.二维数组的行下标、列下标:
- 一个m行n列的二维数组x,如果第一个元素的行、列下标是0、0,那么它的行下标是从0开始,到m-1结束,列下标是从0开始,到n-1结束。此时,二维数组x第a行第b列的元素是x[a-1][b-1]。
- 而如果输入时,二维数组x的行列下标都从1开始,行下标到m结束,列下标到n结束,则第a行第b列的元素就是x[a][b]。
###6.二维数组元素的值交换:
a.某两个元素交换
类似于两个变量之间的值交换,需要借助于另外一个中间变量。如:将整型二维数组a的两个元素a[1][1]和a[3][3]进行交换,定义一个中间变量temp:int temp; 然后借助“斜线法则”:
temp=a[1][1];
a[1][1]=a[3][3];
a[3][3]=temp;
完成二维数组元素a[1][1]与a[3][3]值的交换。
b.整行/列元素进行交换
如果交换某两列的元素,则从第一行开始,对每一行这两列的元素进行交换,直到最后一行。
如:交换二维数组a[10][20]第3列和第7列的元素
for(int i=1;i<=10;i++){
int t=a[i][3];
a[i][3]=a[i][7];
a[i][7]=t;
}
同理,如果交换某两行的元素,则从第一列开始,对每一列这两行的元素进行交换,直到最后一列。
中级天翼
二维数组的定义:
int a[110][110];
char b[110][110];
......
循环输入:
for(int i=1;i<+n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
丁博扬在2021-09-20 13:46:17追加了内容
弄错了,是for(int i=1;i<=n;i++)
资深光能
数组名[行数][列数]
for(......){
.........;
for(.......){
..........;
}
}
cout<<.........;
初级天翼
数组名+[行][列]
例:a[100][100]
输入:
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
输出:
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cout<<a[i][j];
}
cout<<"\n";//注意内循环结束后要输出换行,endl也行
}
详细如下:
二维数组:存储多行多列的数据
前面我们学习了一维数组,数组可以用于批量存储数据
而对于多行多列的数据,如果只用一维数组来存储,可能就会丢失行列信息,比如我们要存储下列数据:
15 8 46
54 1 3
65 3 7
4 5 33
如果用一维数组来存储:int a[12]={15,8,46,54,1,3,65,3,7,4,5,33};确实可以将数据都存起来,但我们没法知道某个数字原本是处于第几行第几列
这时候用二维数组存储数据会更合适
定义二维数组的格式
数据类型 数组名[行数][列数];
例如:int a[4][3];
定义了一个4行3列的二维整型数组 a
数组 a **可以存储 4*3=12 个元素
注意:行和列的标号都是从 0 开始的
数组a中的元素分别是:
a[0][0],a[0][1],a[0][2],
a[1][0],a[1][1],a[1][2],
a[2][0],a[2][1],a[2][2],
a[3][0],a[3][1],a[3][2]。
二维数组的初始化
对于最开始示例中的数据,我们可以定义一个4行3列的二维数组,并初始化赋值:
int a[4][3] = { {15,8,46} , {54,1,3} , {65,3,7} , {4,5,33} };
跟一维数组的初始化差不多,但是每行的数据要用“{}”括起来
二维数组的输入输出
如果要输入数据到二维数组中,应该用双重循环来实现:
for(int i=0;i<4;i++){ //行下标从0到3 for(int j=0;j<3;j++){ //列下标从0到2 cin>>a[i][j]; } }
输出二维数组的数据同理,注意输出完一行元素要换一行再输出
望采纳~