问题标题: 二维数组的知识点

0
0

0
已采纳
陈九林
陈九林
高级守护
高级守护

二维数组

二维数组

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)

 

代码我不发了,因为这个在原版讲义里是完整代码。

 

1636 二维数组标准输入输出
已知一个m行n列的整型二维数组,要求按照输入的样子原样输出这个二维数组,请各位同学编写程序解决这个问题(0<m,n<10)。

 

这题代码我也不发了,因为这个在原版讲义里也是完整代码。

 

 

 

这个是我很早以前火箭班学习时的讲义,现在我已经到创新A班了,希望这份讲义能够对你起到帮助

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;
}

同理,如果交换某两行的元素,则从第一列开始,对每一列这两行的元素进行交换,直到最后一列。

课堂练习选讲:

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; }

0
姜宇轩
姜宇轩
中级天翼
中级天翼

二维数组:存储多行多列的数据

前面我们学习了一维数组,数组可以用于批量存储数据。
而对于多行多列的数据,如果只用一维数组来存储,可能就会丢失行列信息,比如我们要存储下列数据:

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];

     }

}

输出二维数组的数据同理,注意输出完一行元素要换一行再输出。

 

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; }

0
张恩泽
张恩泽
高级天翼
高级天翼

二维数组就是一个矩阵

0
潘艺博
潘艺博
初级天翼
初级天翼

二维数组:存储多行多列的数据

前面我们学习了一维数组,数组可以用于批量存储数据。
而对于多行多列的数据,如果只用一维数组来存储,可能就会丢失行列信息,比如我们要存储下列数据:

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]; } }

输出二维数组的数据同理,注意输出完一行元素要换一行再输出。

我要回答