C语言 用结构体给出5个职工的姓名及编号,将编号从小到大排序,相应职工姓名也同时调整
时间: 2024-03-14 21:44:51 浏览: 62
好的,针对你的问题,我可以提供以下 C 语言代码来解决:
```c
#include <stdio.h>
#include <string.h>
struct worker {
char name[20];
int id;
};
int main() {
int i, j, min_index;
struct worker temp;
struct worker workers[5] = {
{"Tom", 3},
{"Alice", 1},
{"Bob", 5},
{"David", 2},
{"Jane", 4}
};
// 使用选择排序算法将编号从小到大排序
for (i = 0; i < 4; i++) {
min_index = i;
for (j = i+1; j < 5; j++) {
if (workers[j].id < workers[min_index].id) {
min_index = j;
}
}
if (min_index != i) {
// 交换编号和姓名
temp = workers[i];
workers[i] = workers[min_index];
workers[min_index] = temp;
}
}
// 输出排序后的结果
printf("按编号从小到大排序后的结果:\n");
for (i = 0; i < 5; i++) {
printf("%d\t%s\n", workers[i].id, workers[i].name);
}
return 0;
}
```
这段代码定义了一个 `worker` 结构体,包含职工姓名和编号。在 `main` 函数中,我们定义了一个包含 5 个职工的数组,并使用选择排序算法将职工的编号从小到大排序。最后输出排序后的结果。
需要注意的是,为了保证职工姓名的对应关系不被打乱,我们在交换编号和姓名时也要同时进行交换。
阅读全文