jhljx最近听说你们学了面向对象,然而当你们打开Microsoft Excel的时候,按Ctrl+G,然后在定位条件中选择对象这一栏时,奇迹出现了。。
这居然是来自Microsoft的chao feng......Orz
jhljx为了找到丢失的对象,一怒之下写了这样一个程序。
请你在该程序的基础上完成一些简单的操作。
给你n个人的个人信息,请你按照学号的从小到大顺序输出出来。
输入多组数据。
每组数据第一行为一个正整数n(1<=n<=10)。
下面n行每行有5个变量,分别表示姓名(字符串长度小于20),学号,生日的年,月,日。(输入数据保证信息合法)
按照学号从小到大的顺序输出结果。样例程序中cout<<stu<<endl;可以直接输出这个学生的信息。 所以大家只需要对Student类的对象数组进行排序即可。详细做法见提示。
4
mmdwjh 14211098 1996 10 8
microhhh 14211116 1995 11 21
cool_breeze 14211068 1996 12 30
jhljx 13211026 1995 12 25
Name:jhljx
StudentId:13211026
Birth:1995.12.25
Name:cool_breeze
StudentId:14211068
Birth:1996.12.30
Name:mmdwjh
StudentId:14211098
Birth:1996.10.8
Name:microhhh
StudentId:14211116
Birth:1995.11.21
本题需要声明Student stu[20];数组。
然后在输入数据的时候,学号尽量用int,便于排序。
使用Student类的setName,setId和setBirthDate函数设置对象的参数。
比如:
char name[20];
int id,y,m,d;
cin>>name>>id>>y>>m>>d;
stu[i].setName(name);
stu[i].setId(id);
stu[i].setBirthDate(y,m,d);
排序的时候可以用到冒泡排序:
for(int i=1;i<=n-1;i++){
for(int j=1;j<=n-i;j++){
if(stu[j].getId()>stu[j+1].getId()){
交换两个对象
}
}
}
交换方法类似于int t=a;b=a;a=t;这样。因此需要一个临时对象s来存储
stu[j]的全部值。相当于int t=a;的一步。
Student s1=stu[j];stu[j]=stu[j+1];stu[j+1]=s1;或者swap(stu[j],stu[j+1]);