C语言用键盘输入5个学生的姓名、学号、以及每一个学生的4门功课的成绩,分别计算他们的总分和均分,并将此表按总分的高低排序
时间: 2023-06-11 21:04:29 浏览: 152
好的,我可以帮您答疑解惑。这个问题需要用到C语言的数组和排序算法,我给您提供一份参考代码如下:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 5 // 学生总数
#define M 4 // 科目总数
struct student {
char name[20]; // 学生姓名
char id[10]; // 学生学号
float score[M]; // 学生4门功课成绩
float total; // 学生总分
float average; // 学生平均分
};
void sort(struct student stu[], int n); // 声明排序函数
int main() {
struct student stu[N];
int i, j;
for (i=0; i<N; i++) {
printf("请输入第%d个学生的姓名、学号和4门功课的成绩:\n", i+1);
scanf("%s %s", stu[i].name, stu[i].id);
getchar(); // 过滤掉换行符
for (j=0; j<M; j++) {
scanf("%f", &stu[i].score[j]);
stu[i].total += stu[i].score[j];
}
stu[i].average = stu[i].total / M;
}
sort(stu, N); // 排序
// 输出表格
printf("姓名\t 学号\t 总分\t 平均分\n");
for (i=0; i<N; i++) {
printf("%s\t %s\t %.1f\t %.1f\n", stu[i].name, stu[i].id, stu[i].total, stu[i].average);
}
return 0;
}
void sort(struct student stu[], int n) {
int i, j;
struct student temp;
for (i=0; i<n-1; i++) {
for (j=0; j<n-1-i; j++) {
if (stu[j].total < stu[j+1].total) {
temp = stu[j];
stu[j] = stu[j+1];
stu[j+1] = temp;
}
}
}
}
```
这个程序可以让您输入5个学生的姓名、学号和4门功课的成绩,然后计算他们的总分和均分,并将此表按总分的高低排序,最后输出一个表格。希望能够帮到您!
阅读全文