程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 將一個5*5的矩陣中最大的元素放在中心,4個角分別放4個最小的元素

將一個5*5的矩陣中最大的元素放在中心,4個角分別放4個最小的元素

編輯:C++入門知識

/*   * 程序的版權和版本聲明部分:   * Copyright (c) 2012, 煙台大學計算機學院   * All rights reserved.   * 文件名稱:將一個5*5的矩陣中最大的元素放在中心,4個角分別放4個最小的元素.cpp   * 作    者:毛通   * 完成日期:2013 年 1月16 日   * 版 本 號:v1.0   * 對任務及求解方法的描述部分:  * 輸入描述:輸入25個數 * 問題描述: * 程序輸出:“將一個5*5的矩陣中最大的元素放在中心,4個角分別放4個最小的元素”   */       [cpp]   /*  將一個5*5的矩陣中最大的元素放在中心,4個角分別放4個最小的元素(按從左到右、從上到下順序依次從小到大存放),  寫一個函數實現  */      # include <iostream>      # include <iomanip>   using namespace std;      int main()      {       void change (int *p);          int a[5][5],*p,i,j;          cout<<"input matrix" << endl;          for (i=0;i<5;i++)           for (j=0;j<5;j++)               cin>>a[i][j];          p=&a[0][0];          cout << "您輸入的矩陣是:" <<endl;          for (i=0;i<5;i++)       {           for (j=0;j<5;j++)               cout << setw(6) <<a[i][j];           cout << endl;       }          change (p);          cout << "now matrix" << endl;          for (i=0;i<5;i++)       {           for (j=0;j<5;j++)               cout <<setw(6)<< a[i][j];           cout << endl;       }          return 0;      }      void change (int *p)   {       int i,j,temp;       int *pmax,*pmin;          pmax=p;       pmin=p;          for (i=0;i<5;i++) //找最大和最小數的地址,賦給pmax和pmin           for (j=0;j<5;j++)           {               if (*pmax < *(p+5*i+j)) pmax=p+5*i+j; //*(p+5*i+j)當*p=a[0][0]時可以實現 數組的遍歷               if (*pmin > *(p+5*i+j)) pmin=p+5*i+j;           }//最大最小值的地址找到了              temp =*(p+12); //將最大值與中心元素互換           *(p+12)=*pmax;           *pmax=temp;              temp=*p;//將最小元素與左上角元素互換           *p=*pmin;           *pmin=temp;              pmin=p+1; //將a[0][1]的地址賦給pmin,從該位置開始找最小的元素              for (i=0;i<5;i++)               for (j=0;j<5;j++)                   if (((p+5*i+j)!=p)&&(*pmin>*(p+5*i+j))) //兩個條件:元素小於*pmin;元素不是第一個元素                       pmin =p+5*i+j; //將第二最小值的地址賦給pmin              temp =*pmin;//將第二最小值與右上角元素互換           *pmin=*(p+4);           *(p+4)=temp;              pmin=p+1; //將a[0][1]的地址賦給pmin,從該位置開始找最小的元素              for (i=0;i<5;i++)               for (j=0;j<5;j++)                   if (((p+5*i+j)!=p)&&((p+5*i+j)!=(p+4))&&(*pmin>*(p+5*i+j))) //兩個條件:元素小於*pmin;元素不是第一個元素                       pmin =p+5*i+j; //將第三最小值的地址賦給pmin              temp =*pmin;//將第三最小值與右上角元素互換           *pmin=*(p+20);           *(p+20)=temp;              pmin=p+1; //將a[0][1]的地址賦給pmin,從該位置開始找最小的元素              for (i=0;i<5;i++)               for (j=0;j<5;j++)                   if (((p+5*i+j)!=p)&&((p+5*i+j)!=(p+4))&&((p+5*i+j)!=(p+20))&&(*pmin>*(p+5*i+j))) //兩個條件:元素小於*pmin;元素不是第一個元素                       pmin=p+5*i+j; //將第四最小值的地址賦給pmin              temp =*pmin;//將第四最小值與右上角元素互換           *pmin=*(p+24);           *(p+24)=temp;         }     /* 運行結果:     */

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved