思维导图
定义一个Student结构体,里面的成员有公有成员name、age,私有成员:score,从堆区连续分配3个结构体大小的空间,从键盘上输入3个学生的信息,分别存放到对应的位置上,按成绩的升序排序后输出三名学生的信息。
#include <iostream>
using namespace std;
struct Student
{
public: //共有的
string name;
int age;
private: //私有的
int score;
public:
void input() //提供输入接口
{
cin >> score;
}
int output() //提供输出接口
{
return score;
}
};
int main()
{
//申请三个结构体大小空间
Student *p=new Student[3];
//循环输入
for (int i=0;i<3;i++) {
cout << "请输入第" << i+1 <<"名学生name>>>";
cin >> p[i].name;
cout << "请输入第" << i+1 <<"名学生age>>>";
cin >> p[i].age;
cout << "请输入第" << i+1 <<"名学生score>>>";
p[i].input();
}
//按成绩排序
for (int i=1;i<=3;i++) {
for (int j=0;j<3-i;j++) {
if(p[j].output()<p[j+1].output())
{
Student tmp=p[j];
p[j]=p[j+1];
p[j+1]=tmp;
}
}
}
//循环输出
for (int i=0;i<3;i++) {
cout << p[i].name << " " <<p[i].age <<" " << p[i].output() << endl;
}
//释放空间
delete []p;
return 0;