使用结构型建立一个朋友的通讯录,包括他们的姓名、生日、电话号码。输入n(n<10)个朋友的信息,按照他们的年龄从大到小的顺序依次显示他们的信息。用C语言编写相应程序。
时间: 2023-05-31 17:02:39 浏览: 132
Android实现通讯录效果——获取手机号码和姓名
5星 · 资源好评率100%
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义朋友结构体
typedef struct {
char name[20]; // 姓名
char birthday[20]; // 生日
char phone[20]; // 电话号码
} Friend;
// 定义比较函数,用于qsort排序
int cmp(const void *a, const void *b) {
Friend *fa = (Friend *)a;
Friend *fb = (Friend *)b;
int lena = strlen(fa->birthday);
int lenb = strlen(fb->birthday);
if (lena != lenb) { // 生日字符串长度不同,直接比较长度
return lena - lenb;
} else { // 生日字符串长度相同,按照字典序比较
return strcmp(fa->birthday, fb->birthday);
}
}
int main() {
int n;
printf("请输入朋友的数量:");
scanf("%d", &n);
// 动态分配内存,存储朋友信息
Friend *friends = (Friend *)malloc(n * sizeof(Friend));
// 输入朋友信息
for (int i = 0; i < n; i++) {
printf("请输入第%d个朋友的姓名、生日和电话号码:", i + 1);
scanf("%s %s %s", friends[i].name, friends[i].birthday, friends[i].phone);
}
// 按照生日从大到小排序
qsort(friends, n, sizeof(Friend), cmp);
// 输出朋友信息
printf("按照年龄从大到小的顺序依次显示朋友信息:\n");
for (int i = 0; i < n; i++) {
printf("%s %s %s\n", friends[i].name, friends[i].birthday, friends[i].phone);
}
// 释放动态分配的内存
free(friends);
return 0;
}
阅读全文