输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。 输入格式: 输入第一行给出正整数n(<10)。随后n行,每行按照“姓名 生日 电话号码”的格式给出一位朋友的信息,其中“姓名”是长度不超过10的英文字母组成的字符串,“生日”是yyyymmdd格式的日期,“电话号码”是不超过17位的数字及+、-组成的字符串。 输出格式: 按照年龄从大到小输出朋友的信息,格式同输出。
时间: 2023-03-08 09:07:32 浏览: 122
答:根据题目要求,可以使用以下程序来实现:1.输入朋友的信息,将其存储在一个朋友列表中。
2.将朋友列表按照生日的大小进行排序,按照从大到小的顺序排列。
3.输出排序后的朋友列表,按照“姓名 生日 电话号码”的格式输出。
相关问题
python输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同
好的,我可以帮你解决这道题目。
你可以使用Python中的字典来存储每个朋友的信息,其中键为姓名,值为另一个字典,包含生日和电话号码两个键值对。
然后,你可以使用Python中的sorted函数,按照生日进行排序。但是由于我们是按照年龄从大到小排序,因此我们需要对生日进行转换,将其转换为距离现在的天数,然后按照距离现在的天数进行排序。
以下是完整的代码:
```python
from datetime import date
def days_between(d1, d2):
return (d2 - d1).days
n = int(input("请输入朋友的数量:"))
friends = {}
for i in range(n):
name = input("请输入姓名:")
birthday = input("请输入生日(格式为yyyy-mm-dd):")
phone = input("请输入电话号码:")
year, month, day = map(int, birthday.split('-'))
birthday_date = date(year, month, day)
days = days_between(birthday_date, date.today())
friends[name] = {'birthday': birthday, 'phone': phone, 'age': days}
sorted_friends = sorted(friends.items(), key=lambda x: x[1]['age'], reverse=True)
print("按照年龄从大到小的顺序依次输出通讯录:")
for friend in sorted_friends:
name = friend[0]
birthday = friend[1]['birthday']
phone = friend[1]['phone']
print(f"姓名: {name}, 生日: {birthday}, 电话号码: {phone}")
```
这个程序可以根据你输入的朋友信息,按照年龄从大到小的顺序输出通讯录。
C语言编程输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。
为了实现这个功能,你可以创建一个结构体来存储每个人的信息,并使用数组或者链表来存放这些数据。这里我将给出一个简单的基于数组的解决方案,使用冒泡排序算法对年龄进行降序排列。
首先,定义一个结构体`Person`来保存姓名、生日和电话号码:
```c
struct Person {
char name[50];
int birthday;
char phone_number[20];
};
```
接着,创建一个`Person`类型的数组,并读取n个人的信息:
```c
#define MAX_FRIENDS 100
struct Person friends[MAX_FRIENDS];
void input_friends(int n) {
for (int i = 0; i < n; i++) {
printf("请输入第%d位朋友的姓名(不超过49个字符):", i + 1);
fgets(friends[i].name, sizeof(friends[i].name), stdin); // 保留换行符
friends[i].name[strlen(friends[i].name) - 1] = '\0'; // 去除多余的换行符
printf("请输入第%d位朋友的生日(年份表示):", i + 1);
scanf("%d", &friends[i].birthday);
printf("请输入第%d位朋友的电话号码:", i + 1);
scanf("%s", friends[i].phone_number);
}
}
```
接下来,定义一个比较年龄的辅助函数用于冒泡排序:
```c
int compare_age(const void* a, const void* b) {
const struct Person* pa = (const struct Person*)a;
const struct Person* pb = (const struct Person*)b;
return pb->birthday - pa->birthday;
}
```
最后,使用`qsort`函数对数组进行排序,并遍历输出结果:
```c
void sort_and_output() {
qsort(friends, n, sizeof(struct Person), compare_age);
printf("\n按年龄从大到小排序后的通讯录:\n");
for (int i = 0; i < n; i++) {
printf("%s (%d岁): %s\n", friends[i].name, friends[i].birthday, friends[i].phone_number);
}
}
```
完整的主函数如下:
```c
int main() {
int n;
printf("请输入朋友的数量:");
scanf("%d", &n);
input_friends(n);
sort_and_output();
return 0;
}
```
运行这个程序后,它会要求用户输入朋友的数量和每个朋友的信息,然后按照年龄从大到小打印出通讯录。
阅读全文