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<<'\t'<<num<<'\t'<<name<<'\t'<<sex<<'\t'<<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("\n\t按学生姓名排序,采用冒泡排序法:\n\n");
printf("\t学号\t姓名\t性别\t年龄\n");

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

 

运行结果:

 

posted @ 2020-12-08 20:40  bobo哥  阅读(1271)  评论(0编辑  收藏  举报