c语言如何实现按姓名查询
时间: 2024-01-09 11:04:15 浏览: 23
要实现按姓名查询,需要使用数据结构来存储姓名和其他信息。可以使用结构体来存储每个人的信息,然后将结构体数组按照姓名进行排序。排序后,就可以使用二分查找算法来快速查找指定姓名的信息。
以下是一个示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_NAME_LEN 20
#define MAX_INFO_LEN 50
#define MAX_PERSONS 100
// 定义人员信息结构体
typedef struct {
char name[MAX_NAME_LEN];
char info[MAX_INFO_LEN];
} Person;
// 比较函数,用于排序
int cmp(const void* a, const void* b) {
return strcmp(((Person*)a)->name, ((Person*)b)->name);
}
int main() {
int n;
Person persons[MAX_PERSONS];
// 输入人员信息
printf("请输入人数:");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
printf("请输入第%d个人的姓名和信息:", i + 1);
scanf("%s%s", persons[i].name, persons[i].info);
}
// 按姓名排序
qsort(persons, n, sizeof(Person), cmp);
// 查询
char query[MAX_NAME_LEN];
printf("请输入要查询的姓名:");
scanf("%s", query);
Person* res = (Person*)bsearch(query, persons, n, sizeof(Person), cmp);
if (res) {
printf("%s的信息是:%s\n", res->name, res->info);
} else {
printf("未找到姓名为%s的人员信息\n", query);
}
return 0;
}
```
该示例代码中使用了结构体数组来存储人员信息,然后使用 `qsort()` 函数进行排序,并使用 `bsearch()` 函数进行二分查找。用户输入要查询的姓名后,程序会输出该姓名对应的信息,或者提示未找到该姓名对应的信息。