写几个个函数处理职工信息: 输人10个职工的姓名和职工号; 按职工号由小到大顺序排序,姓名顺序也随之调整; 要求输人一个职工号,用折半查找法找出该职工的姓名,从主函数输人要查找的职工号,输出该职工姓名。 程序的部分代码: #include <stdio.h> #include <string.h> #define N 10 int main() { void input(int[], char name[][8]); void sort(int[], char name[][8]); void search(int, int[], char name[][8]); int num[N], number; char name[N][8]; input(num, name); sort(num, name); scanf("%d", &number); search(number, num, name); return 0; } 输入 十个职员编号与姓名 需要查找的职员编号 输出 输出按职工号由小到大顺序排序。 输出通过编号查找到职工的姓名。如果没有找到,输出 “职工号 not been found.”
时间: 2024-01-20 22:02:25 浏览: 77
C语言实现职工信息管理
好的,根据你的要求,我来给你写一下处理职工信息的函数。具体实现过程如下:
```c
#include <stdio.h>
#include <string.h>
#define N 10
// 输入函数
void input(int num[], char name[][8]) {
int i;
for (i = 0; i < N; i++) {
scanf("%d %s", &num[i], name[i]);
}
}
// 排序函数
void sort(int num[], char name[][8]) {
int i, j, temp_num;
char temp_name[8];
for (i = 0; i < N - 1; i++) {
for (j = i + 1; j < N; j++) {
if (num[i] > num[j]) {
temp_num = num[i];
num[i] = num[j];
num[j] = temp_num;
strcpy(temp_name, name[i]);
strcpy(name[i], name[j]);
strcpy(name[j], temp_name);
}
}
}
}
// 查找函数
void search(int number, int num[], char name[][8]) {
int left = 0, right = N - 1, mid;
while (left <= right) {
mid = (left + right) / 2;
if (num[mid] == number) {
printf("%s\n", name[mid]);
return;
} else if (num[mid] > number) {
right = mid - 1;
} else {
left = mid + 1;
}
}
printf("职工号 not been found.\n");
}
// 主函数
int main() {
int num[N], number;
char name[N][8];
input(num, name);
sort(num, name);
for (int i = 0; i < N; i++) {
printf("%d %s\n", num[i], name[i]);
}
scanf("%d", &number);
search(number, num, name);
return 0;
}
```
代码中的 `input` 函数实现了输入职工的信息,包括职工号和姓名;`sort` 函数实现了按职工号由小到大顺序排序,姓名顺序也随之调整;`search` 函数实现了用折半查找法找出该职工的姓名;主函数中首先调用 `input` 和 `sort` 函数对输入的职工信息进行处理,并输出排序后的结果;然后从主函数中输入需要查找的职工号,调用 `search` 函数查找该职工号对应的姓名,并输出结果。
希望我的回答能够帮到你,如果你还有其他问题可以继续问我哦。
阅读全文