在C语言中定义结构体,成员包括姓名和成绩,在主函数中定义结构体数组(含有五个元素)键盘赋值,对姓名成员进行降序排序,输出排序后的数组(两个成员都输出)
时间: 2024-03-25 17:38:19 浏览: 54
好的,以下是代码实现:
```c
#include <stdio.h>
#include <string.h>
struct Student {
char name[20];
int score;
};
void sort(struct Student arr[], int len) {
int i, j;
struct Student temp;
for (i = 0; i < len - 1; i++) {
for (j = i + 1; j < len; j++) {
if (strcmp(arr[i].name, arr[j].name) < 0) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
int main() {
struct Student stu[5];
int i;
printf("请输入五个学生的姓名和成绩:\n");
for (i = 0; i < 5; i++) {
scanf("%s %d", stu[i].name, &stu[i].score);
}
sort(stu, 5);
printf("排序后的结果为:\n");
for (i = 0; i < 5; i++) {
printf("姓名:%s\t成绩:%d\n", stu[i].name, stu[i].score);
}
return 0;
}
```
在上面的代码中,我首先定义了一个结构体 `Student`,其中包含了两个成员,分别是学生的姓名和成绩。然后我定义了一个 `sort` 函数,用来对结构体数组进行排序。在主函数中,我定义了一个 `stu` 数组,用来存储五个学生的信息。然后通过 `scanf` 函数从键盘读入每个学生的姓名和成绩,最后调用 `sort` 函数对学生的姓名进行降序排序,并输出排序后的结果。
需要注意的是,我在排序函数中使用了 `strcmp` 函数来比较字符串大小,这个函数需要在 `string.h` 头文件中进行声明。另外,输出的时候,我使用了 `\t` 来进行制表,使得输出的格式更加整齐。
阅读全文