/********************************************************
** Highlight software by yzfy(雨中飞燕) http:// *
*********************************************************/
void FinMazMin(int a[],int len)
{
    assert(a!=NULL && len>0);
    int *p=a+len%2,min,max;
    if (p!=a) min=max=a[0];
    else min=INT_MAX,max=INT_MIN;
    for (a+=len;p < a;p+=2)
    {
        int t1=p[0]>p[1],t2=!t1;
        if (p[t1]<min)min=p[t1];
        if (p[t2]>max)max=p[t2];
    }
    printf("%d %d\n",min,max);
}
如果单纯说写法的话……
其实还写了一种不使用附加变量的方法。但是只对len>=3的情况有效,懒得分情况讨论了(况且也不好看),就这样吧,你那个a可写的条件无视了算了………………
[[it] 本帖最后由 StarWing83 于 2008-5-17 07:49 编辑 [/it]]