C++访问位置冲突,一直问找到是什么问题

问题遇到的现象和发生背景

c++
学生年级成绩管理
调试一直显示访问冲突

运行结果及报错内容

img

我的解答思路和尝试过的方法
我想要达到的结果
#include<iostream>
#include<string>
#include<ctime>
#include<cstdlib>
#define student_number 45
#define class_number 4
#define subject_number 5
using namespace std;
//定义关于学生信息的结构体
 struct student
{ string name;
  string number;
  int score[subject_number];
  float score_average;
  student *next;
};
 
//随机数生成函数
int the_rand_create(void)
{
    srand((unsigned)time(NULL));
    return rand()%(101);};

//平均成绩计算函数
double average(int score[],int n)
{int i;
double sum=0;
double ave;
for(i=0;i<n;i++)
    sum=sum+score[i];
ave=(sum*1.0)/n;
return ave;};

//冒泡法排序的函数
void bubble(student *p)
{int i,j;
student t;
for(j=44;j>0;j--)
{for(i=0;i<j;i++)
if((*(p+i)).score_average<(*(p+1+i)).score_average)
{t=(*(p+1+i));
(*(p+1+i))=(*(p+i));
(*(p+i))=t;}}};

//选择法排序函数
void choice(student *p)
{int i,j;
student t;
for(j=0;j<44;j++)
    for(i=j;i<45;i++)
    {if((*(p+j)).score_average<(*(p+i)).score_average)
    { t=(*(p+j));
      *(p+j)=*(p+i);
      *(p+i)=t;}}};

