C++中,我想输入3个跑步运动员和其完成赛事所用的时间来输出他们的名次 b 15 c
解决时间 2021-02-13 09:38
- 提问者网友:那叫心脏的地方装的都是你
- 2021-02-13 05:43
例如输入a 30 b 15 c 10就会输出 c 1 b 2 a 3但为什么我的代码只能比较第一和第二个,而无法比较第三个呢
代码如下:
#include#include
using namespace std;
int main()
{
int i=1;
int n=3;
string name[11];string time[11];for(;i<=n;i++)
{cin>>name[i];
cin>>time[i];
}i=1;
string a;int j;
for(j=1;j<=n;j++)
for(;i<=n-i;)
{if(time[i]>time[i+1])
{a=time[i];
time[i]=time[i+1];
time[i+1]=a;
a=name[i];
name[i]=name[i+1];
name[i+1]=a;
i++;
}
}
cout<for(i=2;i<=n;i++)
{if(time[i-1]==time[i])
cout<else
cout<}
return 0;
}
最佳答案
- 五星知识达人网友:旧脸谱
- 2021-02-13 07:17
你的看起来有点乱,不习惯,不好意思,所以我重新写了一遍
#include
#include
using namespace std;
int main()
{
//bool flag;
int i, j, n = 3;
string name[11], time[11], swap;
for(i = 0; i < n; i ++)
{
cin >> name[i];
cin >> time[i];
}
for(i = 0; i < n; i ++)
{
//flag = fase;
for(j = 0; j < n - i - 1; j ++)
if(time[j] > time[j + 1])
{
swap = time[j];
time[j] = time[j + 1];
time[j + 1] = swap;
swap = name[j];
name[j] = name[j + 1];
name[j + 1] = swap;
//bool flag = true;
}
//if(!flag)
//break;
}
cout << "rank:\n";
for(i = 0; i < n; i ++)
{
cout << name[i] << " " << i + 1 << " ";
}
cout << endl;
return 0;
}
冒泡排序法还可以优化,我在里边的注释即是
全部回答
- 1楼网友:胯下狙击手
- 2021-02-13 08:40
你在用冒泡法进行排序的时候出现了如下问题:
1. 在第二层for循环的时候 少了 i = 0; 这样是不可以的,具体参照相关书籍
2. 在第二for 循环的时候i <= n-i ; 正确的写法是 i <= n -j ;
再看看别人怎么说的。
我要举报
大家都在看
推荐资讯