编写一个c++程序,对运动会上百米比赛成绩进行排名。
相关知识
多维数组C++支持多维数组。
多维数组声明的一般形式如下:
type name[size1][size2]...[sizeN];
多维数组最简单的形式是二维数组。声明一个二维数组即为声明一个x行y列数组,形式如下:
type arrayName [ x ][ y ];
举例说明:
初始化二维数组
多维数组可以通过在括号内为每行指定值来进行初始化。下面是一个带有3行4列的数组。
int a[3][4] = {
{0, 1, 2, 3} , /* 初始化索引号为 0 的行 */
{4, 5, 6, 7} , /* 初始化索引号为 1 的行 */
{8, 9, 10, 11} /* 初始化索引号为 2 的行 */
};
内部嵌套的括号是可选的,下面的初始化与上面是等同的:
int a[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};
访问二维数组二维数组中的元素是通过使用下标(即数组的行索引和列索引)来访问的。
举例说明:
int val = a[2][3];
即:将数组中第3行第4个元素赋值给变量val。
选择排序选择排序详情见上一关。
编程要求已知某运动会男子百米跑决赛成绩,要求编写程序,按成绩排序并输出排序结果,包括输出名次、运动员编号和成绩三项内容。
提示:用M行3列数组存放运动员号码、成绩与名次,对决赛成绩降序排序,最后按排序后的位置输出名次。(M为运动员人数)
输入输出说明:
输入运动员编号和成绩按顺序输出名次、运动员编号和成绩输出。
测试举例:
测试输入:
1 9.06 2 9.55 3 9.50 4 9.56
预期输出:
1 1 9.06
2 3 9.50
3 2 9.55
4 4 9.56
#include <iostream>
#include <iomanip>
#define M 4
using namespace std;
int main ()
{
float A[M][3];
for(int i = 0;i < M;i++)
{
for (int j = 1;j<3;j++)
{
cin>>A[i][j];
}
}
for(int k=0;k < M;k++)
{
int min=k;
for(int l=k+1;l < M;l++)
{
if(A[min][2]>A[l][2])
{
float t=A[l][2];
A[l][2]=A[min][2];
A[min][2]=t;
int t1 = A[l][1];
A[l][1] = A[min][1];
A[min][1] = t1;
}
}
}
int m = 1;
int c = 1;
A[0][0] = 1;
while(m < M)
{
if(A[m][2] == A[m-1][2])
{
A[m][0] = c;
c--;
}
else
{
A[m][0] = c+1;
}
m++;
c++;
}
for(int a = 0;a < M;a++)
{
for(int b = 0 ;b < 2;b++)
{
cout<<int(A[a][b])<<' ';
}
cout<<fixed<<setprecision(2)<<A[a][2]<<' '<<'\n';
}
return 0;
}