指针练习5*5矩阵最大最小值
将最大值放在5*5矩阵中央
将左上右上左下右下分别放第1,2,3,4的最小值
#include<stdio.h>
#include<math.h>
#include<string.h>
#define N 5
void Move(int (*arr)[N]);
int * Max(int (*arr)[N]);
void Min4(int (*arr)[N]);
void Swap(int *x,int *y);
int main(){
int arr[5][5]={{23,33,44,55,11},{12,14,15,16,17},{18,33,77,88,99},{100,111,222,57,85},{43,24,30,40,50}};
printf("before change:\n");
for(int i=0;i<5;i++){
for(int j=0;j<5;j++)
printf("%d ",arr[i][j]);
printf("\n");
}
Move(arr);
printf("after change:\n");
for(int i=0;i<5;i++){
for(int j=0;j<5;j++)
printf("%d ",arr[i][j]);
printf("\n");
}
}
void Move(int (*arr)[N]){
int* p=Max(arr);
int temp=arr[2][2];arr[2][2]=*p;*p=temp;
Min4(arr);
}
int *Max(int (*arr)[N]){
int *max=arr[0];
for(int i=0;i<5;i++)
for(int j=0;j<5;j++)
if(*max<arr[i][j])
max=&arr[i][j];
return max;
}
void Min4(int (*arr)[N]){
int *p[4];int i,j;
p[0]=&arr[0][0];
p[1]=&arr[0][4];
p[2]=&arr[4][0];
p[3]=&arr[4][4];
//first
for(i=0;i<5;i++){
for(j=0;j<5;j++){
if(*p[0]>arr[i][j]){
p[0]=&arr[i][j];
}
}
}
Swap(p[0],&arr[0][0]);
//second
for(i=0;i<5;i++){
for(j=0;j<5;j++){
if(*p[1]>arr[i][j]&&(&arr[i][j])!=&arr[0][0]){
p[1]=&arr[i][j];
}
}
}
Swap(p[1],&arr[0][4]);
//third
for(i=0;i<5;i++){
for(j=0;j<5;j++){
if(*p[2]>arr[i][j]&&(&arr[i][j])!=&arr[0][0]&&(&arr[i][j]!=&arr[0][4])){
p[2]=&arr[i][j];
}
}
}
Swap(p[2],&arr[4][0]);
//fourth
for(i=0;i<5;i++){
for(j=0;j<5;j++){
if(*p[3]>arr[i][j]&&(&arr[i][j])!=&arr[0][0]&&(&arr[i][j])!=&arr[0][4]&&(&arr[i][j])!=&arr[4][0]){
p[3]=&arr[i][j];
}
}
}
Swap(p[3],&arr[4][4]);
}
void Swap(int *x,int *y){
int temp=*x;
*x=*y;
*y=temp;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通