最大——最小数字交换矩阵

    技术2022-05-20  46

     

    将一个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; }

    最新回复(0)