实验内容:
给出n个学生的考试成绩表,每条信息由姓名和分数组成,试设计一个算法:
按分数高低次序,打印出每个学生在考试中获得的名次,分数相同的为同一名次;按名次列出每个学生的姓名与分数。
要求至少使用3种以上的排序方法(必须包含快速排序算法)。
代码:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#define MAXSIZE 200
using namespace std;
typedef struct student{
char name[25];
double score;
}*Stu,StuNode;
StuNode r[MAXSIZE+1],dp[MAXSIZE+1];
int n=0;
void Cread(){
for(int i=1;i<=n;i++)
{
cout<<"请输入第"<<i<<"个学生的姓名和分数:";
cin>>r[i].name>>r[i].score;
}
}
void Show(Stu stu){
int i;
int temp=1,index=0;
for(i=1;i<=n;i++)
{
printf("%2d %15s %5.2f\n",temp,stu[i].name,stu[i].score);
if(i<n && stu[i].score==stu[i+1].score)