版权声明:版权所有,违权必究!!! https://blog.csdn.net/IT_SoftEngineer/article/details/82913546
问题说明
输入几名同学的姓名何成绩,对这些同学的成绩进行排序,然后按照成绩从大到小的顺序进行排序,输出对应的名次和姓名
代码实现
#include<iostream>
// 输入姓名时可用字符串输入,输入字符串头文件表示
#include<string>
using namespace std;
int main()
{
// 符号常量的定义
const int M = 1000;
int n, N,j,i;
// ranking 表示次序
int ranking = 1;
// 结构体定义,包括学生的姓名和成绩
typedef struct student
{
string Na;
double G;
}st;
// 定义一个数组用来储存几组学生的姓名和成绩
st ST[M];
st t;
while (cin >> N&&N > 0)
{
for (n = 0; n < N; n++)
{
cin >> ST[n].Na>>ST[n].G;
}
// 利用冒泡排序法进行成绩排序(这里进行反置,按从大到小的顺序排列)
for (i = 0; i <N-1; i++)
for (j = 0; j < N - 1 - i;j++)
if (ST[j].G<ST[j + 1].G)
{
// 判断大小后对整个结构体进行调换
t = ST[j];
ST[j] = ST[j + 1];
ST[j + 1] = t;
}
for (n = 0; n < N; n++)
{
cout << ranking << " ";
cout << ST[n].Na << endl;
ranking++;
}
if (n == N)
break;
}
return 0;
}