用C语言编程,由键盘任意输入5个学生的姓名、学号、以及每一个学生的4门功课的成绩,分别计算他们的总分和均分,并将此表按总分的高低排序。
时间: 2023-06-06 12:05:21 浏览: 209
好的,这是一个关于计算学生成绩的问题,我会为您提供答案。
首先,我们需要定义一个学生结构体,并在其中包含姓名、学号和每门功课的成绩。然后,通过循环和输入函数,我们可以从键盘上获取五个学生的数据。
接着,我们可以使用数组来保存学生信息,并计算每个学生的总分和平均分。可以通过双重循环来对每个学生的每门课程进行遍历,然后求和并计算平均分。
最后,我们可以使用冒泡排序算法按照总分的高低对学生信息进行排序,并打印出表格。
以下是具体的C语言代码实现:
```c
#include <stdio.h>
#include <string.h>
// 定义学生结构体
struct Student {
char name[20]; // 姓名
char id[20]; // 学号
int score[4]; // 每门课程的成绩
int total; // 总分
float average; // 平均分
};
void bubbleSort(struct Student *stu, int n); // 冒泡排序
int main() {
struct Student stu[5];
int i, j;
// 输入学生数据
for(i = 0; i < 5; i++) {
printf("请输入第%d个学生的姓名:", i+1);
scanf("%s", stu[i].name);
printf("请输入该学生的学号:");
scanf("%s", stu[i].id);
for(j = 0; j < 4; j++) {
printf("请输入该学生的第%d门功课的成绩:", j+1);
scanf("%d", &stu[i].score[j]);
stu[i].total += stu[i].score[j]; // 计算总分
}
stu[i].average = stu[i].total / 4.0; // 计算平均分
}
bubbleSort(stu, 5); // 排序
// 打印表格
printf("姓名\t 学号\t 总分\t 平均分\n");
for(i = 0; i < 5; i++) {
printf("%s\t %s\t %d\t %.2f\n", stu[i].name, stu[i].id, stu[i].total, stu[i].average);
}
return 0;
}
// 冒泡排序函数
void bubbleSort(struct Student *stu, int n) {
int i, j;
for(i = 0; i < n-1; i++) {
for(j = 0; j < n-1-i; j++) {
if(stu[j].total < stu[j+1].total) {
struct Student tmp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = tmp;
}
}
}
}
```
运行上述代码后,您就可以在控制台上看到输入的五位学生数据,并按照总分的高低排序的表格。
阅读全文