学生成绩管理系统c语言编程
时间: 2024-03-12 11:41:28 浏览: 113
学生成绩管理系统是一个利用C语言编写的程序,通过链表、指针和封装函数等基本知识实现对学生信息的管理和操作[^1]。其中,一个功能是实现学生信息的排序,按照总成绩的降序排列,并打印所有学生的信息。
以下是一个示例代码,演示了如何实现学生成绩管理系统中的成绩排序功能:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义学生结构体
typedef struct Student {
char name[20];
int score;
struct Student* next;
} Student;
// 创建学生节点
Student* createStudent(char name[], int score) {
Student* student = (Student*)malloc(sizeof(Student));
strcpy(student->name, name);
student->score = score;
student->next = NULL;
return student;
}
// 添加学生节点到链表
void addStudent(Student** head, char name[], int score) {
Student* student = createStudent(name, score);
if (*head == NULL) {
*head = student;
} else {
Student* current = *head;
while (current->next != NULL) {
current = current->next;
}
current->next = student;
}
}
// 打印学生信息
void printStudents(Student* head) {
Student* current = head;
while (current != NULL) {
printf("Name: %s, Score: %d\n", current->name, current->score);
current = current->next;
}
}
// 按照总成绩降序排序
void sortStudents(Student** head) {
int swapped;
Student* current;
Student* last = NULL;
if (*head == NULL) {
return;
}
do {
swapped = 0;
current = *head;
while (current->next != last) {
if (current->score < current->next->score) {
// 交换节点
char tempName[20];
int tempScore;
strcpy(tempName, current->name);
tempScore = current->score;
strcpy(current->name, current->next->name);
current->score = current->next->score;
strcpy(current->next->name, tempName); current->next->score = tempScore;
swapped = 1;
}
current = current->next;
}
last = current;
} while (swapped);
}
int main() {
Student* head = NULL;
// 添加学生信息
addStudent(&head, "Alice", 85);
addStudent(&head, "Bob", 92);
addStudent(&head, "Charlie", 78);
addStudent(&head, "David", 95);
// 打印原始学生信息
printf("Original students:\n");
printStudents(head);
// 按照总成绩降序排序
sortStudents(&head);
// 打印排序后的学生信息
printf("\nSorted students:\n");
printStudents(head);
return 0;
}
```
这段代码演示了一个简单的学生成绩管理系统,通过创建学生节点、添加学生信息、打印学生信息和按照总成绩降序排序等功能来实现学生成绩的管理。
阅读全文