编写一个程序,从键盘输入10个学生的成绩,统计最高分,最低分和平均分.
以下程序用的索引算法.索引算法的好处是不需要进行数据的移动.比其它排序算法要高效.(加了两个结构可能长了一点,不过这是有必要的)
#include <iostream.h>
struct student
{
char name[10];
int achievement;
};
struct result
{
int max;
int mix;
int average;
};
void indexsort(student stu[],result *res)
{
int i,j,k,p[10],count=0;
for(i=0;i<10;i++)
{
p[i]=i;
count+=stu[i].achievement;
}
for(j=0;j<10;j++)
if(stu[p[j]].achievement >stu[p[j+1]].achievement )
{
k=p[j];p[j]=p[j+1];p[j+1]=k;
}
res->max=stu[p[9]].achievement ;
res->mix=stu[p[0]].achievement;
res->average=count/10;
}
main()
{
student stu[10];
result res;
for(int i=0;i<10;i++)
{
cout<<"输入学生姓名:";
cin>>stu[i].name;
cout<<"输入学生成绩:";
cin>>stu[i].achievement;
}
indexsort(stu,&res);
cout<<"最高成绩的是:"<<res.max<<endl;
cout<<"最低成绩的是:"<<res.mix<<endl;
cout<<"平均成绩为:"<<res.average<<endl;
}