c语言10.由键盘任意输入5个学生的姓名 学号 以及每一个学生的4门功课的成绩,分别计算 他们的总分和均分,并将此表按总分的高低排序。
时间: 2023-06-08 10:05:10 浏览: 138
好的,你可以参考以下代码实现:
```c
#include <stdio.h>
#include <string.h> // 使用字符串相关函数需要引入这个头文件
#define N 5 // 学生个数
#define M 4 // 课程数
struct student {
char name[20];
int id;
int score[M];
int total_score;
float average_score;
};
int main() {
struct student stu[N];
int i, j, k;
float sum;
struct student temp;
// 输入信息并计算总分和均分
for (i = 0; i < N; i++) {
printf("请输入第 %d 个学生的姓名 学号:", i + 1);
scanf("%s %d", stu[i].name, &stu[i].id);
sum = 0;
for (j = 0; j < M; j++) {
printf("请输入第 %d 个学生的第 %d 门功课成绩:", i + 1, j + 1);
scanf("%d", &stu[i].score[j]);
sum += stu[i].score[j];
}
stu[i].total_score = (int)sum;
stu[i].average_score = sum / M;
}
// 按总分排序
for (i = 0; i < N - 1; i++) {
k = i;
for (j = i + 1; j < N; j++) {
if (stu[j].total_score > stu[k].total_score) {
k = j;
}
}
if (k != i) {
temp = stu[k];
stu[k] = stu[i];
stu[i] = temp;
}
}
// 输出表格
printf("姓名\t学号\t总分\t均分\n");
for (i = 0; i < N; i++) {
printf("%s\t%d\t%d\t%.2f\n", stu[i].name, stu[i].id, stu[i].total_score, stu[i].average_score);
}
return 0;
}
```
在代码中,使用结构体 `student` 存储每个学生的姓名、学号、四门功课的成绩、总分和均分。先输入每个学生的信息并计算总分和均分,再通过选择排序按总分从高到低排序,最后输出表格。
阅读全文