#include<stdio.h>
#include<string.h>
void Show(int ids[], char names[][32], int len)
{
for (int i = 0; i < len; ++i)
{
printf("%d:%s\n", ids[i], names[i]);
}
puts("*************************");
}
void Input(int ids[], char names[][32], int len)
{
for (int i = 0; i < len; ++i)
{
printf("请录入第%d个员工的信息(编号:姓名):", i + 1);
scanf("%d:%s", &ids[i], names[i]);
}
}
void Sort(int ids[], int len, char names[][32])
{
int t;
char tn[32];
for (int i = 0; i < len - 1; ++i)
{
for (int j = 0; j < len - 1 - i; ++j)
{
if (ids[j] > ids[j + 1])
{
t = ids[j];
ids[j] = ids[j + 1];
ids[j + 1] = t;
strcpy(tn, names[j]);
strcpy(names[j], names[j + 1]);
strcpy(names[j + 1], tn);
}
}
}
}
void FindNameById(int ids[], char names[][32], int len, int id, char name[])
{
int begin = 0;
int end = len - 1;
int mid = (begin + end) / 2;
while (begin <= end)
{
if (ids[mid] > id) end = mid - 1;
else if (ids[mid] < id) begin = mid + 1;
else break;
mid = (begin + end) / 2;
}
if (begin <= end)
{
strcpy(name, names[mid]);
}
else
{
strcpy(name, "没找到!");
}
}
int main()
{
int ids[10];
char names[10][32];
int len = 10;
Input(ids, names, len);
Show(ids, names, len);
Sort(ids, 10, names);
Show(ids, names, len);
int id;
char name[32];
while (1)
{
printf("请输入要查找的员工编号:");
rewind(stdin);
scanf("%d", &id);
if (id == -1)
break;
FindNameById(ids, names, len, id, name);
printf("该员工姓名为:%s\n", name);
}
return 0;
}
/*
9527:张三
9137:李四
9000:王五
9001:大黄
9361:大华
9711:邹刚
9635:邵辉
9038:赵一
9225:大强
9111:如花
*/
图片示例: