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);
}
#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);
}
相关文章推荐
- C/C++动态自定义结构体数组实例锻炼-学生成绩排序
- 【C++】建立一个学生信息链表,每个结点包括:学号、姓名、成绩。【原创技术】
- C++中对象的常引用、动态建立和释放相关知识讲解
- C++ 单链表的建立,插入数值,删除数值,排序,遍历,和分割操作
- 《C++第十六周实验报告2-1》---学生成绩排序
- c++中对象动态建立与静态建立的区别和应用
- C++建立动态二维数组
- C++对象的动态建立与释放详解
- c语言:写一个函数建立一个有3名学生数据的单向动态链表
- C++技术支持作业范例:有关动态链表的经典例题
- C/C++动态内存分配之用malloc和指针实现动态数组排序
- C++对象的动态建立和释放
- 【C++】建立一个学生信息链表,每个结点包括:学号、姓名、成绩。【原创技术】
- C++语言基础 例程 对象的动态建立和释放
- C++对象的动态建立与释放详解
- C++对象的动态建立与释放详解(new和delete)
- 动态库的建立及C++调用与环境变量的使用
- C++建立动态数组
- c++---对象的动态建立和释放
- C++初学之 1. 数组(菱形矩阵):动态建立数组,算法小结