zoukankan      html  css  js  c++  java
  • c++实现冒泡排序,对姓名排序

    源程序:

    //*******************************
    //程序:冒泡排序
    //描述:用外层趟数和内层交换数完成
    //输入:用数组输入
    //输出:用显示器输出
    //其他:
    //*******************************
    #include <iostream>
    #include <string>
    #define N 5
    using namespace std;
    //冒泡排序的子程序(模块)
    //作者:张三
    class student //类:student
    {
    private: //声明私有变量
    int num;
    char name[20];
    char sex[2];
    int age;
    public:
    student(){}; //默认的构造函数
    student(int n,char na[20],char se[2],int ag) //重载的构造函数
    {
    num=n;
    strcpy(name,na);
    strcpy(sex,se);
    age=ag; //用重载的构造函数的参数,给私有变量初始化
    }
    void show(); //显示结果的函数
    friend void bubble_sort(student stud[],int); //冒泡排序,用友元函数
    };
    void student::show() //在类之外定义show()这个函数
    {
    cout<<' '<<num<<' '<<name<<' '<<sex<<' '<<age<<endl;
    }
    //友元函数不是类的成员,所以在类之外不写类名
    void bubble_sort(student stud[],int n)
    {
    int i,j;
    student temp;
    for(i=0;i<n;i++) //外层循环控制第几趟
    {
    for(j=0;j<n-i-1;j++) //内层循环是比较相邻的两个数
    {
    if(strcmp(stud[j].name,stud[j+1].name)>0) //如果前面的数>后面的数
    {
    temp=stud[j];
    stud[j]=stud[j+1];
    stud[j+1]=temp; //三个语句完成交换
    }
    }
    }
    }

    //主程序由老师写,子程序由张三同学写
    int main()
    {
    int i;
    student stu[N]={student(1001,"zhsan","m",20),
    student(1002,"lisi","f",21),
    student(1003,"wangwu","m",19),
    student(1004,"zhaoli","f",21),
    student(1005,"liug","m",20)}; //用构造函数定义5个学生

    printf(" 按学生姓名排序,采用冒泡排序法: ");
    printf(" 学号 姓名 性别 年龄 ");

    for(i=0;i<N;i++) //循环输出5个数
    {
    bubble_sort(stu,N);
    stu[i].show();
    cout<<endl; //每显示一个人,就换行
    }
    return 1;
    }

    运行结果:

  • 相关阅读:
    中文句子相似度之計算與應用
    《The Elder Scrolls V: Skyrim》百般冷门却强力职业
    《老滚5 》买房、娶老婆详尽攻略
    关于组播239.255.255.250
    Windows事件ID大全
    事件查看器常见ID代码解释
    Windows路由表详解
    两种动态加载JavaScript文件的方法
    80后的你们还记得这些游戏吗
    谷歌和HTTPS
  • 原文地址:https://www.cnblogs.com/duanqibo/p/14105541.html
Copyright © 2011-2022 走看看