//菜单函数
void menu(void)
{cout<<"输入1,查看学号和成绩"<<endl;
cout<<"输入2,查看平均成绩"<<endl;
cout<<"输入3,查看平均成绩的班内排名(冒泡法排序)"<<endl;
cout<<"输入4,查看平均成绩的班内排名(选择法排序)"<<endl;
cout<<"输入5,查看平均成绩的校内排名"<<endl;
cout<<"输入6,退出;"<<endl;
};
int main()
{int i,j,choose,m;
struct student class1[student_number];
 struct student class2[student_number];
 struct student class3[student_number];
 struct student class4[student_number];
 struct student t[(student_number*4)];

//班级一
//对学生学号进行赋值
for(i=0;i<student_number;i++)
    {class1[i].number=0100+i;
//对学生成绩随机生成
for(j=0;j<subject_number;j++)
class1[i].score[j]=int(the_rand_create);
//平均成绩计算
class1[i].score_average=average( class1[i].score,subject_number);
}
//班级二
for(i=0;i<student_number;i++)
    {class2[i].number=20210100+i;
     for(j=0;j<subject_number;j++)
     class2[i].score[j]=int(the_rand_create);
class2[i].score_average=average( class2[i].score,subject_number);
}
//班级三
for(i=0;i<student_number;i++)
    {class3[i].number=20210100+i;
     for(j=0;j<subject_number;j++)
     class3[i].score[j]=int(the_rand_create);
class3[i].score_average=average( class3[i].score,subject_number);
}
 //班级4
 for(i=0;i<student_number;i++)
    {class4[i].number=20210100+i;
   for(j=0;j<subject_number;j++)
 class4[i].score[j]=int(the_rand_create);
 class4[i].score_average=average( class4[i].score,subject_number);
 }
 //将班级信息整合到一个年级的数组中
 for(j=0;j<class_number;j++)
if(j==0)
   for(i=0;i<student_number;i++)
  t[student_number*i+i]=class1[i];
else if(j==1)
    for(i=0;i<student_number;i++)
  t[student_number*j+i]=class2[i];
 else if(j==2)
    for(i=0;i<student_number;i++)
  t[student_number*j+i]=class3[i];
else if(j==3)
    for(i=0;i<student_number;i++)
  t[student_number*j+i]=class4[i];
 
 //菜单功能的实现
 menu;
 do{
 cout<<"请输入想实现功能的相应序号:"<<endl;
 cin>>choose;
 switch(choose)
 { case 1:
 {cout<<"想要查看那个班级的学号和成绩(1代表1班,2代表2班,3代表3班,4代表4班):"<<endl;
 cin>>m;
 switch(m)
 {//实现功能1
 case 1:
 for (i=0;i<student_number;i++) cout<<"学号:"<<class1[i].number<<"     "<<"科目一成绩:"<<class1[i].score[1]<<"     "<<"科目二成绩:"<<class1[i].score[2];
     cout<<"     "<<"科目三成绩:"<<class1[i].score[3]<<"     "<<"科目四成绩:"<<class1[i].score[4]<<"     "<<"科目五成绩:"<<class1[i].score[5]<<endl; break;
case 2:
 for (i=0;i<student_number;i++) cout<<"学号:"<<class2[i].number<<"     "<<"科目一成绩:"<<class2[i].score[1]<<"     "<<"科目二成绩:"<<class2[i].score[2];
     cout<<"     "<<"科目三成绩:"<<class2[i].score[3]<<"     "<<"科目四成绩:"<<class2[i].score[4]<<"     "<<"科目五成绩:"<<class2[i].score[5]<<endl; break;
case 3:
 for (i=0;i<student_number;i++) cout<<"学号:"<<class3[i].number<<"     "<<"科目一成绩:"<<class3[i].score[1]<<"     "<<"科目二成绩:"<<class3[i].score[2];
     cout<<"     "<<"科目三成绩:"<<class3[i].score[3]<<"     "<<"科目四成绩:"<<class3[i].score[4]<<"     "<<"科目五成绩:"<<class3[i].score[5]<<endl; break;
case 4:
 for (i=0;i<student_number;i++) cout<<"学号:"<<class4[i].number<<"     "<<"科目一成绩:"<<class4[i].score[1]<<"     "<<"科目二成绩:"<<class4[i].score[2];
     cout<<"     "<<"科目三成绩:"<<class4[i].score[3]<<"     "<<"科目四成绩:"<<class4[i].score[4]<<"     "<<"科目五成绩:"<<class4[i].score[5]<<endl; break;
default: cout<<"输入错误:";}};break;
 //实现功能2
 case 2:
     {cout<<"想要查看哪个班的平均成绩:"<<endl;
     cin>>m;
     switch(m)
     {case 1:
     for (i=0;i<student_number;i++) cout<<"学号: "<<class1[i].number<<" 平均成绩 "<<class1[i].score_average<<endl;break;
     case 2:
     for (i=0;i<student_number;i++) cout<<"学号: "<<class1[i].number<<" 平均成绩 "<<class1[i].score_average<<endl;break;
     case 3:
     for (i=0;i<student_number;i++) cout<<"学号: "<<class1[i].number<<" 平均成绩 "<<class1[i].score_average<<endl;break;
     case 4:
     for (i=0;i<student_number;i++) cout<<"学号: "<<class1[i].number<<" 平均成绩 "<<class1[i].score_average<<endl;break;
     default:cout<<"输入错误:"<<endl;
     }};break;
     //实现功能三
 case 3:
     {cout<<"请输入想要查看的班级平均成绩排名:"<<endl;
     cin>>m;
     switch(m)
     {case 1:
     {bubble(class1);
     for(i=0;i<student_number;i++)
         cout<<"班级一的平均成绩排序: "<<i<<"           "<<class1[i].score_average<<endl;};break;
         case 2:
     {bubble(class2);
     for(i=0;i<student_number;i++)
         cout<<"班级二的平均成绩排序: "<<i<<"           "<<class2[i].score_average<<endl;};break;
      case 3:
     {bubble(class3);
     for(i=0;i<student_number;i++)
         cout<<"班级三的平均成绩排序: "<<i<<"           "<<class3[i].score_average<<endl;};break;
      case 4:
     {bubble(class4);
     for(i=0;i<student_number;i++)
         cout<<"班级四的平均成绩排序: "<<i<<"           "<<class4[i].score_average<<endl;};break;
      default:cout<<"输入错误!"<<endl;}};break;
     //实现功能四
     case 4:
     {cout<<"请输入想要查看的班级平均成绩排名:"<<endl;
     cin>>m;
     switch(m)
     {case 1:
     {(class1);
     choice(class1);
     for(i=0;i<student_number;i++)
         cout<<"班级一的平均成绩排序: "<<i<<"           "<<class1[i].score_average<<endl;};break;
         case 2:
     {choice(class2);
     for(i=0;i<student_number;i++)
         cout<<"班级二的平均成绩排序: "<<i<<"           "<<class2[i].score_average<<endl;};break;
      case 3:
     {choice(class3);
     for(i=0;i<student_number;i++)
         cout<<"班级三的平均成绩排序: "<<i<<"           "<<class3[i].score_average<<endl;};break;
      case 4:
     {choice(class4);
     for(i=0;i<student_number;i++)
         cout<<"班级四的平均成绩排序: "<<i<<"           "<<class4[i].score_average<<endl;};break;
      default:cout<<"输入错误!"<<endl;}};break;

     case 5:
         {cout<<"全校排名为:"<<endl;
             bubble(t);
             for(i=0;i<class_number*student_number;i++)
                 cout<<"1   "<<t[i].score_average<<endl;
         }


     case 6:cout<<"退出菜单!"<<endl;break;
    
     default:cout<<"输出错误!"<<endl;break;
 }}while(m!=6);
 
 return 0;}













        















        




你能单步调试到报错语句的代码么,不要整个都贴出来,没时间看啊