任务描述
本关任务:编写一个程序输入一个
mXn
的矩阵,输出这个矩阵的最大元素值及其行列下标。m,n
均不超过10
。
如何求出最大值
先假设行列下表为
0
的那个元素是当前最大值,并记下它的位置信息:max = a[0][0];
maxi = 0;
maxj = 0;
然后逐行,将每一行的各元素与当前最大值进行比较,如果新的元素值更大,则更新当前的max
以及其所在的位置信息。
测试说明
红色部分是输入。
代码实现
#include <stdio.h>
#include <stdlib.h>
#define M 10
#define N 10
void InputMatrix(int A[][N],int m,int n);
void MatrixMaximum(int a[][N],int m,int n);
int main()
{
int a[M][N] = {0};
int m,n;
printf("请输入矩阵的大小(m,n):");
scanf("%d,%d",&m,&n);
printf("请输入矩阵元素:\n");
InputMatrix(a,m,n);
MatrixMaximum(a,m,n);
return 0;
}
void InputMatrix(int a[][N],int m,int n)
{
for(int i = 0; i < m; i++)
{
for(int j = 0; j < n; j++)
{
scanf("%d", &a[i][j]);
}
}
}
void MatrixMaximum(int a[][N],int m,int n)
{
int max = a[0][0];
int maxi = 0, maxj = 0;
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
if (max < a[i][j])
{
max = a[i][j];
maxi = i;
maxj = j;
}
}
}
printf("max = %d\n", max);
printf("maxi = %d, maxj = %d", maxi, maxj);
}