#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<Windows.h>
#define NUM_SIZE 10
int main()
{
int arrayInt[NUM_SIZE];
int int_Min=0,int_Max=0;
int array_0=0,array_size=0;
time_t t;
int *intPtrMax=arrayInt;
int *intPtrMin=arrayInt;
srand((unsigned)time(&t));
int i=0;
// for(i=0;i<NUM_SIZE;i++)
//{
// scanf("%d",&arrayInt[i]);
// getchar();
// }
int j=0;
for(j=0;j<10;j++)
{
for(i=0;i<NUM_SIZE-1;i++)
{
arrayInt[i]=rand()%100;
}
printf("/n原始数据:");
for(i=0;i<NUM_SIZE;i++)
{
printf(" %d ",arrayInt[i]);
}
printf("/n");
for(i=1;i<NUM_SIZE;i++)
{
if(arrayInt[i]>*intPtrMax)intPtrMax=arrayInt+i;
else
{
if(arrayInt[i]<*intPtrMin)intPtrMin=arrayInt+i;
}
}
//交换数据,、有必要先把两个最值保存起来,否则出现差错,如可以对数组a10:1进行分析
//将数组第一个和最后一个、最小值最大值预存起来很有必要,虽然耗费空间,但能保证准确性和可读性!
//此intMinPtr.intMaxPtr指针只表示地址,由于最大值可能在数组第一个位置上,最小值可能在数组最后一个位置上,因而在
//进行交换的时候,数组第一个位置的值和最小值交换了,但此时intPtrMax仍然指向它,即指向了最小值,再进行最大值和最后一个位置的数组交换时,
//肯定会出错的
int_Min=*intPtrMin;
int_Max=*intPtrMax;
printf("Min:%d Max:%d",int_Min,int_Max);
array_0=arrayInt[0];
array_size=arrayInt[NUM_SIZE-1];
//int temp=0;
*intPtrMin=array_0;
arrayInt[0]=int_Min;
*intPtrMax=array_size;
arrayInt[NUM_SIZE-1]=int_Max;
printf("/n结果数据:");
for(i=0;i<NUM_SIZE;i++)
{
printf(" %d ",arrayInt[i]);
}
printf("/n");
Sleep(1000);
printf("/n");
}
system("pause");
}