输入n个学生的姓名及其3门功课成绩,要求按输入的逆序逐行输出每个学生的姓名、3门课成绩和平均成绩。若有学生平均成绩低于60分,则不输出该学生信息。
时间: 2023-12-17 18:04:40 浏览: 15
好的,这是一个关于成绩统计的问题。以下是解答:
输入n个学生的姓名及其3门功课成绩,要求按输入的逆序逐行输出每个学生的姓名、3门课成绩和平均成绩。若有学生平均成绩低于60分,则不输出该学生信息。
解答:
可以使用一个结构体来表示每个学生的信息,包括姓名、3门课成绩和平均成绩。首先读入学生数量n,然后循环读入每个学生的信息。在读入每个学生的信息时,可以先计算其平均成绩,如果低于60分,则不输出该学生信息。最后按逆序输出每个学生的信息。
具体实现可以参考以下代码:
#include <stdio.h>
#include <string.h>
#define MAX_N 100
struct student {
char name[100];
int score[3];
float avg_score;
};
int main() {
struct student students[MAX_N];
int n;
// 读入学生数量
scanf("%d", &n);
// 读入每个学生的信息
for (int i = 0; i < n; i++) {
// 读入姓名和3门课成绩
scanf("%s %d %d %d", students[i].name,
&students[i].score[0], &students[i].score[1], &students[i].score[2]);
// 计算平均成绩
students[i].avg_score = (students[i].score[0] + students[i].score[1] + students[i].score[2]) / 3.0;
// 如果平均成绩低于60分,则不输出该学生信息
if (students[i].avg_score < 60) {
n--;
i--;
}
}
// 按逆序输出每个学生的信息
for (int i = n - 1; i >= 0; i--) {
printf("%s %d %d %d %.2f\n", students[i].name,
students[i].score[0], students[i].score[1], students[i].score[2], students[i].avg_score);
}
return 0;
}
希望能帮到你,有什么问题可以继续问我哦~