用c英语写出写几个函数: ①输人10个职工的姓名和职工号; ②按职工号由小到大顺序排序,姓名顺序也随之调整, ③要求输人一个职工号,用折半查找法找出该职工的姓名,从主函数输人要查找的面工号,输出该职工姓名。并带有解释
时间: 2024-05-06 11:18:01 浏览: 79
以下是用C语言实现的三个函数,包括输入10个职工的姓名和职工号、按职工号排序和折半查找职工姓名。
1. 输入10个职工的姓名和职工号:
```c
void input_employee_info(char names[][20], int ids[]) {
for (int i = 0; i < 10; i++) {
printf("请输入第%d个职工的姓名和职工号:", i+1);
scanf("%s %d", names[i], &ids[i]);
}
}
```
这个函数使用了一个二维字符数组存储姓名,一个整型数组存储职工号。通过循环10次,分别输入每个职工的姓名和职工号。
2. 按职工号由小到大顺序排序,姓名顺序也随之调整:
```c
void sort_employee_info(char names[][20], int ids[]) {
int i, j, temp_id;
char temp_name[20];
for (i = 0; i < 9; i++) {
for (j = i+1; j < 10; j++) {
if (ids[i] > ids[j]) {
temp_id = ids[i];
ids[i] = ids[j];
ids[j] = temp_id;
strcpy(temp_name, names[i]);
strcpy(names[i], names[j]);
strcpy(names[j], temp_name);
}
}
}
}
```
这个函数使用了选择排序的思想,按职工号由小到大顺序排列,并且姓名顺序也随之调整。通过比较职工号的大小,交换职工号和姓名的位置。
3. 折半查找职工姓名:
```c
void search_employee_name(char names[][20], int ids[], int id) {
int low = 0, high = 9, mid;
while (low <= high) {
mid = (low + high) / 2;
if (ids[mid] == id) {
printf("职工号为%d的职工姓名为%s。\n", id, names[mid]);
return;
} else if (ids[mid] > id) {
high = mid - 1;
} else {
low = mid + 1;
}
}
printf("无法找到职工号为%d的职工。\n", id);
}
```
这个函数使用了折半查找法,在排序好的职工号数组中查找目标职工号,并输出其对应的姓名。如果查找不到,输出无法找到职工号的提示。
阅读全文