标题:为什么程序运行后,没有按照年龄大小来挨个输出名字呢
只看楼主
后卿
Rank: 4
来 自:网络
等 级:业余侠客
帖 子:297
专家分:295
注 册:2016-10-22
结帖率:82.28%
已结贴  问题点数:20 回复次数:1 
为什么程序运行后,没有按照年龄大小来挨个输出名字呢
#include "touwenjian.h"
struct Hero
{
    string name;
    int age;
    string sex;
};
//冒泡排序,将年龄大的排到后面
void bubblesort(struct Hero heroArray[], int len)
{
    for (int len=0;len>=1;len--)
    {
        for (int start=1;start<=len;start++)
        {
            if (heroArray[start-1].age>heroArray[start].age)
            {
                struct Hero tmp=heroArray[start];
                heroArray[start]=heroArray[start-1];
                heroArray[start-1]=tmp;
            }
        }
    }
}
//打印排序后的英雄名字
void printArray(struct Hero heroArray[],int len)
{
    for (int i=0;i<len;i++)
    {
        cout<<heroArray[i].name;
    }
}
int main()
{
//5个英雄结构体
    struct Hero heroArray[5]=
    {
        {"刘备",23,"男"},
        {"关羽",100,"男"},
        {"张飞",20,"男"},
        {"赵云",150,"男"},
        {"貂蝉",88,"女"}
    };
    int len=sizeof(heroArray)/sizeof(heroArray[0]);
    //调用函数
    bubblesort(heroArray,len);
    printArray(heroArray,len);
    system("pause");
    return 0;
}
搜索更多相关主题的帖子: 年龄 struct int start 名字 
2022-12-09 19:21
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:14 
    for (;len>=1;len--)
    {
        for (int start=1;start<len;start++)


假如在你源码上改
程序代码:
#include <iostream>
#include <string>
using namespace std;

struct Hero
{
    std::string name;
    int age;
    std::string sex;
};

void bubble_sort( struct Hero heroArray[], size_t len )
{
    for( size_t i=len; i!=0; --i )
    {
        for( size_t j=1; j!=len; ++j )
        {
            if( heroArray[j-1].age > heroArray[j].age )
            {
                std::swap( heroArray[j-1].name, heroArray[j].name );
                std::swap( heroArray[j-1].age,  heroArray[j].age );
                std::swap( heroArray[j-1].sex,  heroArray[j].sex );
            }
        }
    }
}

void print_array( const struct Hero heroArray[], size_t len )
{
    for( size_t i=0; i!=len; ++i )
    {
        cout << heroArray[i].name << '\n';
    }
}

int main( void )
{
    struct Hero heroArray[5]=
    {
        {"刘备",23,""},
        {"关羽",100,""},
        {"张飞",20,""},
        {"赵云",150,""},
        {"貂蝉",88,""}
    };
    size_t len = sizeof(heroArray)/sizeof(heroArray[0]);
    bubble_sort( heroArray, len );
    print_array( heroArray, len );

    return 0;
}


假如用C++正正经经地写
程序代码:
#include <string>

struct Hero
{
    std::string name;
    int age;
    std::string sex;
};

#include <iostream>
#include <algorithm>
using namespace std;

int main( void )
{
    struct Hero heros[] = { {"刘备",  23, ""}
                          , {"关羽", 100, ""}
                          , {"张飞",  20, ""}
                          , {"赵云", 150, ""}
                          , {"貂蝉",  88, ""} };

    sort( begin(heros), end(heros), [](const auto& a,const auto& b){return a.age<b.age;} );
    for( const auto& e : heros )
        cout << e.name << '\n';
}
2022-12-09 19:58



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-510910-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.098521 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved