写一个函数实现:将一个5*5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大存放)

#include<stdio.h>

void change(int *p){

int i,j,temp;

int *pmax,*pmin;

// 初始化最大值和最小值的指针

pmax=p;

pmin=p;

// 遍历矩阵,寻找最大值和最小值

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

for(j=i;j<5;j++)

{

if(*pmax<*(p+5*i+j))pmax=p+5*i+j; // 更新最大值的指针

if(*pmin>*(p+5*i+j))pmin=p+5*i+j; // 更新最小值的指针

}

// 交换最大值和第12个元素的位置

temp=*(p+12);

*(p+12)=*pmax;

*pmax=temp;

// 交换最小值和第一个元素的位置

temp=*p;

*p=*pmin;

*pmin=temp;

// 重新设置最小值指针

pmin=p+1;

// 在剩余元素中寻找新的最小值并交换

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

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

if(((p+5*i+j)!=p)&&(*pmin>*(p+5*i+j)))pmin=p+5*i+j;

// 交换新的最小值和第四个元素的位置

temp=*pmin;

*pmin=*(p+4);

*(p+4)=temp;

// 重新设置最小值指针

pmin=p+1;

// 在剩余元素中寻找新的最小值并交换

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

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

if(((p+5*i+j)!=(p+4)&&(p+5*i+j)!=p)&&(*pmin>*(p+5*i+j)))

pmin=p+5*i+j;

// 交换新的最小值和第20个元素的位置

temp=*pmin;

*pmin=*(p+20);

*(p+20)=temp;

// 重新设置最小值指针

pmin=p+1;

// 在剩余元素中寻找最后的最小值并交换

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

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

if(((p+5*i+j)!=(p+20)&&(p+5*i+j)!=(p+4)&&(p+5*i+j)!=p)&&(*pmin>*(p+5*i+j)))

pmin=p+5*i+j;

// 交换最后的最小值和第24个元素的位置

temp=*pmin;

*pmin=*(p+24);

*(p+24)=temp;

}

/**

* 主函数,用于输入矩阵并调用change函数进行排序,然后输出排序后的矩阵。

*/

int main(){

int a55,*p,i,j;

printf("请输入矩形:");

// 输入矩阵元素

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

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

scanf("%d",&aij);

// 获取矩阵元素的一维数组形式的指针

p=&a00;

// 调用change函数进行排序

change(p);

printf("排序后:");

// 输出排序后的矩阵

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

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

printf("%d ",aij);

printf("\n");

}

return 0;

}

相关推荐
To_OC2 小时前
LC 200 岛屿数量:经典 DFS 入门题,我第一次写居然连方向都搞错了
javascript·算法·leetcode
To_OC19 小时前
LC 128 最长连续序列:别上来就排序,O (n) 解法才是这题的灵魂
javascript·算法·leetcode
刘马想放假1 天前
Modbus 全栈技术解析:TCP、RTU、ASCII、RTU over TCP
数据结构·网络协议
05Kevin1 天前
lk每日冒险题--数据结构6.27
算法
To_OC2 天前
从一次栈溢出报错说起,我把递归彻底扒明白了
javascript·算法·程序员
千纸鹤安安2 天前
千问Qwen-AgentWorld来了:一个语言模型搞定七大Agent场景,GPT-5.4都输了
算法
七牛开发者2 天前
MCP 到底是什么?为什么 Agent 都想接上它
算法·aigc·agent