题目:
定义一个结构体类型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;
}

结果: