C++编程练习-生日相同

描述
在一个有180人的大班级中,存在两个人生日相同的概率非常大,现给出每个学生的学号,出生月日。试找出所有生日相同的学生。
输入
第一行为整数n,表示有n个学生,n<100。
此后每行包含一个字符串和两个整数,分别表示学生的学号(字符串长度小于10)和出生月(1<=m<=12)日(1<=d<=31)。
学号、月、日之间用一个空格分隔。
输出
对每组生日相同的学生,输出一行,
其中前两个数字表示月和日,后面跟着所有在当天出生的学生的学号,数字、学号之间都用一个空格分隔。
对所有的输出,要求按日期从前到后的顺序输出。
对生日相同的学号,按输入的顺序输出。
样例输入
5
00508192 3 2
00508153 4 5
00508172 3 2
00508023 4 5
00509122 4 5
样例输出
3 2 00508192 00508172
4 5 00508153 00508023 00509122

参考代码

#include #include using namespace std; typedef class Student{ public: string name; int month; int day; }Student; //global variables const int N = 100; Student stu[N]; int stu_n; //functions void bubblesort(); void print(); //sort void bubblesort(){ int i,j,flag; Student temp; for(i = 0;i < stu_n;i ++){ flag = 1; for(j = 0;j < stu_n - i - 1;j ++){ if(stu[j].month > stu[j + 1].month){ temp = stu[j]; stu[j] = stu[j + 1]; stu[j + 1] = temp; flag = 0; }else if(stu[j].month == stu[j + 1].month && stu[j].day > stu[j + 1].day ){ temp = stu[j]; stu[j] = stu[j + 1]; stu[j + 1] = temp; flag = 0; } } if(flag){ break; } } } //print void print(){ int i,flag; flag = 0; for(i = 1;i < stu_n;i ++){ if(stu[i].month == stu[i - 1].month && stu[i].day == stu[i - 1].day){ if(flag == 0){ std::cout<>stu_n; for(i = 0;i < stu_n;i ++){ std::cin>>stu[i].name>>stu[i].month>>stu[i].day; } //sort bubblesort(); //print print(); return 0; }


你可能感兴趣的:(C++编程练习-生日相同)