枫枫枫枫子 2021-12-02 13:58 采纳率: 75%
浏览 49
已结题

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谢谢大家!谢谢大家!

  • 写回答

2条回答 默认 最新

  • 南七灵 2021-12-02 14:14
    关注
    
    
    #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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月10日
  • 已采纳回答 12月2日
  • 修改了问题 12月2日
  • 创建了问题 12月2日

悬赏问题

  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序
  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程