用c语言从键盘输入学生5门课程的成绩,计算总成绩并根据成绩高低依次排列,保留小数点后两位
时间: 2024-10-25 20:06:22 浏览: 104
C语言课程设计-学生成绩管理课程设计
在C语言中,我们可以创建一个简单的程序来完成这个任务。首先,我们需要定义结构体来存储学生的信息,包括姓名和五门课的成绩。然后我们通过`scanf`函数获取用户输入,计算总成绩,并使用选择排序算法对学生成绩进行排序。以下是程序的大致步骤:
```c
#include <stdio.h>
#include <string.h>
// 定义结构体存放学生信息
struct Student {
char name[50];
float scores[5];
};
// 计算总成绩
float calculate_total(struct Student s) {
float total = 0;
for (int i = 0; i < 5; i++) {
total += s.scores[i];
}
return total;
}
// 比较两个学生的总成绩
int compare_students(const void *a, const void *b) {
struct Student *s1 = a, *s2 = b;
return (s1->total > s2->total) ? -1 : (s1->total < s2->total) ? 1 : 0;
}
// 主函数
void main() {
struct Student students[10]; // 假设最多有10名学生
int num_students;
printf("请输入学生人数: ");
scanf("%d", &num_students);
if (num_students > 10) {
printf("学生人数过多,只能处理10名。\n");
num_students = 10;
}
for (int i = 0; i < num_students; i++) {
// 获取学生姓名
printf("请输入第%d名学生的姓名: ", i + 1);
fgets(students[i].name, sizeof(students[i].name), stdin);
// 清除换行符
students[i].name[strlen(students[i].name) - 1] = '\0';
// 输入5门课的成绩
for (int j = 0; j < 5; j++) {
printf("请输入第%d门课程的成绩: ", j + 1);
scanf("%f", &students[i].scores[j]);
}
// 计算并保存总成绩
students[i].total = calculate_total(&students[i]);
// 排序
qsort(students, num_students, sizeof(struct Student), compare_students);
}
printf("\n按总成绩排名:\n");
for (int i = 0; i < num_students; i++) {
printf("%d. %s 总成绩: %.2f\n", i + 1, students[i].name, students[i].total);
}
}
```
阅读全文