c语言编程输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。
时间: 2024-09-26 19:08:39 浏览: 35
为了实现这个功能,你可以使用结构体来存储每个人的姓名、生日和电话号码,然后创建一个结构体数组来存储这些信息,并通过比较年龄来排序。下面是一个简单的示例:
```c
#include <stdio.h>
#include <string.h> // 使用strcmp函数进行字符串比较
// 定义一个人的数据结构
typedef struct {
char name[50];
int birthday; // 假设生日是年份,可以根据需求转换为日期或者其他形式
char phone_number[20];
} Person;
// 比较两个Person结构体按年龄从小到大的顺序
int compare_age(const void* a, const void* b) {
Person* p1 = (Person*)a;
Person* p2 = (Person*)b;
return p2->birthday - p1->birthday;
}
void print_oldest_to_youngest(Person people[], int n) {
qsort(people, n, sizeof(Person), compare_age); // 排序
for (int i = 0; i < n; i++) {
printf("%s, 生日: %d, 电话: %s\n", people[i].name, people[i].birthday, people[i].phone_number);
}
}
int main() {
int num_of_friends;
printf("请输入朋友的数量:");
scanf("%d", &num_of_friends);
Person friends[num_of_friends]; // 创建数组存储信息
// 循环获取每个朋友的信息并存入结构体
for (int i = 0; i < num_of_friends; i++) {
printf("请输入第%d位朋友的名字:", i + 1);
scanf("%s", friends[i].name);
printf("请输入第%d位朋友的生日:", i + 1);
scanf("%d", &friends[i].birthday);
printf("请输入第%d位朋友的电话号码:", i + 1);
scanf("%s", friends[i].phone_number);
}
print_oldest_to_youngest(friends, num_of_friends);
return 0;
}
阅读全文