题目:
定义一个结构体类型Competitor,包含参赛者序号,参赛者姓名和比赛得分。
定义一个包含5名参赛人员的结构体数组,定义一个对应的指针数组顺序指向该结构体数组的每个数组元素。
构造一个函数通过指针数组根据比赛得分进行选择排序。
在主函数中通过指针数组输出排序后的结果。
代码:
#include <iostream>
using namespace std;
struct Competitor
{
int xh;
char name[30];
double df;
};
void fun(Competitor *q[])
{
int i, j, k;
double t;
int h;
for (i = 0; i < 5; i++)
{
k = i;
for (j = i + 1; j < 5; j++)
if (q[j]->df < q[k]->df)
k = j;
if (k != i)
{
t = q[i]->df;
q[i]->df = q[k]->df;
q[k]->df = t;
h = q[i]->xh;
q[i]->xh = q[k]->xh;
q[k]->xh = h;
}
}
}
int main()
{
Competitor A[5] = {
{
1, "A", 98}, {
2, "B", 96}, {
3, "C", 100}, {
4, "D", 99}, {
5, "E", 97}};
Competitor *p[5];
int i, j;
for (i = 0; i < 5; i++)
{
p[i] = &A[i];
}
fun(p);
for (i = 0; i < 5; i++)
{
cout << p[i]->xh << " ";
j = p[i]->xh - 1;
cout << p[j]->name << " " << p[i]->df << endl;
}
return 0;
}
结果: