请求来!

请求高手进来!!!
题目:输入十个数,求最大和最小的数,并把最大和最小的数删除,然后求出剩余8个数的平均值.
#include <iostream>
#include <math.h>
int   max,min=32767;
void   max_min_value(int   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;
}
void   main()
{
        int   i,a[10],sum=0;
float   average;
for(i=1;i <=10;++i)
{
printf( "Please   input   number:\n ");
scanf( "%d ",&a[i]);
        sum=sum+a[i];

}
max_min_value(a,10);
average=(sum-max-min)/8;
printf( "Please   cancel   max:%d\n ",max);
printf( "Please   cancel   min:%d\n ",min);
printf( "The   average   is   :%f\n ",average);
}
这道程序调试没有错,但结果运行不出,希望各位高手指出其中的错误.
谢谢!!!

------解决方案--------------------
#include <iostream>
#include <math.h>
//这竟然没错???一个用了.h,一个没用,这是什么风格.......

max=min=*array;//少用点这东西吧,建议

其他的肉眼没看出来,自己跟踪下吧,逻辑错一般自己找比较好
------解决方案--------------------
#include <iostream>
#include <math.h>
int max,min=32767;
void max_min_value(int array[],int n)
{
int *p,*array_end;
array_end=array+n;
max=min=*array;
for(p=array;p <array_end;p++)---------------------------1
{
if (*p> max)
max=*p;
else if (*p <min)
min=*p;

}
//return;-------------------------------------------2
}
int main()
{
int i,a[10],sum=0;
float average;
printf( "Please input number:\n ");-------------------4
for(i=0;i <10;++i)-------------------------------3
{

scanf( "%d ",&a[i]);
sum=sum+a[i];

}
max_min_value(a,10);
average=(sum-max-min)/8;
printf( "Please cancel max:%d\n ",max);
printf( "Please cancel min:%d\n ",min);
printf( "The average is :%f\n ",average);

}
------------------------------------------------
改了这么几个地方,gcc下运行成功