n的值>=2时为什么输出的值有空格等错误,求解。
#include<iostream>
#include<string>
using namespace std;
class Student
{
public:
	string id;
	string name;
	float score[3];
	float sum_m;
};
Student* fun(float p[],int n,Student *student)
{
	float temp;
	Student demp;
	for(int i=0;i<n;i++)
		for (int j = 0;j < i - j;j++)
		{
			if (p[j] < p[j + 1])
			{
				temp = p[j+1];
				p[j+1] = p[j ];
				p[j] = temp;
				demp = student[j+1];
				student[j + 1] = student[i];
				student[j] = demp;
			}
		}
	for (int i=0;i < n;i++, student++)
	{
		cout << student->id << " "<< student->name << " " << student->sum_m <<" "<< endl;
	}
	return student;
}
int main()
{
	int n;
	cin >> n;
	Student *student =new Student[n];
	float* p = new float[n];
	for (int i = 0;i < n;i++)
	{
		student->sum_m = 0;
		cin >> student->id;
		cin >> student->name;
		for (int j = 0;j < 3;j++)
		{
			cin >> student->score[j];
			student->sum_m += student->score[j];
			cout << " ";
		}
		p[i] = student->sum_m;                   
	}
    fun(p, n, student);
	return 0;
}