C语言编程: 构造一个表示通讯录中每个“记录”的数据类型,声明该类型的标识符。 编程,先输入n,再输入通讯录中若干个人的记录到结构体数组中,按电话号码的升序对结构体数组排序后输出。
时间: 2024-03-22 11:39:15 浏览: 73
下面是对应的 C 语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 20
#define MAX_PHONE_LEN 11
#define MAX_RECORDS 100
struct Record {
char name[MAX_NAME_LEN];
char phone[MAX_PHONE_LEN];
};
int cmp_record(const void *a, const void *b) {
return strcmp(((struct Record *)a)->phone, ((struct Record *)b)->phone);
}
int main() {
int n;
struct Record records[MAX_RECORDS];
printf("请输入记录数n:");
scanf("%d", &n);
// 输入记录
for (int i = 0; i < n; ++i) {
printf("请输入第%d个人的姓名和电话号码:", i + 1);
scanf("%s %s", records[i].name, records[i].phone);
}
// 按电话号码排序
qsort(records, n, sizeof(struct Record), cmp_record);
// 输出记录
printf("按电话号码排序后的通讯录:\n");
for (int i = 0; i < n; ++i) {
printf("%s\t%s\n", records[i].name, records[i].phone);
}
return 0;
}
```
在这个程序中,我们首先定义了一个 `Record` 结构体,用来表示每个通讯录记录。然后在 `main` 函数中,先输入记录数 `n`,再输入每个人的姓名和电话号码,存储到结构体数组 `records` 中。
接着,我们使用标准库函数 `qsort` 对结构体数组 `records` 进行排序,排序的关键字是电话号码。我们还需要定义一个比较函数 `cmp_record`,它的作用是告诉 `qsort` 如何比较两个记录的大小。
最后,我们按顺序输出排序后的通讯录记录。
阅读全文