C语言编程:自定义一个5*5的矩阵,找出矩阵中最大的数,并输出其所在的行与列,怎么写?

要求:
1.自定义一个矩阵显示函数,将初始化的二维数组(元素值0~999)以矩阵形式显示出来。
2.自定义一个求矩阵中最大数的函数,并输出最大值以及所在的行列,输出形式a[x][y]=d回车,a是数组名,x、y是最大值下标,d是最大值。

代码文本:

#include "stdio.h"

#define N 5

void dispmatrix(int (*p)[N]){

int i,j;

for(i=0;i<N;i++){

for(j=0;j<N;printf("%4d",p[i][j++]));

putchar('\n');

}

}

void findmax(int p[][N]){

int i,j,mi,mj;

for(mi=mj=i=0;i<N;i++)

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

if(p[mi][mj]<p[i][j])

mi=i,mj=j;

printf("The MAX is a[%d][%d]=%d\n",mi,mj,p[mi][mj]);

}

int main(int argc,char *argv[]){

int a[N][N]={41,467,334,500,464,145,705,724,169,391,716,895,478,

281,961,827,995,604,163,421,358,718,382,902,491};

printf("Matrix is as follows:\n");

dispmatrix(a);

printf("\n");

findmax(a);

return 0;

}

供参考。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-05-10

#include<iostream>

#include<algorithm>

using namespace std;

int n,m;

int mat[5][5];

int mat_sort[25];

int main(){

int t=0;

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

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

cin>>mat[i][j];

mat_sort[t]=mat[i][j];

t++;

}

}

//输出 

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

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

cout<<mat[i][j]<<" ";

}

cout<<endl;

}

//得到最大值 

sort(mat_sort,mat_sort+25,greater<int>());

int ans=mat_sort[0];

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

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

if(mat[i][j]==ans){

cout<<"a["<<i<<"]["<<j<<"]="<<ans<<endl;

}

}

}

return 0;

}