1、简介
将允许用户输入学生的姓名和三科成绩(Java、C、ASP),计算总分和平均分,并按照总分降序对学生进行排序。
2、程序功能
- 输入学生信息:姓名和三科成绩。
- 计算总分和平均分。
- 按总分降序排序学生信息。
- 打印排序后的学生信息。
3、代码实现
#include <stdio.h>
#include <string.h>
//输入 三科成绩(java c asp) 总分排名 和平均分
// 定义结构体,包含三科成绩、总分和平均分
struct Student {
char name[12];
int scores[3];
int sum; // 总分
float average; // 平均分
};
// 按照总分降序排序
void bubbleSort(struct Student students[], int n) {
int i, j;
for (i = 0; i < n; i++) {
for (j = 0; j < n - 1; j++) {
if (students[j].sum < students[j + 1].sum) {
// 交换两个学生的总分、平均分、成绩和姓名
struct Student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
}
int main() {
int n, i, j;
printf("请输入学生人数:");
scanf("%d", &n);
struct Student students[n];
for (i = 0; i < n; i++) {
printf("请输入第%d位学生的姓名:", i + 1);
scanf("%s", students[i].name);
printf("请输入%s、%s和%s的成绩:", "Java", "C", "ASP");
for (j = 0; j < 3; j++) {
scanf("%d", &students[i].scores[j]);
}
// 计算总分和平均分
students[i].sum = 0;
for (j = 0; j < 3; j++) {
students[i].sum += students[i].scores[j];
}
students[i].average = (float)students[i].sum / 3;
}
bubbleSort(students, n);
printf("按总分降序排列的学生信息:\n");
for (i = 0; i < n; i++) {
printf("%s: 总分 = %d, 平均分 = %.2f\n", students[i].name, students[i].sum, students[i].average);
}
return 0;
}
4、代码解释
- 结构体定义:定义了一个
Student
结构体,包含学生的姓名、三科成绩、总分和平均分。 - 输入学生信息:通过循环让用户输入每个学生的姓名和三科成绩。
- 计算总分和平均分:对于每个学生,计算其总分和平均分。
- 排序函数:使用冒泡排序算法按照总分降序对学生数组进行排序。
- 输出排序结果:打印排序后的学生信息,包括姓名、总分和平均分。