Visual Stdio6.0c++编写建立一个通信录,通信录的结构记录包括:姓名、生日、电话号码;其中生日又包括三项:年、月、日。编写程序,定义一个嵌套的结构类型,输入n(n<10)个联系人的信息,再按他们的年龄从大到小的顺序依次输出其信息。试编写相应程序。
时间: 2024-03-09 22:47:07 浏览: 178
好的,这道题目需要用到结构体,下面是代码实现:
```cpp
#include <iostream>
#include <string>
using namespace std;
// 定义生日结构体类型
struct Birthday {
int year;
int month;
int day;
};
// 定义通讯录结构体类型
struct Contact {
string name;
Birthday birthday;
string phone;
};
int main() {
int n;
cout << "请输入联系人数量 n(n<10):";
cin >> n;
// 定义联系人数组
Contact contacts[n];
// 输入联系人信息
for (int i = 0; i < n; i++) {
cout << "请输入联系人 " << i + 1 << " 的姓名:";
cin >> contacts[i].name;
cout << "请输入联系人 " << i + 1 << " 的生日(格式为yyyy/mm/dd):";
scanf("%d/%d/%d", &contacts[i].birthday.year, &contacts[i].birthday.month, &contacts[i].birthday.day);
cout << "请输入联系人 " << i + 1 << " 的电话号码:";
cin >> contacts[i].phone;
}
// 计算联系人年龄并排序
Contact temp;
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
// 计算年龄(以年为单位)
int age1 = 2021 - contacts[i].birthday.year;
int age2 = 2021 - contacts[j].birthday.year;
if (age1 < age2) {
temp = contacts[i];
contacts[i] = contacts[j];
contacts[j] = temp;
}
}
}
// 输出联系人信息
cout << "按年龄从大到小输出联系人信息:" << endl;
for (int i = 0; i < n; i++) {
cout << "姓名:" << contacts[i].name << ",生日:" << contacts[i].birthday.year << "/" << contacts[i].birthday.month << "/" << contacts[i].birthday.day << ",电话号码:" << contacts[i].phone << endl;
}
return 0;
}
```
这里我们定义了两个结构体类型,一个表示生日,一个表示通讯录记录。在主函数中,我们首先输入联系人数量,然后定义联系人数组,接着输入每个联系人的姓名、生日和电话号码。输入完成后,我们需要对联系人按照年龄从大到小排序,排序的方法是计算每个联系人的年龄,然后进行冒泡排序。最后,按照排序好的顺序输出联系人的信息即可。
注意,以上代码中没有进行输入数据的合法性检查,实际开发中需要加上这部分代码。
阅读全文