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;
    }

    运行结果:

  • 相关阅读:
    springboot的@EnableAutoConfiguration起作用的原理
    springboot加载bean过程探索
    dubbo源码阅读笔记-如何引用远程服务,变成invoker
    HashMap如何实现序列化
    如果处理缓存失效从数据库加载数据
    redis设计原则
    redis相关运维命令
    spring的compentScan注解扫描类机制
    全文检索技术
    前端设计网站
  • 原文地址:https://www.cnblogs.com/duanqibo/p/14105541.html
Copyright © 2011-2022 走看看