您的位置:首页 > 编程语言 > C语言/C++

c++动态建立学生排序范例

2006-10-26 22:39 337 查看
#include <iostream.h>
#include <vector>
using namespace std;

struct STUDENT
{
char name[8];
char id[10];
int score[3];
double ave;
};

STUDENT InputData()
{
STUDENT stu;
cout<<"姓名:";
cin>>stu.name;
cout<<"学号:";
cin>>stu.id;
int aveResult=0;
cout<<"三门成绩:";
cin>>stu.score[0]>>stu.score[1]>>stu.score[2];
stu.ave =(stu.score[0]+stu.score[1]+stu.score[2])/3.0;
return stu;
}

void PrintData(STUDENT *data,int nNum)
{
cout<<"/t"<<data[nNum].id<<"/t"<<data[nNum].name;
for(int j=0;j<3;j++)
cout<<"/t"<<data[nNum].score[j];
cout<<"/t"<<data[nNum].ave<<endl;
}

void stusort(STUDENT *data,int nNum)
{
vector<vector<double> > Ai(nNum+1, vector<double>(2));
int i,j,temp;
for(i=0;i<nNum;i++)
{
Ai[i][0]=i;
Ai[i][1]=data[i].ave;
}

for(i=0;i<nNum;i++)
{
temp=i;
for(j=i;j<nNum;j++)
{
if(Ai[temp][1]<Ai[j][1])
{
temp=j;
}
}
if(temp!=i)
{
Ai[nNum][0]=Ai[i][0];
Ai[nNum][1]=Ai[i][1];
Ai[i][0]=Ai[temp][0];
Ai[i][1]=Ai[temp][1];
Ai[temp][0]=Ai[nNum][0];
Ai[temp][1]=Ai[nNum][1];
}
}

for(i=0;i<nNum;i++)
{
if(i%5==0)
{
cout<<"/n名次/t学号/t姓名/t成绩/t成绩/t成绩/t平均分/n";
}
cout<<i+1;
PrintData(data,Ai[i][0]);

}
}

void main()
{
int stuNum;

cout<<"请输入学生数:";
cin>>stuNum;

for(int i=0;i<100;i++)
{
if(stuNum<1)
{
cout<<"请正确输入学生数:";
cin>>stuNum;
}
}
vector<STUDENT> stu(stuNum);

for(i=0;i<stuNum;i++)
{
cout<<"/n输入第"<<i+1<<"个学生信息/n";
stu[i]=InputData();
}
stusort(&stu[0],stuNum);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: