设有学生情况登记表,如下表所示,对该表按成绩降序排序。 注意: 1)采用结构体存储表中数据。 2)分别采用结构体数组和指针进行操作。 学号 姓名 年龄 成绩 1001 Zhang San 19 76.5 1002 Li Si 20 68.4 1003 Wang Wu 18 98.3 1004 Zhao Liu 19 99.4 1005 Sun Qi 20 87.2
时间: 2024-04-20 21:24:42 浏览: 69
好的,我明白了你的问题。为了按成绩降序排序学生情况登记表,我们可以使用结构体数组和指针进行操作。
首先,我们定义一个结构体来存储学生的信息:
```c
typedef struct {
int 学号;
char 姓名[20];
int 年龄;
float 成绩;
} 学生信息;
```
然后,我们创建一个结构体数组来存储学生情况登记表的数据:
```c
学生信息 学生表[] = {
{1001, "Zhang San", 19, 76.5},
{1002, "Li Si", 20, 68.4},
{1003, "Wang Wu", 18, 98.3},
{1004, "Zhao Liu", 19, 99.4},
{1005, "Sun Qi", 20, 87.2}
};
```
接下来,我们需要编写一个排序函数来按成绩降序排序学生情况登记表。这里我们使用冒泡排序算法:
```c
void 按成绩降序排序(学生信息 *表, int 数量) {
int i, j;
for (i = 0; i < 数量 - 1; i++) {
for (j = 0; j < 数量 - i - 1; j++) {
if (表[j].成绩 < 表[j + 1].成绩) {
学生信息 temp = 表[j];
表[j] = 表[j + 1];
表[j + 1] = temp;
}
}
}
}
```
最后,我们调用排序函数对学生情况登记表进行排序,并打印排序后的结果:
```c
int main() {
int 数量 = sizeof(学生表) / sizeof(学生信息);
按成绩降序排序(学生表, 数量);
printf("按成绩降序排序后的学生情况登记表:\n");
printf("学号\t姓名\t年龄\t成绩\n");
for (int i = 0; i < 数量; i++) {
printf("%d\t%s\t%d\t%.1f\n", 学生表[i].学号, 学生表[i].姓名, 学生表[i].年龄, 学生表[i].成绩);
}
return 0;
}
```
运行程序后,会按成绩降序排序并打印学生情况登记表的结果:
```
按成绩降序排序后的学生情况登记表:
学号 姓名 年龄 成绩
1004 Zhao Liu 19 99.4
1003 Wang Wu 18 98.3
1005 Sun Qi 20 87.2
1001 Zhang San 19 76.5
1002 Li Si 20 68.4
```
希望这个例子能帮助到你!如果你还有其他问题,请随时问我。
阅读全文