问题:
某大学开田径运动会,现有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