c语言中,将一个5*5矩阵中最大的元素放在中心,最小的元素放在左上角的代码怎么写?

 我来答
ldw_xc007
推荐于2019-10-11 · TA获得超过458个赞
知道小有建树答主
回答量:340
采纳率:0%
帮助的人:255万
展开全部
//n阶方阵最大值和最小值
#include "stdio.h"
#include "malloc.h"
#include "math.h"
//函数声明
void mat_in(int * p, int n);//输入方阵
int * max(int * p, int n);//最大值
int * min(int * p, int n);//最小值
void swap(int *p , int * q);//交换
void mat_out(int * p, int n);//输出

void main()
{
int n,k;
int *pmax,*pmin;

printf("输入方阵的阶数(本题要求为方阵阶数为5):\n");
scanf("%d",&n);

k=n*n;//开辟动态数组元素的个数
int * p = (int *)malloc(n*n*sizeof(int));//创建动态数组

printf("输入数组数据\n");
mat_in(p,k);//输入n*n数组的数据

printf("输出数组原始数据\n");
mat_out(p,k);

printf("查找数组元素最大值:");
pmax = max(p,k);
printf("%d\n",*pmax);

printf("查找数组元素最小值:");
pmin = min(p,k);
printf("%d\n",*pmin);

swap(p,pmin);
swap(&p[k/2], pmax);
printf("输出交换后的数据\n");
mat_out(p,k);

}
//输入数组元素
void mat_in(int *p, int n)
{
int i;
for(i = 0;i < n; i++ )
scanf("%d",&p[i]);
}
//计算最大值,为方便后续交换,返回最大值的地址
int * max(int * p, int n)
{
int *pmax,i,max;
max=p[0];
for(i=1;i<n;i++)
{
if(p[i] > max)
{
max=p[i];
pmax=&p[i];
}
}
return pmax;
}
//计算最小值

int * min(int * p, int n)
{
int *pmin,i,min;
min=p[0];
for(i=1;i<n;i++)
{
if(p[i]< min)
{
min = p[i];
pmin = &p[i];
}
}
return pmin;
}
//交换
void swap(int * s, int * t)
{
int temp;
temp = *s;
*s = *t;
*t = temp;
}
//输出
void mat_out(int * p, int n)
{
int i,k=0;
int m;
m=int(sqrt(n));
for(i = 0; i < n; i++)
{
k++;
printf("%3d",p[i]);
if(k % m==0)
printf("\n");
}
printf("\n");
}
该程序可以实现包括5*5方阵在内的任何方阵的处理,我是通过动态数组实现的。优点:可以跨函数使用数组,程序的通用性强。
Timothy9797564
2019-11-16
知道答主
回答量:2
采纳率:0%
帮助的人:1327
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式