题目描述
定义一个结构体,包含年月日,表示一个学生的出生日期。然后在一群学生的出生日期中找出谁的出生日期排行第二
要求:出生日期的存储必须使用结构体,不能使用其他类型的数据结构。
要求程序全过程对出生日期的输入、访问、输出都必须使用结构。
输入
第一行输入t表示有t个出生日期
每行输入三个整数,分别表示年、月、日
依次输入t个实例
输出
输出排行第二老的出生日期,按照年-月-日的格式输出
样例查看模式
正常显示查看格式
输入样例1 <-复制
输出样例1
输入样例2 <-复制
输出样例2
输入样例3 <-复制
#include<iostream>
using namespace std;
struct birthdays {
int year, month, day;
};
bool pai(birthdays a, birthdays b)
{
if (a.year < b.year)
{
return true;
}
else if (a.year > b.year)
{
return false;
}
else
{
if (a.month < b.month)
{
return true;
}
else if (a.month > b.month)
{
return false;
}
else
{
if (a.day < b.day)
{
return true;
}
else
{
return false;
}
}
}
}
void swap(birthdays &a, birthdays &b)
{
int temp;
temp = a.year;
a.year = b.year;
b.year = temp;
temp = a.month;
a.month = b.month;
b.month = temp;
temp = a.day;
a.day = b.day;
b.day = temp;
}
int main()
{
int t;
cin >> t;
birthdays* p = new birthdays[t];//创建一个动态二维数组
for (int i = 0; i < t; i++)
{
cin >> p[i].year;
cin >> p[i].month;
cin >> p[i].day;
}
//先进行一个排序,然后再找出排第二的数组序号
int temp = 0;
for (int i = 0; i < t; i++)
{
for (int j = i; j < t; j++)
{
if (pai(p[i], p[j]))//p[i]<p[j]小于的情况
{
swap(p[i], p[j]);
}
}
}
cout << p[t-2].year << "-" << p[t-2].month << "-" << p[t-2].day;
}