物联网23级1班10个学生成绩信息处理。 提示:学生成绩信息包括:学号、姓名、成绩1、成绩2等。 定义结构体数组完成存储学生成绩信息(线性结构顺序存储) 编程实现上述要求,实现对学生信息进行查询、排序等处理操作
时间: 2024-09-10 22:28:19 浏览: 136
JAVA学生信息与成绩管理系统
首先,我们需要定义一个结构体来存储每个学生的学号、姓名以及成绩信息。然后,创建一个结构体数组来存储10个学生的这些信息。最后,我们可以编写一些函数来实现查询和排序操作。
以下是一个简单的示例代码,实现这些功能:
```c
#include <stdio.h>
#include <string.h>
// 定义学生信息结构体
typedef struct {
int student_id;
char name[50];
float score1;
float score2;
} Student;
// 函数声明
void printStudent(Student s);
void sortStudents(Student students[], int n);
int main() {
// 创建一个包含10个学生信息的数组
Student students[10] = {
{1, "学生A", 80.5, 90.0},
{2, "学生B", 85.0, 92.5},
// ... 其他学生的数据
{10, "学生J", 75.0, 88.0}
};
// 查询第3个学生的信息
printStudent(students[2]);
// 对所有学生的成绩进行排序
sortStudents(students, 10);
// 打印排序后的学生信息
for(int i = 0; i < 10; i++) {
printStudent(students[i]);
}
return 0;
}
// 打印单个学生信息的函数
void printStudent(Student s) {
printf("学号:%d\n", s.student_id);
printf("姓名:%s\n", s.name);
printf("成绩1:%.2f\n", s.score1);
printf("成绩2:%.2f\n", s.score2);
printf("\n");
}
// 对学生数组按照平均成绩排序的函数
void sortStudents(Student students[], int n) {
for(int i = 0; i < n - 1; i++) {
for(int j = 0; j < n - i - 1; j++) {
float avgScoreJ = (students[j].score1 + students[j].score2) / 2;
float avgScoreJ1 = (students[j+1].score1 + students[j+1].score2) / 2;
if(avgScoreJ < avgScoreJ1) {
// 交换两个学生的信息
Student temp = students[j];
students[j] = students[j+1];
students[j+1] = temp;
}
}
}
}
```
在这段代码中,我们首先定义了一个`Student`结构体,然后在`main`函数中初始化了一个包含10个`Student`结构体的数组。接着,我们实现了`printStudent`函数来打印单个学生的信息,以及`sortStudents`函数来根据学生的平均成绩对整个数组进行排序。
阅读全文