题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩都按先录入排列在前的规则处理
#include <iostream>
#include<string.h>
using namespace std;
struct student
{
char name[20];
float score;
int index;
};
void sort(student stu[],int n,int flag)
{
int i,j;
int temp;
//char *name;
if(flag==1)
{
for(i=0;i<n;i++)
{
for(j=i+1;j<n+1;j++)
{
if(stu[i].score>stu[j].score)
{
temp=stu[i].index;
stu[i].index=stu[j].index;
stu[j].index=temp;
}
}
}
}
if(flag==0)
{
for(i=0;i<n;i++)
{
for(j=i+1;j<n+1;j++)
{
if(stu[i].score<stu[j].score)
{
temp=stu[i].index;
stu[i].index=stu[j].index;
stu[j].index=temp;
}
}
}
}
}
void main()
{
int i,num,flag;
//char name[20];
//float score;
student stu[5];
cout<<"请输入人数"<<endl;
cin>>num;
cout<<"请输入升序1或者降序0"<<endl;
cin>>flag;
for(i=0;i<num;i++)
{
cout<<"请输入姓名和分数"<<endl;
cin>>stu[i].name;
cin>>stu[i].score;
stu[i].index=i;
}
sort(stu,num,flag);
cout<<endl;
for(i=1;i<=5;i++)
{
cout<<stu[stu[i].index].score<<" "<<stu[stu[i].index].name<<endl;
}
}
注:转载请注明出处