永发信息网

C语言:求矩阵中行和列的最值

答案:4  悬赏:70  手机版
解决时间 2021-04-06 11:17
  • 提问者网友:皆是孤独
  • 2021-04-06 07:52
C语言:求矩阵中行和列的最值
最佳答案
  • 五星知识达人网友:思契十里
  • 2021-04-06 07:59
#include
int main()
{
int i,j,tem,m,n,a[500][500];


int rmax,cmax;


scanf("%d%d",&m,&n);


for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);


for(i=0;i{
rmax=0;
for(j=0;jif(a[i][j]>rmax) rmax=a[i][j];
printf("The max number of the %d row is %d\n",i+1,rmax);

}

for(j=0;j{
cmax=0;
for(i=0;iif(a[i][j]>cmax)cmax=a[i][j];
printf("The max number of the %d column is %d\n",j+1,cmax);

}

return 0;
}
全部回答
  • 1楼网友:冷風如刀
  • 2021-04-06 10:02
#include "stdafx.h"
#include<stdio.h>
#include<stdlib.h>
int max_hang(int ar[][100],int);
int min_hang(int ar[][100],int);
int max_lie(int ar[][100],int);
int min_lie(int ar[][100],int);
int i,j;
void main()
{
int a[100][100];
int n,m;
printf("输入矩阵的行数和列数:");
scanf("%d %d",&i,&j);
printf("输入矩阵:\n");
for(n = 0;n < i;n++)
for(m = 0;m < j;m++)
scanf("%d",a[n]+m);
for(n = 0;n < i;n++)
printf("第%d行的最大值是:%d\n第%d行的最小值是:%d\n",n+1,max_hang(a,n),n+1,min_hang(a,n));
for(m = 0;m < j;m++)
printf("第%d列的最大值是:%d\n第%d列的最小值是:%d\n",m+1,max_lie(a,m),m+1,min_lie(a,m));
system("pause");
}
int max_hang(int ar[][100],int n)
{
int max_h = ar[n][0];
int index;
for(index = 1;index < j;index++)
if(max_h < ar[n][index])
max_h = ar[n][index];
return max_h;
}
int min_hang(int ar[][100],int n)
{
int min_h = ar[n][0];
int index;
for(index = 1;index < j;index++)
if(min_h > ar[n][index])
min_h = ar[n][index];
return min_h;
}
int max_lie(int ar[][100],int n)
{
int max_l = ar[0][n];
int index;
for(index = 1;index < i;index++)
if(max_l < ar[index][n])
max_l = ar[index][n];
return max_l;
}
int min_lie(int ar[][100],int n)
{
int min_l= ar[0][n];
int index;
for(index = 1;index < i;index++)
if(min_l > ar[index][n])
min_l = ar[index][n];
return min_l;
}
  • 2楼网友:野慌
  • 2021-04-06 09:09
typedef struct
{
int **p;
int m,n;
}Mat;
//创建和初始化,通过数组,可以把一维数组,二维数组的第一维的手指针传入
Mat *CreateMat(int m,int n,int *value)
{
Mat *mat;
mat =( Mat *)malloc sizeof(Mat);
mat->p=(int **)malloc(m*sizeof(int *));
for(int i=0;i<m;i++)
{
mat->p[i]=(int *)malloc(n*sizeof(int));
}
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
mat->p[i][j]=value[i*n+j];
}
mat->n=n;
mat->m=m;
return m;
}
//通过二维指针创建和初始化
Mat *CreateMatPtrPtr(int n,int n,int **value)
{
Mat *mat;
mat =( Mat *)malloc sizeof(Mat);
mat->p=(int **)malloc(m*sizeof(int *));
for(int i=0;i<m;i++)
{
mat->p[i]=(int *)malloc(n*sizeof(int));
}
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
mat->p[i][j]=value[i][j];
}
mat->n=n;
mat->m=m;
return mat;
}
//没赋值的矩阵
Mat *CreateMatOnly(int m,int n,int *value)
{
Mat *mat;
mat =( Mat *)malloc sizeof(Mat);
mat->p=(int **)malloc(m*sizeof(int *));
for(int i=0;i<m;i++)
{
mat->p[i]=(int *)malloc(n*sizeof(int));
}
mat->n=n;
mat->m=m;
return mat;
}
//全同数值矩阵
Mat *CreateMatVal(int m,int n,int value)
{
Mat *mat;
mat =( Mat *)malloc sizeof(Mat);
mat->p=(int **)malloc(m*sizeof(int *));
for(int i=0;i<m;i++)
{
mat->p[i]=(int *)malloc(n*sizeof(int));
}
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
mat->p[i][j]=value;
}
mat->n=n;
mat->m=m;
return mat;
}
//0 矩阵
Mat *CreateMatZero(int m,int n,int value)
{
Mat *mat;
mat =( Mat *)malloc sizeof(Mat);
mat->p=(int **)malloc(m*sizeof(int *));
for(int i=0;i<m;i++)
{
mat->p[i]=(int *)malloc(n*sizeof(int));
}
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
mat->p[i][j]=0;
}
mat->n=n;
mat->m=m;
return mat;
}
//1 矩阵
Mat *CreateMatE(int m,int n)
{
Mat *mat;
mat =( Mat *)malloc sizeof(Mat);
mat->p=(int **)malloc(m*sizeof(int *));
for(int i=0;i<m;i++)
{
mat->p[i]=(int *)malloc(n*sizeof(int));
}
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
mat->p[i][j]=1;
}
mat->n=n;
mat->m=m;
return mat;
}
//删除
void DelMat(Mat** mat)
{
for(int i=0;i<m;i++)
{
free(*mat->p[i]);
}
free(*mat->p);
free(*mat);
*mat=NULL;
}

void MaxMinOfRaw(const Mat* mat,int *min_val,int *max_val)
{
int mi,ma;
if(!mat)return;
if(!min_value)return;
if(!max_value)return;
for(int i=0;i<m;i++)
{
mi=ma=mat->p[i][0];
for(int j=1;j<n;j++)
{
if(mi<mat->p[i][j])mi= mat->p[i][j];
}
min_val[i]=mi;
max_val[i]=ma;
}
}

void MaxMinOfCol(const Mat* mat,int *min_val,int *max_val)
{
int mi,ma;
if(!mat)return;
if(!min_value)return;
if(!max_value)return;
for(int i=0;i<n;i++)
{
mi=ma=mat->p[0][i];
for(int j=1;j<m;j++)
{
if(mi<mat->p[j][i])mi= p[j][i];
}
min_val[i]=mi;
max_val[i]=ma;
}
}
  • 3楼网友:渊鱼
  • 2021-04-06 08:18
一次游历能求出来,标记好即可
int a[N][M];
int i,j;
int imax[M],imin[M],jmax[N],jmin[N];
赋值好a的数据,这个不写了
for(i=0;i<M;i++) //行的第一个数赋值给imax和imin
imax[i]=imin[i]=a[i][0];
for(i=0;i<N;i++) //列的第一个数赋值给imax和imin
imax[i]=imin[i]=a[0][i];
for(i=0;i<N;i++)
for(j=0;j<M;j++)
{
if(imax[i]<)//比较赋值即可
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