# 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 nzTw2奦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开始的