xt6-10.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  (((p+5*i+j)!=p) && (*pmin > *(p+5*i+j))) pmin=p+5*i+j;
  41.   temp=*pmin;              //将第二最小值与右上角元素互换 
  42.   *pmin=*(p+4);
  43.   *(p+4)=temp;
  44.   pmin=p+1;
  45.   for (i=0;i<5;i++)       //找第三最小值的地址赋给pmin 
  46.     for (j=0;j<5;j++)
  47.       if(((p+5*i+j)!=(p+4)) && ((p+5*i+j)!=p) &&(*pmin>*(p+5*i+j))) pmin=p+5*i+j;
  48.   temp=*pmin;            // 将第三最小值与左下角元素互换
  49.   *pmin=*(p+20);
  50.   *(p+20)=temp;
  51.   pmin=p+1;
  52.   for (i=0;i<5;i++)       // 找第四最小值的地址赋给pmin */
  53.      for (j=0;j<5;j++)
  54.        if (((p+5*i+j)!=p) &&((p+5*i+j)!=(p+4)) && ((p+5*i+j)!=(p+20)) && (*pmin>*(p+5*i+j)))
  55.           pmin=p+5*i+j;
  56.   temp=*pmin;             //将第四最小值与右下角元素互换
  57.   *pmin=*(p+24);
  58.   *(p+24)=temp;
  59.   } 
  60.