网站制作成app,凡客诚品科技有限公司,域名查询入口,百度免费打开题目#xff1a; 写几个函数#xff0c; ①输入10个职工的姓名和职工号 ②按照职工号由小到大排列#xff0c; 姓名顺序也随之调整 ③要求输入一个职工号#xff0c; 用折半查找找出该职工的姓名
#includestdio.h
#includestring.h
#define MAX_EMPOLYEES…题目 写几个函数 ①输入10个职工的姓名和职工号 ②按照职工号由小到大排列 姓名顺序也随之调整 ③要求输入一个职工号 用折半查找找出该职工的姓名
#includestdio.h
#includestring.h
#define MAX_EMPOLYEES 10//定义职工结构体
typedef struct {int id;char name[50];
} Employee;/// summary
/// 输入职工信息
/// /summary
/// param nameemployees职工结构体数组/param
/// param namen职工数量/param
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);}
}/// summary
/// 按照职工号由小到大排序, 姓名顺序也随之调整
/// /summary
/// param nameemployees职工结构体数组/param
/// param namen职工数/param
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;}}}
}/// summary
/// 使用折半查找根据职工id查找出职工的姓名
/// /summary
/// param nameemployees职工结构体数组/param
/// param namen职工数/param
/// param nameid职工号/param
/// returns/returns
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;
}