将一个5*5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素,顺序从左到右,从上到下依次从小到大存放。
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include "string.h"
#include "math.h"
#define MAX_NUM 14
void invert(int *p,int n){
int temp;
int maxi=0,maxj=0;
int mini=0,minj=0;
int *max,*min;
max=p;
min=p;
for (int i = 0; i < n; ++i) {//0 1
for (int j = 0; j < n ; ++j) {
if(*(p+5*i+j) > *max){
*max=*(p+5*i+j);
maxi=i;
maxj=j;
}
if(*(p+5*i+j) < *min && *(p+5*i+j)!=*max){
*min=*(p+5*i+j);
mini=i;
minj=j;
}
}
}
temp=*(p+12);
*(p+12)=*max;
*max=temp;
temp=*p;
*p=*min;
*min=temp;
min=p+1;
for (int i = 0; i < n; ++i) {//0 1
for (int j = 0; j < n ; ++j) {
if((*(p+5*i+j) < *min) && (*(p+5*i+j)!= p)){
*min=*(p+5*i+j);
}
}
}
temp=*min;
*min=*(p+4);
*(p+4)=temp;
for (int k = 0; k < n; ++k) {
for (int z = 0; z < n; ++z) {
printf("%3d",*(p+n*k+z));
}
printf("\n");
}
}
int main()
{
int a[5][5]={{35,34,33,32,31},{30,29,28,27,26},{25,24,23,22,21},{20,19,18,17,16},{15,14,13,12,11}};
int *p;
p=&a[0][0];
invert(p,5);
return 0;
}