xt6-10-2.cpp
上传用户:liubin
上传日期:2022-06-13
资源大小:85k
文件大小:2k
源码类别:

书籍源码

开发平台:

Visual C++

  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {void change(int *p);
  5.  int a[5][5],*p,i,j;
  6.  cout<<"input matrix:"<<endl;
  7.  for (i=0;i<5;i++)                       //输入矩阵
  8.    for (j=0;j<5;j++)
  9.      cin>>a[i][j];
  10.  p=&a[0][0];                             //使p指向0行0列元素 
  11.  change(p);                              //调用函数,实现交换
  12.  cout<<"Now,matrix:"<<endl;
  13.  for (i=0;i<5;i++)                      //输出已交换的矩阵
  14.   {for (j=0;j<5;j++)
  15.      cout<<a[i][j]<<" ";
  16.    cout<<endl;
  17.   }
  18.  return 0;
  19. }
  20. void change(int *p)                    //交换函数
  21.  {int i,j,temp;
  22.   int *pmax,*pmin;
  23.   pmax=p;
  24.   pmin=p;
  25.   for (i=0;i<5;i++)      //找最大值和最小值的地址,并赋给 pmax,pmin
  26.     for (j=i;j<5;j++)
  27.      {if (*pmax<*(p+5*i+j)) pmax=p+5*i+j;
  28.       if (*pmin>*(p+5*i+j)) pmin=p+5*i+j;
  29.      }
  30.   temp=*(p+12);              //将最大值与中心元素互换
  31.   *(p+12)=*pmax;
  32.   *pmax=temp;
  33.   temp=*p;                  //将最小值与左上角元素互换
  34.   *p=*pmin;
  35.   *pmin=temp;
  36.   pmin=p+1;            
  37.     //将a[0][1]的地址赋给pmin,从该位置开始找最小的元素
  38.   for (i=0;i<5;i++)         //找第二最小值的地址赋给 pmin 
  39.     for (j=0;j<5;j++)
  40. {if(i==0 && j==0) continue;
  41.      if  (*pmin > *(p+5*i+j)) pmin=p+5*i+j;
  42. }
  43.   temp=*pmin;              //将第二最小值与右上角元素互换 
  44.   *pmin=*(p+4);
  45.   *(p+4)=temp;
  46.   pmin=p+1;
  47.   for (i=0;i<5;i++)       //找第三最小值的地址赋给pmin 
  48.     for (j=0;j<5;j++)
  49. {if((i==0  && j==0) ||(i==0  && j==4)) continue;
  50.  if(*pmin>*(p+5*i+j)) pmin=p+5*i+j;
  51. }
  52.   temp=*pmin;            // 将第三最小值与左下角元素互换
  53.   *pmin=*(p+20);
  54.   *(p+20)=temp;
  55.   pmin=p+1;
  56.   for (i=0;i<5;i++)       // 找第四最小值的地址赋给pmin 
  57.      for (j=0;j<5;j++)
  58.  {if ((i==0  && j==0) ||(i==0  && j==4)||(i==4  && j==0)) continue;
  59.   if (*pmin>*(p+5*i+j)) pmin=p+5*i+j;
  60.  }
  61.   temp=*pmin;             //将第四最小值与右下角元素互换
  62.   *pmin=*(p+24);
  63.   *(p+24)=temp;
  64.   } 
  65.