用C++编写程序:由键盘任意输入5个学生的姓名、学号、以及每一个学生的4门功课的成绩,分别计算他们的总分和均分,并将此表按总分的高低排序。
时间: 2024-05-29 13:09:20 浏览: 56
没问题,我可以回答你的问题。
以下是你要求的 C 代码实现:
#include <stdio.h>
#include <string.h>
struct student {
char name[20];
char id[10];
float score[4];
float sum;
float avg;
};
int main() {
struct student stu[5];
int i, j;
float tmp_sum;
char tmp_name[20], tmp_id[10];
printf("请依次输入每个学生的姓名、学号以及4门功课的成绩:\n");
for (i = 0; i < 5; i++) {
printf("请输入第%d个学生的信息:\n", i+1);
scanf("%s %s %f %f %f %f", stu[i].name, stu[i].id, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2], &stu[i].score[3]);
stu[i].sum = 0;
for (j = 0; j < 4; j++) {
stu[i].sum += stu[i].score[j];
}
stu[i].avg = stu[i].sum / 4.0;
}
for (i = 0; i < 4; i++) {
for (j = i+1; j < 5; j++) {
if (stu[i].sum < stu[j].sum) {
tmp_sum = stu[i].sum;
stu[i].sum = stu[j].sum;
stu[j].sum = tmp_sum;
strcpy(tmp_name, stu[i].name);
strcpy(stu[i].name, stu[j].name);
strcpy(stu[j].name, tmp_name);
strcpy(tmp_id, stu[i].id);
strcpy(stu[i].id, stu[j].id);
strcpy(stu[j].id, tmp_id);
}
}
}
printf("按总分高低排序的结果如下:\n");
printf("姓名\t学号\t成绩1\t成绩2\t成绩3\t成绩4\t总分\t均分\n");
for (i = 0; i < 5; i++) {
printf("%s\t%s\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n", stu[i].name, stu[i].id, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].score[3], stu[i].sum, stu[i].avg);
}
return 0;
}
希望这个代码能够符合你的要求。
阅读全文