用c++编写一个程序,要求创建一个类,输入若干个学生的数据,包括学号,姓名和三门课程的成绩;

要求按学生成绩排序,并输出名次。 因为下午就要用,所以急死了,大神帮忙看下,谢谢!

参考代码:

#include <iostream>
#include <string>

using namespace std;

#define MAX 100

class Student
{
private:
string num;
string name;
double subject[3];
double total;

public:
void input(Student s[], int);
void sort(Student s[], int);
void print(Student s[], int);

}stu[MAX];

void Student::input(Student s[], int n)
{
for (int i = 0; i < n; i++)
{
cout << "输入第" << i + 1 << "个学生的学号:";
cin >> s[i].num;
cout << "输入第" << i + 1 << "个学生的姓名:";
cin >> s[i].name;
s[i].total = 0;
for (int j = 0; j < 3; j++)
{
cout << "输入第" << j + 1 << "门课的成绩:";
cin >> s[i].subject[j];
s[i].total += s[i].subject[j];
}
cout << endl;
}
}

void Student::sort(Student s[], int n)
{
for (int i = 0; i < n-1; i++)
{
for (int j = i + 1; j < n; j++)
{
if (s[i].total < s[j].total)
{
Student tmp = s[i];
s[i] = s[j];
s[j] = tmp;
}
}
}
}

void Student::print(Student s[], int n)
{
for (int i = 0; i < n; i++)
{
cout << "第" << i + 1 << "名" << endl;
cout << "学号:" << s[i].num << endl;
cout << "姓名:" << s[i].name << endl;
for (int j = 0; j < 3; j++)
{
cout << "第" << j + 1 << "门课的成绩:" << s[i].subject[j] << endl;
}
cout << endl;
}
}

int main()
{
int num;
cout << "输入学生个数:";
cin >> num;
cout << endl;
Student s;
s.input(stu, num);
s.sort(stu, num);
s.print(stu, num);
return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-03-31

1、#include <iostream>#include <string>using namespace std;#define 

2、MAX 100class Student{private:string num;string name;double subject[3];

3、double total;public:void input(Student s[], int);void sort(Student s[], int);
void print(Student s[], int);}stu[MAX];void Student::input(Student s[], int n)
{for (int i = 0; i < n; i++){cout << "输入第" << i + 1 << "个学生的:";

4、cin >> s[i].num;cout << "输入第" << i + 1 << "个学生的姓名:";cin >> s[i].name;
s[i].total = 0;for (int j = 0; j < 3; j++){cout << "输入第" << j + 1 << "门课的成绩:";
cin >> s[i].subject[j];s[i].total += s[i].subject[j];}cout << endl;}
void Student::sort(Student s[], int n){for (int i = 0; i < n-1; i++){for (int j = i + 1; j < n; j++){if (s[i].total < s[j].total){Student tmp = s[i];

5、s[i] = s[j];s[j] = tmp;}void Student::print(Student s[], int n)
{for (int i = 0; i < n; i++){cout << "第" << i + 1 << "名" << endl;cout << "学号:" << s[i].num << endl;cout << "姓名:" << s[i].name << endl;for (int j = 0; j < 3; j++){cout << "第" << j + 1 << "门课的成绩:" << s[i].subject[j] << endl;}cout << endl;}
int main(){int num;cout << "输入学生个数:";cin >> num;cout << endl;
Student s;s.input(stu, num);s.sort(stu, num);s.print(stu, num);return 0;}

本回答被网友采纳
第2个回答  2015-03-20
非常感谢,你的代码很好。以后有这样的问题可以问你吗?

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网