对结构体数组按某个关键字排序,程序中已通过结构体定义了学生的学号、姓名、成绩,并给出了初始数据,函数fun的功能是:按姓名的字典顺序从小到大排序,在划线处填写相应的代码。 点击复制后,将打开C知道体验页
时间: 2023-06-23 20:08:12 浏览: 45
以下是代码实现:
```c
#include <stdio.h>
#include <string.h>
struct student {
char id[10];
char name[20];
int score;
};
void fun(struct student s[], int n) {
int i, j;
struct student temp;
for(i = 0; i < n - 1; i++) {
for(j = 0; j < n - i - 1; j++) {
if(strcmp(s[j].name, s[j + 1].name) > 0) {
temp = s[j];
s[j] = s[j + 1];
s[j + 1] = temp;
}
}
}
}
int main() {
struct student s[5] = {
{"001", "Tom", 78},
{"002", "Jerry", 85},
{"003", "Alice", 92},
{"004", "Bob", 67},
{"005", "David", 80}
};
int i;
printf("排序前:\n");
for(i = 0; i < 5; i++) {
printf("%s %s %d\n", s[i].id, s[i].name, s[i].score);
}
fun(s, 5);
printf("排序后:\n");
for(i = 0; i < 5; i++) {
printf("%s %s %d\n", s[i].id, s[i].name, s[i].score);
}
return 0;
}
```
程序中使用结构体存储学生信息,其中包括学号、姓名、成绩。使用函数fun对学生信息按姓名字典顺序从小到大排序,排序算法采用冒泡排序。排序前后,分别输出学生信息。