运动成绩排名 (10分) -- PTA

6-3 运动成绩排名 (10分)
某大学开田径运动会,现有12名选手参加100米比赛,对应的运动员号及成绩如表所示,请按照成绩排名并输出,要求每一行输出名次、运动员号及成绩。
在这里插入图片描述
使用给定的类,完成数据的对象的定义,并按照成绩排序后输出(格式见输出样例)
类声明如下:

在这里插入图片描述
输入样例:

输出样例:
在这里插入图片描述

注意:使用setw()进行宽度设置,每个输出项占6列。

----------------------------------------------------分割线---------------------------------------------------
题目分析
1.由于要对已有的12组数据进行排序,所以我们需要定义一个对象数组来存储这些数据.
2.为了使主函数内更为简洁,我们定义一个排序函数void px(Sport * p)
在该排序函数中,我们使用了冒泡排序

int main()
{
 Sport s[12] = {
 Sport("001", 13.6), Sport("002", 14.8), Sport("010", 12.0),
 Sport("011", 12.7), Sport("023", 15.6), Sport("025", 13.4),
 Sport("031", 14.9), Sport("036", 12.6), Sport("037", 13.4),
 Sport("102", 12.5), Sport("325", 15.3), Sport("438", 12.7)
 };
 void px(Sport* p);
 Sport *p = s;
 px(p);
 return 0;
}

void px(Sport* p)
{
 Sport *i, *j;
 for(i = p; i < p+11; i++)
  for(j = p+11; j > i; j--)
   if(j->grade < (j-1)->grade){
    string s1;
    double n;
    n = j->grade;
    s1 = j->num;
    j->grade = (j-1)->grade;
    j->num = (j-1)->num;
    (j-1)->grade = n;
    (j-1)->num = s1;
   }
 int n=1;
 for(i = p; i < p+12; i++){
  cout << setw(6) << n << setw(6) << i->num 
       << setw(6) << i->grade << endl;
  n++;
 }
}
  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值