写几个函数:\n\n①输入10个职工的姓名和职工号;\n\n②按职工号由小到大顺序排列,姓名顺序也随之调整;\n\n③要求输入一个职工号,用折半查找找出该职工的姓名,从主函数输入要查找的职工号,输出该职工姓名。
时间: 2023-06-05 20:48:00 浏览: 118
职工结构体数组,从键盘输入N位职工信息,打印输出最高的工资
1. 输入函数:
void input(char name[][20], int num[]) {
for(int i=0; i<10; i++) {
printf("请输入第%d个职工的姓名和职工号:", i+1);
scanf("%s %d", name[i], &num[i]);
}
}
2. 排序函数:
void sort(char name[][20], int num[]) {
for(int i=0; i<9; i++) {
for(int j=i+1; j<10; j++) {
if(num[i] > num[j]) {
int temp = num[i];
num[i] = num[j];
num[j] = temp;
char temp_name[20];
strcpy(temp_name, name[i]);
strcpy(name[i], name[j]);
strcpy(name[j], temp_name);
}
}
}
}
3. 折半查找函数:
int binary_search(int num[], int target) {
int left = 0, right = 9;
while(left <= right) {
int mid = (left + right) / 2;
if(num[mid] == target) {
return mid;
} else if(num[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
主函数中调用以上三个函数,实现输入、排序和折半查找功能,并输出查找到的职工姓名。
阅读全文