本关任务: 写两个函数 1.输入10个职工的姓名和职工号 2.按职工号由小到大顺序排序,姓名顺序也随之调整 输入包括两行,姓名一行10个以空格隔开,职工号一行以空格隔开 输出也是两行,一行是排序后的姓名,一行是排序后的职工号 保证每个姓名长度不会超过10个字符 职工号都在int范围内 根据调用格式实现input和sort两个函数#include <stdio.h> char names[10][10]; int ids[10]; //names和ids是全局变量因此input函数和sort函数都能直接访问到 /******在这里写代码补全input函数和sort函数******/ /********************************************/ int main(void) { int order[10]; for (int i = 0; i < 10; ++i) { order[i] = i; } input(); sort(order); printf("%s", names[order[0]]); for (int i = 1; i < 10; ++i) { printf(" %s", names[order[i]]); } printf("\n"); for (int i = 0; i < 10; ++i) { printf("%d ", ids[i]); } return 0; }
时间: 2023-07-07 19:39:02 浏览: 137
以下是在给定C语言代码框架下的input和sort两个函数的实现:
```c
void input() {
for (int i = 0; i < 10; ++i) {
scanf("%s", names[i]);
}
for (int i = 0; i < 10; ++i) {
scanf("%d", &ids[i]);
}
}
void sort(int* order) {
for (int i = 0; i < 9; ++i) {
for (int j = i + 1; j < 10; ++j) {
if (ids[order[i]] > ids[order[j]]) {
int temp = order[i];
order[i] = order[j];
order[j] = temp;
}
}
}
}
```
其中,`input()`函数用于读取输入,将姓名和职工号分别存储在全局变量`names`和`ids`中;`sort()`函数用于按职工号排序,将排序后的员工索引存储在传入的`order`数组中。这里采用的是简单选择排序算法。
使用示例:
```c
int main(void) {
int order[10];
for (int i = 0; i < 10; ++i) {
order[i] = i;
}
input();
sort(order);
printf("%s", names[order[0]]);
for (int i = 1; i < 10; ++i) {
printf(" %s", names[order[i]]);
}
printf("\n");
for (int i = 0; i < 10; ++i) {
printf("%d ", ids[i]);
}
return 0;
}
```
注意,由于全局变量的存在,`input()`和`sort()`函数不需要返回任何值。在`main()`函数中,我们首先将员工索引初始化为0~9,然后调用`input()`和`sort()`函数,将排序后的员工索引存储在`order`数组中。最后,将排序后的姓名和职工号分别输出即可。
阅读全文