用C语言建立一个简单的学生成绩表,要求能够完成学生成绩的录入、总成绩的计算、学生成绩的查询和成绩表的排序操作。
时间: 2024-09-18 08:09:24 浏览: 74
基于EasyX和C语言的可视化学生成绩管理系统
5星 · 资源好评率100%
在C语言中,你可以创建一个结构体来表示学生的信息,包括姓名和各科成绩,然后结合数组或动态内存分配来构建一个简单的成绩表。以下是一个基本的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义学生成绩结构体
typedef struct {
char name[50];
int scores[5]; // 假设最多5门课程
} Student;
void input_score(Student *student) {
printf("请输入学生%s的成绩:\n", student->name);
for (int i = 0; i < 5; i++) {
scanf("%d", &student->scores[i]);
}
}
double total_score(Student *student) {
double sum = 0;
for (int i = 0; i < 5; i++) {
if (student->scores[i] > 0) { // 防止负数影响总分
sum += student->scores[i];
}
}
return sum;
}
void search_score(const Student *student, const char *search_name) {
if (strcmp(student->name, search_name) == 0) {
printf("学生 %s 的总成绩为: %.2f\n", search_name, total_score(student));
} else {
printf("未找到该学生。\n");
}
}
void sort_students(Student students[], int size) {
// 使用冒泡排序或其他适当的算法对成绩表进行排序
// 这里仅作简单示例,实际应用中会更复杂
for(int i=0; i<size-1; i++) {
for(int j=0; j<size-i-1; j++) {
if(students[j].total_score > students[j+1].total_score) {
Student temp = students[j];
students[j] = students[j+1];
students[j+1] = temp;
}
}
}
}
int main() {
Student students[3]; // 创建一个包含3个学生的数组
int num_students;
printf("请输入学生人数:");
scanf("%d", &num_students);
for(int i = 0; i < num_students; i++) {
input_score(&students[i]);
}
printf("\n现在按总成绩排序:\n");
sort_students(students, num_students);
// 搜索和显示成绩
char search_name[50];
printf("请输入搜索的学生名字:");
scanf("%s", search_name);
for (int i = 0; i < num_students; i++) {
search_score(&students[i], search_name);
}
return 0;
}
```
这个程序实现了输入成绩、计算总成绩、搜索特定学生以及按照总成绩排序的功能。请注意,在实际项目中,可能会需要考虑更多的边界条件和错误处理。
阅读全文