提示:学生成绩信息包括:学号、姓名、成绩1、成绩2等。 定义结构体数组完成存储学生成绩信息(线性结构顺序存储) 编程实现上述要求,实现对学生信息进行查询、排序等处理操作
时间: 2024-09-21 07:13:30 浏览: 65
C语言:定义一个包含学生信息(学号,姓名,成绩)的顺序表和链表.zip
5星 · 资源好评率100%
在C语言中,你可以通过定义一个结构体来存储学生成绩信息,然后创建结构体数组来实现数据的线性结构顺序存储。首先,我们定义一个名为`Student`的结构体:
```c
typedef struct {
int student_id; // 学号
char name[50]; // 姓名
float score1; // 成绩1
float score2; // 成绩2
} Student;
```
接下来,你可以创建一个`Student`类型的数组来存储学生信息:
```c
#define NUM_OF_STUDENTS 10 // 假设有10位学生
Student students[NUM_OF_STUDENTS];
```
对于查询操作,可以编写函数如`find_student()`,输入学号并遍历数组查找对应的学生:
```c
void find_student(int id, Student students[], int size) {
for (int i = 0; i < size; i++) {
if (students[i].student_id == id) {
printf("学号:%d 姓名:%s 成绩1:%f 成绩2:%f\n",
students[i].student_id, students[i].name,
students[i].score1, students[i].score2);
return;
}
}
printf("未找到该学生。\n");
}
```
对于排序操作,如果需要按照成绩排序,可以使用选择排序或更高效的算法(如快速排序、归并排序),这里仅提供一个简单的冒泡排序示例:
```c
void sort_students(Student students[], int size) {
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - 1 - i; j++) {
if (students[j].score1 > students[j + 1].score1) {
// 交换分数较大的学生位置
Student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
}
```
阅读全文