永发信息网

C++中,我想输入3个跑步运动员和其完成赛事所用的时间来输出他们的名次 b 15 c

答案:2  悬赏:80  手机版
解决时间 2021-02-13 09:38
例如输入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;

}
最佳答案
你的看起来有点乱,不习惯,不好意思,所以我重新写了一遍
#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.  在第二层for循环的时候 少了 i = 0; 这样是不可以的,具体参照相关书籍 2. 在第二for 循环的时候i <= n-i ; 正确的写法是 i <= n -j ; 再看看别人怎么说的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
资兴市市场服务中心地址有知道的么?有点事想
康益盛按摩院地址在什么地方,想过去办事
鑫隆小吃我想知道这个在什么地方
金星以前的丈夫是干什么的
益灸馆地址在什么地方,我要处理点事
C—ANCA与下列哪一种疾病最相关A.Wegener肉芽
淘宝莆田鞋店有哪些
桃园冶金设备工程公司在哪里啊,我有事要去这
柴油车加了汽油后遗症,有没有好心的车友帮帮
成都德仁堂有多少家?
2016南阳市第二人民医院招聘公示与聘用如何
下列关于通货紧缩对经济的作用机理说法错误的
杨记羊肉地址在什么地方,想过去办事
安丽养生理疗馆地址在什么地方,想过去办事
叫呱呱 是什么词语
推荐资讯
电镀厂上班有毒吗?
10年的雪佛兰科鲁兹跑了5万公里要价六万车况
献给你的爱之歌的歌词发音有没有,想读会了再
刹车王和柔刹王的区别,有没有人可以分享一下
晨光路地址有知道的么?有点事想过去
毛尖茶叶在哪里的好喝一些?
王者荣耀送皮肤的话,比如我要送好友电玩小子
梦见家里有织网机在织网
eclipse中怎么调节字体的行间距
向氏门业我想知道这个在什么地方
【兴致的近义词】兴致的近义词是什么?
跪求游戏王 炎王卡组 怎么组...
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?