一维数组求学生最大成绩以及最小成绩,该如何解决

一维数组求学生最大成绩以及最小成绩
程序如下,我输入1 2 3 4 5  结果竟然是5 4 WTF 凭什么啊 怎么不是一个最大值一个最小值 51呢?求解
#define n 5
void main()
{
float a[n],max,min;
int i;
for(i=0;i<n;i++)
scanf("%f",&a[i]);
max=min=a[0];
        for(i=0;i<n;i++)
{
if(max>a[i+1])
max=a[i];
if(min<a[i+1])
 min=a[i];
}
printf("%f,%f\n",max,min);
}
------解决思路----------------------
#define n 5
void main()
{
float a[n],max,min;
int i;
for(i=0;i<n;i++)
scanf("%f",&a[i]);
max=min=a[0];
        for(i=1;i<n;i++)
{
if(max<a[i])
max=a[i];
if(min>a[i])
 min=a[i];
}
printf("%f,%f\n",max,min);
}
------解决思路----------------------
LS正解
不知道楼主为什么会想要a[i+1],
这样当i=4的时候还会导致数组取索引越界

只要比较当前索引的值和最大最小值,来判定是否用当前索引的值替换最大最小值就可以了