- 任务描述
-
相关知识
- 二维数组的定义
- 二维数组的引用
- 二维数组的初始化
- 编程要求
- 测试说明
任务描述
本关任务:有一个3行4列的矩阵,编程求出其中最大的那个元素的值,以及它所在的行号与列号。
相关知识
二维数组的定义
在实际问题中有很多变量是二维的或多维的,因此C语言允许构造多维数组。多维数组元素有多个下标,以标识它在数组中的位置,多维数组可由二维数组类推而得到。
二维数组定义的一般形式是:
类型说明符 数组名[常量表达式1][常量表达式2]
其中常量表达式1
表示第一维下标的长度,常量表达式2
表示第二维下标的长度。例如: int a[3][4];
说明了一个 3 行 4 列的数组,数组名为a,其下标变量的类型为整型。该数组的数组元素共有3×4个,即: a[0][0],a[0][1],a[0][2],a[0][3]
a[1][0],a[1][1],a[1][2],a[1][3]
a[2][0],a[2][1],a[2][2],a[2][3]
二维数组在概念上是二维的,其下标在两个方向上变化,下标变量在数组中的位置也处于一个平面之中,但是,实际的硬件存储器却是连续编址的,也就是说存储器单元是按一维线性排列的。
如何在一维存储器中存放二维数组,可有两种方式:一种是按行存放, 即放完一行之后顺次放入第二行。另一种是按列存放,即存放完一列之后再顺次存储第二列。
在C语言中,二维数组是按行排列的。即先存放第1行,再存放第2行,最后存放第3行。每行中的元素也是依次存放。
上述二维数组的元素排列顺序为:
a[0][0]→a[0][1]→a[0][2]→a[0][3]→a[1][0]→a[1][1]→a[1][2]→a[1][3]→a[2][0]→a[2][1]→a[2][2]→a[2][3]
C语言还允许使用多维数组。有了二维数组的基础,再掌握多维数组是不困难的。例如,定义三维数组的方法如下:
float a[2][3][4]; //定义三维数组a,它有2页,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},{0,6},{0,0,11}};
-
如果对全部元素都赋初值(即提供全部初始数据),则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。如:
int a[3][4]= {1,2,3,4,5,6,7,8,9,10,11,12};
与下面的定义等价: int a[ ][4]= {1,2,3,4,5,6,7,8,9,10,11,12};
在定义时,也可以只对部分元素赋初值而省略第一维的长度,但应分行赋初值。如: int a[ ][4]={{0,0,3},{ },{0,10}};
数组是一种构造类型的数据。二维数组可以看作是由一维数组的嵌套而构成的。设一维数组的每个元素都又是一个数组,就组成了二维数组。
当然,前提是各数组元素类型必须相同。一个二维数组也可以分解为多个一维数组。C语言允许这种分解,如二维数组a[3][4]
,可分解为三个一维数组,其数组名分别为:a[0]
,a[1]
,a[2]
。
对这3个一维数组不需另作说明即可使用。这3个一维数组都有4个元素,例如: 一维数组a[0]
的元素为:a[0][0]
,a[0][1]
,a[0][2]
,a[0][3]
。
必须强调的是,a[0]
,a[1]
,a[2]
不能当作数组元素使用,它们是数组名,不是单纯的数组元素。
编程要求
根据提示,在右侧编辑器补充代码,有一个3行4列的矩阵,求出其中最大的那个元素的值,以及它所在的行号与列号。
测试说明
平台会对你编写的代码进行测试:
测试输入: 55 8 74 66 32 12 1 36 94 45 65 88
预期输出: 55 8 74 66
32 12 1 36
94 45 65 88
max:94
row :3
colum :1
输入格式: 输入12个整数,用空格分隔。
输出格式: 前三行输出3行4列矩阵:每个数据间用Tab键隔开; 第四行输出最大值; 第五行输出最大值的行数; 第六行输出最大值的列数。文章来源:https://www.toymoban.com/news/detail-471089.html
开始你的任务吧,祝你成功!文章来源地址https://www.toymoban.com/news/detail-471089.html
int main()
{
int a[M][N];
int i,j,max,row=0,colum=0;
for(i=0; i<M; i++)
for(j=0; j<N; j++)
{
scanf("%d",&a[i][j]);
}
max=a[row][colum];
for(i=0;i<M;i++)
for(j=0;j<N;j++)
{
if(a[i][j]>max)
{
row=i;colum=j;
max=a[row][colum];
}
}
for(i=0; i<M; i++)
{
for(j=0; j<N; j++)
{
printf("%d\t",a[i][j]);
}
printf("\n");
}
printf("max:%d\nrow:%d\ncolum:%d",max, row+1, colum+1);
return 0;
}
到了这里,关于有一个3行4列的矩阵,编程求出其中最大的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!