首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

将一个五*5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素

2013-01-23 
将一个5*5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素/** 程序的版权和版本声明部分:* Copyrigh

将一个5*5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素

/* 
* 程序的版权和版本声明部分: 
* Copyright (c) 2012, 烟台大学计算机学院 
* All rights reserved. 
* 文件名称:将一个5*5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素.cpp 
* 作    者:毛通 
* 完成日期:2013 年 1月16 日 
* 版 本 号:v1.0 
* 对任务及求解方法的描述部分:
* 输入描述:输入25个数
* 问题描述:
* 程序输出:“将一个5*5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素” 
*/

 

/*将一个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和pminfor (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; //将第二最小值的地址赋给pmintemp =*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; //将第三最小值的地址赋给pmintemp =*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; //将第四最小值的地址赋给pmintemp =*pmin;//将第四最小值与右上角元素互换*pmin=*(p+24);*(p+24)=temp;}


/*
运行结果:


将一个五*5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素
*/

1楼youshenxuzuo昨天 14:55
这个程序憋死我了!! 写完之后检查了半天,后来发现是for循环的cout错误!!重写cout之后成功了,但是原来的怎么错的 真心不知道
Re: sxhelijian昨天 15:37
回复youshenxuzuon外出两天刚回来。期间手机上网能发现你已经投入学习,能将假期这样安排,真好。

热点排行