C语言编程:求矩阵元素中的最大值及所在的行下标数和列下标数。

从键盘输入一个5*5矩阵,求出该矩阵元素中最大值及所在的行下标数和列下表数。

#include<stdio.h>

void main()

{

 int a[5][5],n,i,j,max,maxi=0,maxj=0;

 for(i=0;i<5;i++)

  for(j=0;j<5;j++)

   scanf("%d",&a[i][j]);

 max=a[0][0];

 for(i=0;i<5;i++)

  for(j=0;j<5;j++)

   if(a[i][j]>max)

    {max=a[i][j];maxi=i;maxj=j;}

 printf("max=a[%d][%d]=%d\n",maxi,maxj,max);

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-06-28
1:思路分析
   创建数据结构存放矩阵以及要查找的位置Matrix, Idx
   建立动态数组来存放任意大小矩阵用malloc free进行分配释放
   初始化矩阵initmatrix
   遍历动态数组,依次比较,找到最大值 maxpos
   释放动态矩阵freematrix
   
2:代码编写

#include "stdio.h"
typedef struct {int row; int col;} Idx;
typedef struct {int n; double **data;} Matrix;
void maxpos(Matrix* m, Idx* id) {
    int i, j;
    double max = m->data[0][0];
    for (i = 0; i < m->n; i++) {
        for (j = 0; j < m->n; j++) {
//查找最大值
            if (m->data[i][j] >= max) {
                id->row = i;
                id->col = j;
max = m->data[i][j];
            }
        }
    }
}
void initmatrix(Matrix* m) {
int i, j;
int n;
printf("Input Matrix Size:");
scanf("%d", &n);
if (n == 0) return;
m->n = n;
//动态分配行存储
m->data = (double**) malloc(sizeof(double*)*m->n);
printf("Input Matrix elements:\n");
for (i = 0; i < m->n; i++) {
   m->data[i] = (double*) malloc(sizeof(double)*m->n);
   //动态分配列存储
   for (j = 0; j < m->n; j++)
     scanf("%lf", &m->data[i][j]);
}
}

void freematrix(Matrix* m) {
int i;
for (i = 0; i < m->n; i++) free(m->data[i]);
free(m->data);
m->n = 0;
}

int main() {
Matrix m;
Idx    idx;
initmatrix(&m);
maxpos(&m, &idx);
printf("Max elements %lf locate at row %d col %d\n", 
       m.data[idx.row][idx.col], idx.row, idx.col);
freematrix(&m);
return 0;
}
3: 结果演示
Input Matrix Size: 3
Input Matrix elements:
1 7 4
2 9 8
10 2 5
Max elements 10.000000 locate at row 2 col 0

第2个回答  2014-01-20
#include<stdio.h>
#define N 5
#define M 5
void main()
{
int i,j,max,maxi,maxj,a[N][M]={0};
for(i=0;i<N;i++)
for(j=0;j<M;j++)
scanf("%d",&a[i][j]);
max=a[0][0];maxi=0;maxj=0;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
if(a[i][j]>max){max=a[i][j];maxi=i;maxj=j;}
printf("%d %d %d",max,maxi,maxj);
}