身份证号码共18位,其中第7到14位是出生日期。编写程序,输入n(n<20)个身份证号码,根据其中出生日期按年龄从大到小排序后输出。其中要求自定义函数int birthday(char s[ ]),其功能是从一个身份证信息s中生成整数的出生日期并返回。
输入格式:
先输入n,再输入n个身份证号码。
输出格式:
按年龄从大到小排序后输出身份证号码。
输入样例:
在这里给出一组输入。例如:
3
330103200110121513
330602199007191214
330104200106111313
输出样例:
在这里给出相应的输出。例如:
330602199007191214
330104200106111313
330103200110121513
#include<bits/stdc++.h>//结构体yyds
using namespace std;
int birthday(char n[]) {
int sum = 0;
for (int i = 6; i <= 13; i++) {
sum = sum * 10 + n[i] - '0';
}
return sum;
}
struct student {
long long age;
char num[21];
};
int main() {
student stu[10],temp;
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> stu[i].num;
stu[i].age = birthday(stu[i].num);
}
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (stu[j].age > stu[j + 1].age) {
temp = stu[j];
stu[j] = stu[j + 1];
stu[j + 1] = temp;
}
}
}
for (int i = 0; i < n; i++) {
cout << stu[i].num << endl;
}
return 0;
}