当前位置:首页 考试管理 考试成绩 c语言如何用顺序表存放学生成绩

c语言如何用顺序表存放学生成绩

发布时间:2025-05-14 08:32:38

在C语言中,使用顺序表存储学生成绩通常涉及以下步骤:

一、定义学生成绩结构体

c语言如何用顺序表存放学生成绩

首先,需要定义一个结构体来存储每个学生的信息。例如:

```c

typedef struct {

int id;// 学号

char name; // 姓名

float math_score; // 数学成绩

float english_score; // 英语成绩

float average_score; // 平均成绩

} Student;

```

二、初始化顺序表

定义一个固定大小的数组来存储学生信息:

```c

define MAX_STUDENTS 100

Student students[MAX_STUDENTS];

int student_count = 0; // 当前学生数量

```

三、实现基本操作

添加学生信息

输入学号、姓名、数学成绩、英语成绩,计算平均成绩后插入到数组末尾或指定位置。

```c

void addStudent() {

Student new_student;

scanf("%d %s %f %f", &new_student.id, new_student.name, &new_student.math_score, &new_student.english_score);

new_student.average_score = (new_student.math_score + new_student.english_score) / 2;

students[student_count++] = new_student;

}

```

c语言如何用顺序表存放学生成绩

删除学生信息

根据学号查找学生,存在则删除并移动后续元素。

```c

void deleteStudent(int id) {

for (int i = 0; i < student_count; i++) {

if (students[i].id == id) {

for (int j = i; j < student_count - 1; j++) {

students[j] = students[j + 1];

}

student_count--;

break;

}

}

}

```

查找学生信息

根据学号查找学生,存在则输出所有信息,不存在则提示。

```c

void findStudentById(int id) {

for (int i = 0; i < student_count; i++) {

if (students[i].id == id) {

printf("学号: %d, 姓名: %s, 数学: %.2f, 英语: %.2f, 平均: %.2f

", students[i].id, students[i].name, students[i].math_score, students[i].english_score, students[i].average_score);

return;

}

}

printf("不存在此学号的学生

");

}

```

按平均成绩排序

使用冒泡排序按平均成绩降序排列。

```c

void sortStudents() {

for (int i = 0; i < student_count - 1; i++) {

for (int j = 0; j < student_count - i - 1; j++) {

if (students[j].average_score < students[j + 1].average_score) {

Student temp = students[j];

students[j] = students[j + 1];

students[j + 1] = temp;

}

}

}

}

```

c语言如何用顺序表存放学生成绩

四、数据持久化(可选)

将顺序表中的数据保存到文件,并在程序启动时加载:

```c

void saveToFile() {

FILE *file = fopen("students.txt", "wb");

for (int i = 0; i < student_count; i++) {

fprintf(file, "%d %s %.2f %.2f %.2f

", students[i].id, students[i].name, students[i].math_score, students[i].english_score, students[i].average_score);

}

fclose(file);

}

void loadFromFile() {

FILE *file = fopen("students.txt", "rb");

if (file) {

student_count = 0;

while (fscanf(file, "%d %s %.2f %.2f %.2f

", &students[student_count].id, students[student_count].name, &students[student_count].math_score, &students[student_count].english_score, &students[student_count].average_score) == 5) {

student_count++;

}

fclose(file);

}

}

```

五、主函数示例

```c

int main() {

int choice;

do {

printf("学生成绩管理系统

");

printf("1. 添加学生信息

");

printf("2. 显示所有学生信息

");

printf("3. 按学号查找学生信息

");

printf("4. 删除学生信息

温馨提示:
本文【c语言如何用顺序表存放学生成绩】由作者 吴老师 提供。 该文观点仅代表作者本人, 学习笔 信息发布平台,仅提供信息存储空间服务, 若存在侵权问题,请及时联系管理员或作者进行删除。
本站内容仅供参考,本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
Copyright © All Right Reserved
粤ICP备15053566号-4