c++ 利用对象数组 冒泡排序失败 最后出来一堆乱码


# include<string>
# include<iostream>
using namespace std;


class Student
{
public:
    Student(int num = 0,string n="zhangsan",char x='m',int s_m=0,int s_e=0,int s_p=0)
        :num(num),name(n),sex(x),math(s_m),english(s_e),politics(s_p)
        {average = (math + english + politics)/3;} 
    friend void sort( Student * );
    friend void show(Student * );
    void Print();
private:
    int num;
    string name;
    char sex;
    int math,english,politics;
    int average;
};
void Student::Print()
{
    cout<<"num:"<<num<<endl;
    cout<<"name:"<<name<<endl;
    cout<<"sex:"<<sex<<endl;
    cout<<"Math:"<<math<<endl;
    cout<<"English:"<<english<<endl;
    cout<<"Politics:"<<politics<<endl;
    cout<<"average:"<<average<<endl;
}

void sort(Student * student)
{
    int x,y,t;

    for(x = 0; x<4; x++)
    {
        for(y=0; y<5-x-1; y++)
        {
            if(student[y].average > student[y+1].average)
            {
                t = student[y].average;
                student[y].average = student[y+1].average;
                student[y+1].average = student[y].average;
            }
        }

    }
}

void show(Student  * student)
{
    
    for(int i=1;i<=5; i++)
    {
        cout<<"学生整体信息(按平均成绩降序排列):"<<endl;
        student[i].Print();
        cout<<"-------------------------------"<<endl;
    }
}

int main(void)
{
    cout<<"【学生信息管理系统】"<<endl;
    
    Student stud[5]={
    Student (2020366,"rsw",'f',60,60,60),
    Student (2020366,"jl",'f',70,70,70),
    Student (2020366,"gym",'f',80,80,80),
    Student (2020366,"byy",'f',90,90,90),
    Student (2020366,"rsj",'m',10,10,10)
    }; 


    sort(stud);
    show(stud);

    return 0;
}

**有没有人知道哪里错啦?显示结果是这样。
**

【学生信息管理系统】
学生整体信息(按平均成绩降序排列):
num:2020366215
name:jly
sex:f
Math:70
English:70
Politics:70
average:10
-------------------------------
学生整体信息(按平均成绩降序排列):
num:2020366216
name:gym
sex:f
Math:80
English:80
Politics:80
average:10
-------------------------------
学生整体信息(按平均成绩降序排列):
num:2020366217
name:byy
sex:f
Math:90
English:90
Politics:90
average:10
-------------------------------
学生整体信息(按平均成绩降序排列):
num:2020366224
name:rsj
sex:m
Math:10
English:10
Politics:10
average:10
-------------------------------
学生整体信息(按平均成绩降序排列):
num:-858993460
萅 N   1 Ld哋       P     鵒 |  O  貍    H鵒 Z X鵒 )v  1 v殆O 瀦Tw  1 鎓          1                                         d鵒     践O @璘w(憎    涅O nzTw2奦w        N   1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             ? 请按任意键继续. . .

5555谢谢大家!谢谢大家!



#include <string>
#include <iostream>
using namespace std;

class Student
{
public:
    Student(int num = 0, string n = "zhangsan", char x = 'm', int s_m = 0, int s_e = 0, int s_p = 0)
        : num(num), name(n), sex(x), math(s_m), english(s_e), politics(s_p)
    {
        average = (math + english + politics) / 3;
    }
    friend void sort(Student *);
    friend void show(Student *);
    void Print();

private:
    int num;
    string name;
    char sex;
    int math, english, politics;
    int average;
};
void Student::Print()
{
    cout << "num:" << num << endl;
    cout << "name:" << name << endl;
    cout << "sex:" << sex << endl;
    cout << "Math:" << math << endl;
    cout << "English:" << english << endl;
    cout << "Politics:" << politics << endl;
    cout << "average:" << average << endl;
}
void sort(Student *student)
{
    int x, y;
    Student t;
    for (x = 0; x < 4; x++)
    {
        for (y = 0; y < 5 - x - 1; y++)
        {
            if (student[y].average < student[y + 1].average)
            {
                t = student[y];
                student[y] = student[y + 1];
                student[y + 1] = t;
            }
        }
    }
}
void show(Student *student)
{
    for (int i = 0; i < 5; i++)
    {
        cout << "学生整体信息(按平均成绩降序排列):" << endl;
        student[i].Print();
        cout << "-------------------------------" << endl;
    }
}
int main(void)
{
    cout << "【学生信息管理系统】" << endl;
    Student stud[5] = {
        Student(2020366224, "rsw", 'f', 60, 60, 60),
        Student(2020366215, "jly", 'f', 70, 70, 70),
        Student(2020366216, "gym", 'f', 80, 80, 80),
        Student(2020366217, "byy", 'f', 90, 90, 90),
        Student(2020366224, "rsj", 'm', 10, 10, 10)};

    sort(stud);
    show(stud);
    return 0;
}

数组下标从0开始啊,你的show是从1开始的