将一个5X5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(按从左到右,从上到下顺序依次从小到大存放),写一函数实现之,用主函数调用。

我没用手动输入。太累了。测试一次输入25个数。人会疯的

 

  1. #include<iostream>  
  2. #include<string>  
  3. #include<iomanip>  
  4. using namespace std;  
  5.  
  6. int main()  
  7. {  
  8.  void swap(int *p);  
  9.  int a[5][5];  
  10.  int j,k,i;  
  11.  int *p;  
  12.  for(i=1,j=0;j<5;j++)  
  13.  {  
  14.   for(k=0;k<5;i++,k++)  
  15.    a[j][k]=i;  
  16.  }  
  17.  
  18.  
  19.  p=&a[0][0];  
  20.  swap(p);  
  21.    
  22.    
  23.  for(j=0;j<5;j++)  
  24.  {  
  25.   for(k=0;k<5;k++)  
  26.  
  27.    cout<<setw(3)<<a[j][k]<<" ";  
  28.   cout<<endl<<endl;  
  29.  }  
  30.  
  31.    
  32.  
  33. }  
  34.  
  35. void swap(int *p)  
  36. {  
  37.  int j,k,i,temp;  
  38.  int *min,*max;  
  39.  
  40.    
  41.  max=p;  
  42.  min=p;  
  43.    
  44.  
  45. // ————————————————————————————  
  46.  
  47.  
  48.  for(j=0;j<5;j++)  
  49.  {  
  50.   for(k=0;k<5;k++)  
  51.   { if(*max<*(p+5*j+k))  
  52.       
  53.     max=(p+5*j+k);  
  54.  
  55.    if(*min>*(p+5*j+k))  
  56.  
  57.     min=p+5*j+k;  
  58.   }  
  59.  }              
  60.  
  61.  
  62.  temp=*(p+12);//——————————————————  
  63.  *(p+12)=*max;//————找出最大数与方阵中间交换———  
  64.  *max=temp;//——————————————  
  65.  
  66.  temp=*(p+0);//——————————————————  
  67.  *(p+0)=*min;//———找出最小数与方阵左上角交换——  
  68.  *min=temp;//———————  
  69.  
  70.     
  71. //——————————————————————————————  
  72.  
  73.  
  74. min=(p+1);//假设min在0 1 (0 0已经存入最小数)  
  75. ;  
  76. for(j=0;j<5;j++)  
  77.  {  
  78.   for(k=0;k<5;k++)  
  79.   { if(j==0&&k==0)continue ;//不执行  
  80.      
  81.    if(*min>*(p+5*j+k))  
  82.  
  83.     min=p+5*j+k;  
  84.   }   
  85.      
  86.  }     
  87.    
  88.  temp=*(p+4);//——————————————————  
  89.  *(p+4)=*min;//———找出次小数与方阵右上角交换——  
  90.  *min=temp;//——————————————  
  91. //——————————————————————————————    
  92.  
  93.  
  94.  min=(p+1);  
  95.  
  96. for(j=0;j<5;j++)  
  97.  {  
  98.   for(k=0;k<5;k++)  
  99.   { if((j==0&&k==0)||(j==0&&k==4)) continue ;//不执行  
  100.      
  101.    if(*min>*(p+5*j+k))  
  102.      
  103.     min=p+5*j+k;  
  104.       
  105.   }  
  106.  }     
  107.    
  108.  temp=*min;//——————————————————  
  109.  *min=*(p+20);//———找出次次小数与方阵左下角交换——  
  110.  *(p+20)=temp;//——————————————  
  111. //——————————————————————————————    
  112.  
  113.  
  114.  min=p+1;//假设min在0 1 (0 0 /0 4 /4 0已经存入最小数/次小数/次次小数)  
  115.  
  116. for(j=0;j<5;j++)  
  117.  {  
  118.   for(k=0;k<5;k++)  
  119.   {  
  120.       if((j==0&&k==0)||(j==0&&k==4)||(j==4&&k==0))continue  ;//不执行  
  121.      
  122.    if(*min>*(p+5*j+k))  
  123.       
  124.     min=(p+5*j+k);  
  125.      
  126.   }  
  127.  }     
  128.    
  129.  temp=*(p+24);//——————————————————  
  130.  *(p+24)=*min;//———找出次次次小数与方阵右下角交换——  
  131.  *min=temp;//——————————————  
  132. //----------------------------------------------------------------  
  133.    
  134.    
  135.  
  136. }  
  137.