将一个5*5的矩阵中最大的元素放在中心,四个角分别放四个最小的元素(顺序从左到右,从上到下顺序依次从小到大存放),写一个函数实现之。用main函数调用。 // Max_matrix.cpp : 定义控制台应用程序的入口点。// #include "stdafx.h"#include <stdlib.h>#include "stdio.h"#include<ctime>#define N 5 void Max_matrix(int (*p)[5]);void swap(int *p1,int *p2); int _tmain(int argc, _TCHAR* argv[]){ int Matrix[N][N]; int i,j; printf("产生随机矩阵 a[N][N]:/n"); srand((unsigned)time(0));//用时间作为种子 for(int i=0;i<N;i++){ //产生随机数给矩阵赋值 for(int j=0;j<N;j++){ Matrix[i][j]=rand()0; } } for(i=0;i<N;i++){ //输出矩阵 for(j=0;j<N;j++) printf("M",Matrix[i][j]); printf("/n"); } printf("------------------------------分割线-----------------------/n"); printf("输出交换后的矩阵:/n"); Max_matrix(Matrix); printf("/nPress any key to continue...."); getchar(); return 0;} void Max_matrix(int (*p)[5]){ int i,j,k,m=0; while(m<=3) { //将最小4值放在前4位 for(i=0;i<5;i++){ for(j=0;j<5;j++){ if((i==0&&j>=m)||i>0){ if(*(*p+m)>*(*(p+i)+j)){ k=*(*p+m); *(*p+m)=*(*(p+i)+j); *(*(p+i)+j)=k; } } } } m++; } for(i=0;i<5;i++) //将最大值放中心 for(j=0;j<5;j++){ if(*(*(p+2)+2)<*(*(p+i)+j)){ k=*(*(p+2)+2); *(*(p+2)+2)=*(*(p+i)+j); *(*(p+i)+j)=k; } } swap((*p+1),(*p+4)); //将最小4值分放4个角 swap((*p+2),(*(p+4))); swap((*p+3),(*(p+4)+4)); for(i=0;i<5;i++){ for(j=0;j<5;j++) printf("M ",*(*(p+i)+j)); printf("/n"); }} void swap(int *p1,int *p2) //交换函数 { int temp; temp=*p1; *p1=*p2; *p2=temp; }