C++ 例题

问题:

    某大学开田径运动会,现有12名选手参加100米比赛,对应的运动员号及成绩如表所示,请按照成绩排名并输出,要求每一行输出名次、运动员号及成绩。要求用冒泡法排序。

运动员号
 成绩(秒)
 运动员号
 成绩(秒)
 
001
 13.6
 031
 14.9
 
002
 14.8
 036
 12.6
 
010
 12.0
 037
 13.4
 
011
 12.7
 102
 12.5
 
023
 15.6
 325
 15.3
 
025
 13.4
 438
 12.7
 


分析:

     该题主要考查冒泡排序法以及输出格式控制。

PS:对于输出格式控制不是很了解,所以临时在网上找了资料,应另做小结。

答案:

/*-------------------Information----------------------
*    Name:    邓晓华(Ta 哈)
*    E-Mail:  heirenhua@hotmail.com
*    Date:    2009年09月08日
*----------------------------------------------------*/ 
 
#include <iostream>
#include <iomanip>
using namespace std;
 
struct Players
{
    int num;
    float score;
};
 
int main()
{
    Players member[12] = {{001, 13.6}, {002, 14.8},
                            {010, 12.0}, {011, 12.7},
                            {023, 15.6}, {025, 13.4},
                            {031, 14.9}, {036, 12.6},
                            {037, 13.4}, {102, 12.5},
                            {325, 15.3}, {438, 12.7}
                            };
    int temp_N;
    float temp_S;
                             
    //Bubble Sort
    for(int i=0; i<12; ++i)
    {
        for(int j=0; j<12-i; ++j)
        {
            if(member[j].score > member[j+1].score)
            {
                temp_N = member[j+1].num;
                temp_S = member[j+1].score;
                member[j+1].num = member[j].num;
                member[j+1].score = member[j].score;
                member[j].num = temp_N;
                member[j].score = temp_S;
            }
        }
    }
    
    cout << setiosflags(ios::left) << setw(6) << "名次" << setw(6) << "号码"  << setw(6) << "成绩"    << endl;
    for(int i=0; i<12; ++i)
    {
        cout << setiosflags(ios::left) << setiosflags(ios::fixed) << setprecision(1) 
         << setw(6) <<  setw(6) << i+1 << setw(6)  << member[i].num  << setw(6) << member[i].score << endl;
    }
}


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/heirenhua/archive/2009/09/08/4530146.aspx

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值