C语言指针变量的问题

来源:百度知道 编辑:UC知道 时间:2024/09/24 11:57:51
找出一个数组中元素的最大值和最小值
被调用函数程序如下
int max,min; /*定义全局变量*/

void max_min_array(*array,int n)
{ int *p,*array_end;
array_end=array+n;
max=min=*array;
for(p=array+1,p<array_end,p++)
if(*p>max) max=*p;
else if(*p<min) min=*p;
return;
}

我想知道,for语句是怎么实现得到最大值和最小值的。
我是这样想的,假设array[5]={2,8,3,6,9};
调用函数,8>2,那么执行第一个 if语句,array[0]=8;
然后,3<8, 那么执行第二个if语句,array[0]=3;
以此类推,根本得不到最大值和最小值。
我不知道我哪里想的不对......
楼下说的我还是不懂, 貌似答非所问

就你说的那个数组array[5]={2,8,3,6,9},先假设max=min=2,然后把数组后面的数一个一个和max,min比较;8比max大,所以max=8;再然后3不比max大,3不比min小,所以max,min都不变;如果数组后面有0的话,0不比max大,max不变,0比min小,min=0.就这样啊

//VC2005测试通过, LZ请用如下代码,注释写得很清楚了
int min, max;

//n: 为数组中元素个数
void max_min_array( int *array,int n)
{
min=max=array[0];
if ( n > 1 )
{
for ( int i=1; i<n; i++ )
{
//如果i元素小于min,则保存i元素在min中
if ( min > array[i] ) min=array[i];
//如果i元素大于max, 则保存i元素在max中
if ( max < array[i] ) max=array[i];
}
}
//输出最大值和最小值
printf( "Max=%d\tMin=%d\n", max, min);
return;

}

int main()
{

int a[] = { 8,2,3,1,6, 8, 9 };

max_min_array( a, 7);
return 0;
}

你根本就没有搞懂这个求最大的和最小的思想,举例,假设 我这里有两个数分别为最大的Max,和最小的min, 假如来了另外一个数m,你说说看,如果这个数比最小的min还要小,即m<min,你说m是不是新的最小的数呢,如果m比最大的数还要大,即m>max,你说说看,这个数m是不是新的最大的数呢??????????

解答满意吗,好好理解我上面最后两句话!