用C语言利用结构体指针的知识编写程序实现以下功能: (1)从键盘输入5位学生一组信息,包括学号、姓名、C语言成绩; (2)按照C语言成绩从高到低打印学生信息。
时间: 2023-12-23 13:03:10 浏览: 89
编写程序,输入并保存5名学生的信息,计算出平均分,再按照成绩从高到低的顺序输出他们的信息。学生信息包括:学号、姓名、成绩。
好的,这个程序可以使用结构体指针来实现。下面是代码实现:
```c
#include <stdio.h>
#include <string.h>
struct student {
int id;
char name[20];
float score;
};
int main() {
struct student students[5];
struct student *p[5];
int i, j;
struct student *temp;
// 输入5位学生信息
for (i = 0; i < 5; i++) {
printf("请输入第%d位学生的信息:\n", i + 1);
printf("学号:");
scanf("%d", &students[i].id);
printf("姓名:");
scanf("%s", students[i].name);
printf("C语言成绩:");
scanf("%f", &students[i].score);
p[i] = &students[i];
}
// 冒泡排序
for (i = 0; i < 4; i++) {
for (j = 0; j < 4 - i; j++) {
if (p[j]->score < p[j + 1]->score) {
temp = p[j];
p[j] = p[j + 1];
p[j + 1] = temp;
}
}
}
// 按照C语言成绩从高到低打印学生信息
printf("\n学生信息如下:\n");
for (i = 0; i < 5; i++) {
printf("学号:%d\t姓名:%s\tC语言成绩:%.2f\n", p[i]->id, p[i]->name, p[i]->score);
}
return 0;
}
```
这个程序与前一个程序类似,只不过我们使用了结构体指针来操作结构体数组。首先,我们定义了一个 `student` 结构体和一个结构体指针数组 `p`,用来存储每个学生的地址。
在循环中,我们首先从键盘输入每个学生的信息,并将其存储到数组 `students` 中。接着,将每个学生的地址存储到指针数组 `p` 中。
接下来,我们使用冒泡排序算法对指针数组 `p` 进行排序,按照学生的C语言成绩从高到低排序。排序过程中,我们交换的是指针的值,而不是结构体的值。
最后,再次通过循环打印排序后的学生信息,使用指针访问每个学生的信息。
这个程序比较简单,但是它演示了如何使用结构体指针来操作结构体数组。
阅读全文