将一个5×5的数组中的最大值放到数组的中心位置

分析:遍历数组,找到最大的元素,然后将该元素与中心位置的元素交换位置

#include<iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main( void)
{
void changeArrayData(int *arrayAddress1, int *arrayAddress2);//声明交换元素的函数·
int array[5][5] = {0};
int i = 0, j = 0;
int *arrayMax = 0;
/*给数组赋值*/
srand((unsigned long)time(0));//初始化rand函数
while(i <25){
*(*array + i++) = rand()%100;//100以内的随机数
}
i = 0;
arrayMax = array[0];
while(++i < 25)
{
if(*(*array + i) > *arrayMax)//找最大值
arrayMax = *array + i;
}
if(arrayMax != array[2] + 2)
{
changeArrayData(arrayMax, array[2] + 2);//交换最大值
}
/*输出数组*/
for(i = 0; i < 5; i++)
{
for(j = 0; j < 5; j++)
cout<<*(*(array+i)+j)<<"\t";
cout<<endl;
}
cout<<endl;
return 0;
}
/******************************************************
函数功能: 交换两个整形地址单元的值
******************************************************/
void changeArrayData(int *arrayAddress1, int *arrayAddress2)
{
int temp = 0;
temp = *arrayAddress1;
*arrayAddress1 = *arrayAddress2;
*arrayAddress2 = temp;
}

运行界面:

代码分析:

使用rand函数对数组赋初值,然后通过“打擂台”的方法,遍历数组的所有元素,找到最大的元素。

然后把arrayMax获取最大元素的地址,将arrayMax和中间的元素(array[2][2])的地址传递给函数changeArrayData,进行位置的变换。

将一个5×5的数组中的最大值放到数组的中心位置,将最小值放到数组的第一个元素的位置。

#include<iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main( void)
{
void changeArrayData(int *arrayAddress1, int *arrayAddress2);
int array[5][5] = {0};
int i = 0, j = 0;
int *arrayMax =*(array +2)+2, *arrayMin=*(array);
/*给数组赋值*/
srand((unsigned long)time(0));
while(i <25){
*(*array + i++) = rand()%100;//100以内的随机数
}
i = 0;
while(++i < 25)
{
if(*(*array + i) > *arrayMax)//找最大值
arrayMax = *array + i;
if(*(*array + i) < *arrayMin)//找最小值
arrayMin = *array + i;
}
if(arrayMax != array[2] + 2)
{
changeArrayData(arrayMax, array[2] + 2);//交换最大值
}
if(arrayMin != array[0] )
{
changeArrayData(arrayMin, array[0]);//交换最小值
}
/*输出数组*/
for(i = 0; i < 5; i++)
{
for(j = 0; j < 5; j++)
cout<<*(*(array+i)+j)<<"\t";
cout<<endl;
}
cout<<endl;
return 0;
}
/******************************************************
函数功能: 交换两个整形地址单元的值
******************************************************/
void changeArrayData(int *arrayAddress1, int *arrayAddress2)
{
int temp = 0;
temp = *arrayAddress1;
*arrayAddress1 = *arrayAddress2;
*arrayAddress2 = temp;
}

运行界面:




代码分析:
arrayMax用来获取数组中最大的元素的地址,然后通过changeArrayData函数和a[2][2]交换位置;
arrayMin用来获取数组中最小的元素的地址,然后通过changeArrayData函数和a[0][0]交换位置。


将一个5×5的数组中的最大值放到数组的中心位置,四个角分别放4个最小的元素。


#include<iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main( void)
{
void changeArrayData(int *arrayAddress1, int *arrayAddress2);
int Array[5][5] = {0};
int i = 0, j = 0;
int *arrayMax =*(Array +2)+2, *arrayMin[4]={Array[0],Array[0]+4,Array[4],Array[4]+4};
/*给数组赋值*/
srand((unsigned long)time(0));
while(i <25){
*(*Array + i++) = rand()%100;//100以内的随机数
}
i = 0;
while(++i < 25)
{
if(*(*Array + i) > *arrayMax)//找最大值
arrayMax = *Array + i;
if(*(*Array + i) < *arrayMin[0])//找最小值
arrayMin[0] = *Array + i;
}
if(arrayMax != Array[2] + 2)
{
changeArrayData(arrayMax, Array[2] + 2);//交换最大值
arrayMax=Array[2]+2;
}
if(arrayMin[0] != Array[0] )
{
changeArrayData(arrayMin[0], Array[0]);//交换最小值
arrayMin[0]=Array[0];
}
i=1;
while(i++<25){
for(j=1;j<4;j++){
if(*(*Array + i)>*arrayMin[j-1]&&*(*Array + i)<*arrayMin[j])
changeArrayData(*Array+i,arrayMin[j]);//如果数组中的元素值,大于arrayMin[j-1],小于arrayMin[j],就将该元素与arrayMin指向的元素交换位置
}
} /*输出数组*/
for(i = 0; i < 5; i++)
{
for(j = 0; j < 5; j++)
cout<<*(*(Array+i)+j)<<"\t";
cout<<endl;
}
cout<<endl;
return 0;
}
/******************************************************
函数功能: 交换两个整形地址单元的值
******************************************************/
void changeArrayData(int *arrayAddress1, int *arrayAddress2)
{
int temp = 0;
temp = *arrayAddress1;
*arrayAddress1 = *arrayAddress2;
*arrayAddress2 = temp;
}

