C语言编程:求矩阵元素中的最大值及所在的行下标数和列下标数。 5
3个回答
展开全部
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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);
}
#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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询