写几个函数: ①输入10个职员的姓名和职工号; ②按职工号由小到大顺序排序,姓名顺序也随之调整; ③要求输入一个职工号,用折半查找法找出该职工的姓名,从主函数输入要查找的职工号,输出该职工姓名。 用C语言
时间: 2024-06-14 09:03:19 浏览: 35
是的,根据引用[1]的描述,我们可以使用C语言来实现这些函数。下面是三个函数的实现:
①输入10个职员的姓名和职工号:
```c
#include <stdio.h>
#define MAX 10
struct Employee {
char name[20];
int id;
};
void input(struct Employee employees[]) {
for (int i = 0; i < MAX; i++) {
printf("请输入第%d个职员的姓名和职工号:", i + 1);
scanf("%s %d", employees[i].name, &employees[i].id);
}
}
```
②按职工号由小到大顺序排序,姓名顺序也随之调整:
```c
void sort(struct Employee employees[]) {
struct Employee temp;
for (int i = 0; i < MAX - 1; i++) {
for (int j = i + 1; j < MAX; j++) {
if (employees[i].id > employees[j].id) {
temp = employees[i];
employees[i] = employees[j];
employees[j] = temp;
}
}
}
}
```
③要求输入一个职工号,用折半查找法找出该职工的姓名,从主函数输入要查找的职工号,输出该职工姓名:
```c
int binarySearch(struct Employee employees[], int id) {
int left = 0, right = MAX - 1, mid;
while (left <= right) {
mid = (left + right) / 2;
if (employees[mid].id == id) {
return mid;
} else if (employees[mid].id > id) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}
void search(struct Employee employees[]) {
int id, index;
printf("请输入要查找的职工号:");
scanf("%d", &id);
index = binarySearch(employees, id);
if (index == -1) {
printf("未找到该职工!\n");
} else {
printf("职工姓名为:%s\n", employees[index].name);
}
}
```