为什么C语言报错写入位置时发生访问冲突?

调试的时候出现访问冲突?请问怎么解决

#include<stdio.h>
#include<stdlib.h>
#define N 5
struct student
{
char num[6];
char name[8];
float score[3];
float aver;
}stu[N];
int main()
{
int i, j, maxi;
float sum, max, average;
for (i = 0; i < N; i++)
{
printf("input scores of student:%d\n", i + 1);
printf("NO.:");
scanf_s("%s", stu[i].num);
printf("name:");
scanf_s("%s", stu[i].name);
for(j=0;j<3;j++)
{
printf("score%d:", j + 1);
scanf_s("%f", &stu[i].score[j]);
}
}
average = 0;
max = 0;
maxi = 0;
for(i=0;i<N;i++)
{
sum = 0;
for (j = 0; j < 3; j++)
sum += stu[i].score[j];
stu[i].aver = sum / 3.0;
average += stu[i].aver;
if(sum>max)
{
max = sum;
maxi = i;
}
}
average /= N;
printf("NO. name score1 score2 score3 average\n");
for(i=0;i<N;i++)
{
printf("%5s%10s", stu[i].num,stu[i].name);
printf("%8.2f\n", stu[i].aver);
}
printf("average=%5.2f\n", average);
printf("The highest scores are:%6.2f,%6.2f,%6.2f,average:%5.2f.\n",
stu[maxi].score[0], stu[maxi].score[1], stu[maxi].score[2],stu[maxi].aver);
system("pause");
return 0;
}