用c语言编程通讯录排序。建立一个通讯录的结构记录,包括姓名、生日、电话号码。输入n(n<10)个朋友的信息,再按他们的年龄从大到小的顺序依次输出其信息。
时间: 2023-11-27 18:50:24 浏览: 165
C语言等多种方式实现通讯录排序
以下是用C语言编写的通讯录排序代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义通讯录结构体
struct contact {
char name[20];
char birthday[20];
char phone[12];
int age;
};
// 比较函数,用于qsort排序
int cmp(const void *a, const void *b) {
struct contact *c1 = (struct contact *)a;
struct contact *c2 = (struct contact *)b;
return c2->age - c1->age;
}
int main() {
int n;
struct contact contacts[10];
// 输入n个朋友的信息
printf("请输入朋友的数量(n<10):");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
printf("请输入第%d个朋友的姓名:", i + 1);
scanf("%s", contacts[i].name);
printf("请输入第%d个朋友的生日:", i + 1);
scanf("%s", contacts[i].birthday);
printf("请输入第%d个朋友的电话号码:", i + 1);
scanf("%s", contacts[i].phone);
// 计算年龄
int year = atoi(contacts[i].birthday);
int age = 2022 - year;
contacts[i].age = age;
}
// 按年龄从大到小排序
qsort(contacts, n, sizeof(struct contact), cmp);
// 输出排序后的通讯录
printf("按年龄从大到小排序后的通讯录:\n");
for (int i = 0; i < n; i++) {
printf("%s\t%s\t%s\t%d\n", contacts[i].name, contacts[i].birthday, contacts[i].phone, contacts[i].age);
}
return 0;
}
```
这个程序会先要求输入朋友的数量,然后逐个输入每个朋友的姓名、生日和电话号码。程序会自动计算每个朋友的年龄,并按照年龄从大到小排序。最后输出按照年龄从大到小排序后的通讯录。
阅读全文