运行界面:




代码分析:

将最大值放到中间的思路不变,然后将四个最小值的地址放到四个指针数组中。

通过遍历获取最小值的地址,并放置到arrayMin[0]中。

然后,再次遍历数组中的所有元素,和arrayMin数组中的元素相比较:

          i=1;
while(i++<25){
for(j=1;j<4;j++){
if(*(*Array + i)>*arrayMin[j-1]&&*(*Array + i)<*arrayMin[j])
changeArrayData(*Array+i,arrayMin[j]);//如果数组中的元素值,大于arrayMin[j-1],小于arrayMin[j],就将该元素与arrayMin指向的元素交换位置
}
}

变量数组中的元素,分别和arrayMin数组中的元素相比较,如果数组中的元素值,大于arrayMin[j-1],小于arrayMin[j],就将该元素与arrayMin指向的元素交换位置。

然后就可以实现最小的四个元素分别在四个角上。

数组中的最大值以及最小值的位置变换的问题(C++)的更多相关文章

  1. 如何使用Math对象快速计算数组中的最大值或最小值

    Math 对象下包含 min() 和 max() 方法 用于确定一组数值中的最大值和最小值.这两个方法都可以接收任意多个数值参数. var max = Math.max(1,2,3,4,5,6); c ...

  2. C#获取一个数组中的最大值、最小值、平均值

    C#获取一个数组中的最大值.最小值.平均值 1.给出一个数组 ,,,,,-,,,,}; 2.数组Array自带方法 本身是直接可以调用Min(),Max(),Average()方法来求出 最小值.最大 ...

  3. Javascript获取数组中的最大值和最小值的方法汇总

    比较数组中数值的大小是比较常见的操作,下面同本文给大家分享四种放哪广发获取数组中最大值和最小值,对此感兴趣的朋友一起学习吧   比较数组中数值的大小是比较常见的操作,比较大小的方法有多种,比如可以使用 ...

  4. Java求一个数组中的最大值和最小值

    原创作品,转载请注明出处:https://www.cnblogs.com/sunshine5683/p/9927186.html 今天在工作中遇到对一个已知的一维数组取出其最大值和最小值,分别用于参与 ...

  5. PHP获取以为数组中的最大值和最小值

    1.PHP获取一维数组中的最大值 <?php $a=array('1','3','55','99'); $pos = array_search(max($a), $a); echo $a[$po ...

  6. 求一个number数组中的最大值和最小值的差

    <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content ...

  7. js 取得数组中的最大值和最小值(含多维数组)

    转自:http://www.dewen.org/q/433 方法一: var a=[1,2,3,5]; alert(Math.max.apply(null, a));//最大值 alert(Math. ...

  8. 2.10 用最少次数寻找数组中的最大值和最小值[find min max of array]

    [本文链接] http://www.cnblogs.com/hellogiser/p/find-min-max-of-array.html [题目] 对于一个由N个整数组成的数组,需要比较多少次才能把 ...

  9. 整理:Javascript获取数组中的最大值和最小值的方法汇总

    方法一: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 //最小值 Array.prototype.min = function ...

随机推荐

  1. 16-THREE.JS 半球光

    <!DOCTYPE html> <html> <head> <title></title> <script src="htt ...

  2. nyoj-1092-数字分隔(二)

    java大法好啊 思路:单独拿出整数部分分隔 题目链接 import java.math.BigDecimal; import java.util.Scanner; public class Main ...

  3. 高可用-软件heartbeat的入门介绍

    注:参考互联网整理. 一.简介Linux-HA的全称是High-Availability Linux,它是一个开源项目,这个开源项目的目标是:通过社区开发者的共同努力,提供一个增强linux可靠性(r ...

  4. nodejs读取excel内容批量替换并生成新的html和新excel对照文件

    因为广告投放需要做一批对外投放下载页面,由于没有专门负责填充页面的编辑同学做,只能前端来做了, 拿到excel看了一下,需要生成200多个文件,一下子懵逼了. 这要是来回复制粘贴太low了 正好最新用 ...

  5. CodeForces - 150C :Smart Cheater (线段树,求最大连续区间)

    I guess there's not much point in reminding you that Nvodsk winters aren't exactly hot. That increas ...

  6. jq 侧边栏

    HTML 侧边栏HTML代码: <div class="sidebar" id="sucaihuo">     <div class=&quo ...

  7. canvas图形组合

    代码: 1 /** 2 * Created by Administrator on 2016/1/27. 3 */ 4 function draw (id){ 5 var canvas = docum ...

  8. 关于64位操作系统使用C#访问注册表失败的问题

    通过C#的注册表类 Registry.GetValue 进行访问时,其返回值一直为空.然后认真检查检查再检查了注册表路径,发现路径没有一点问题,不说废话,上代码: if (Registry.GetVa ...

  9. Install boot2docker defaule username and password

    username passowrd method docker tcuser ssh root   command sudo -i

  10. 如何配置nagios监控SUN(富士通)MX000系列服务器的XSCF

    配置环境说明 192.168.3.80-XSCF地址 192.168.2.80-solaris操作系统IP地址 (nagios客户端) 192.168.2.120-nagios服务器端 check_x ...