题目: 写几个函数, ①输入10个职工的姓名和职工号 ②按照职工号由小到大排列, 姓名顺序也随之调整 ③要求输入一个职工号, 用折半查找找出该职工的姓名
#include<stdio.h>
#include<string.h>
#define MAX_EMPOLYEES 10
typedef struct {int id;char name[50];
} Employee;
void inputEmployees(Employee employees[], int n) {for (int i = 0; i < n; i++){printf("请输入第 %d 位职工的ID和姓名:", i + 1);scanf_s("%d %s", &employees[i].id, employees[i].name);}
}
void sortEmployees(Employee employees[], int n) {for (int i = 0; i < n - 1; i++){for (int j = 0; j < n - (i + 1); j++){if (employees[j].id > employees[j + 1].id) {Employee temp = employees[j];employees[j] = employees[j + 1];employees[j + 1] = temp;}}}
}
int binarySearch(Employee employees[], int n, int id) {int low = 0, high = n - 1;while (low <= high){int mid = low + (high + low) / 2;if (employees[mid].id == id) {return mid;}else if(employees[mid].id < id){low = mid + 1;}else{high = mid - 1;}}return -1;
}int main() {Employee employees[MAX_EMPOLYEES];inputEmployees(employees, MAX_EMPOLYEES);sortEmployees(employees, MAX_EMPOLYEES);printf("排序后的职工信息为:\n");for (int i = 0; i < MAX_EMPOLYEES; i++){printf("ID: %d, 姓名: %s\n", employees[i].id, employees[i].name);}int searchId;printf("请输入要查找的ID: ");scanf_s("%d", &searchId);int index = binarySearch(employees, MAX_EMPOLYEES, searchId);if (index != -1) {printf("找到:ID %d, 姓名 %s\n", employees[index].id, employees[index].name);}else{printf("未找到ID为 %d 的职工\n", searchId);}return 0;
}