问题描述
设计相应的结构体类型数组,完成一个班(为方便输入,设定为5人)学生的学号、姓名、语文成绩、数学成绩、外语成绩的输入;计算每位同学的总分及平均分,并按表格形式输出学生的所有信息;将上述表格按照学生的平均分排序。
问题分析
拆分问题为:
(1)声明结构体struct Transcript;
(2)构建主函数int main(),输出输出成绩表;
(3)构建函数void order(Transcript a[]),完成排序。
代码
#include <iostream>
using namespace std;
#define n 5
struct Transcript
{
int averange;
};
void order(Transcript a[])// 选择排序
{
int i;
Transcript *p,*k,x;
for(i=0;i<=n-2;i++)
{
k=a+i;
for(p=k+1;p<a+n;p++)
{
if(k->averange < p->averange) k=p;
}
if(k!=a+i)
{
x=*(a+i);
*(a+i)=*k;
*k=x;
}
}
}
int main()
{
Transcript t[n],*p;
for(p=t;p<t+n;p++)
{
cin>>p->averange;
}
order(t);
for(p=t;p<t+n;p++)
{
cout<<p->averange;
}
return 0;
}