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

从键盘输入一个5*5矩阵,求出该矩阵元素中最大值及所在的行下标数和列下表数。... 从键盘输入一个5*5矩阵,求出该矩阵元素中最大值及所在的行下标数和列下表数。 展开
 我来答
听不清啊
高粉答主

2014-01-20 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部

#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);

}

百度网友d580670
2017-06-28 · TA获得超过1983个赞
知道大有可为答主
回答量:2054
采纳率:82%
帮助的人:705万
展开全部
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
白羊蝶谷暗香
2014-01-20
知道答主
回答量:7
采纳率:0%
帮助的人:2.3万
展开全部
#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);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式