1.思维导图
![](https://i-blog.csdnimg.cn/blog_migrate/75587ef2728e689c748b471205e4fe01.jpeg)
2.定义一个Student结构体,里面的成员有公有成员name、age,私有成员: score,从堆区连续分配3个结构体大小的空间,从键盘上输入3个学生的信息,分别存放到对应的位置上,按成绩的升序排序后输出三名学生的信息。
#include <iostream>
using namespace std;
struct Student{
public:
string name;
int age;
void setscore(int s){
score =s; //获取成绩
}
int getscore(){
return score; //返回成绩
}
private:
int score;
};
int main()
{
Student *p=new Student[3];
int s;
for (int i=0;i<3;i++) {
cout<<"第"<<i+1<<"个学生的信息"<<endl;
cout<<"姓名:";
cin>>p[i].name;
cout<<"年龄:";
cin>>p[i].age;
cout<<"成绩:";
cin>>s;
//p[i].setscore(s);
(p+i)->setscore(s);
cout<<"******************************"<<endl;
}
Student temp;
for (int i=0;i<3;i++) {
for (int j=0;j<i;j++) {
if(p[j].getscore()>p[j+1].getscore())
{
temp=p[j];
p[j]=p[j+1];
p[j+1]=temp;
}
}
}
cout<<"姓名"<<" "<<"年龄"<<" "<<"成绩"<<endl;
for (int i=0;i<3;i++)
{
cout<<p[i].name<<" "<<p[i].age<<" "<<p[i].getscore()<<endl;
}
return 0;
}
结果:
![](https://i-blog.csdnimg.cn/blog_migrate/128c5cce6389c132648d0483daeb16a1.png)