输入n个学生的姓名及其3门功课成绩,要求按输入的逆序逐行输出每个学生的姓名、3门课成绩和平均成绩。若有学生平均成绩低于60分,则不输出该学生信息。 输入格式: 测试数据有多组,处理到文件尾。每组测试数据首先输入一个正整数n(1<n<100),表示学生人数;然后是n行信息,分别表示学生的姓名(长度不超过10且由英文字母构成的字符串)和3门课成绩(正整数)。 输出格式: 对于每组测试,输出所有满足要求的学生信息,每行一个学生信息:姓名、3门课成绩和平均成绩(保留2位小数)。每行的每两个数据之间留一个空格。
时间: 2024-03-23 10:41:32 浏览: 23
下面是C语言的代码实现:
```c
#include <stdio.h>
#include <string.h>
struct Student {
char name[11];
int scores[3];
float avg;
};
int main() {
int n;
while (scanf("%d", &n) != EOF) {
struct Student students[n];
for (int i = 0; i < n; i++) {
scanf("%s", students[i].name);
scanf("%d%d%d", &students[i].scores[0], &students[i].scores[1], &students[i].scores[2]);
students[i].avg = (students[i].scores[0] + students[i].scores[1] + students[i].scores[2]) / 3.0;
}
for (int i = n - 1; i >= 0; i--) {
if (students[i].avg >= 60) {
printf("%s %d %d %d %.2f\n", students[i].name, students[i].scores[0], students[i].scores[1], students[i].scores[2], students[i].avg);
}
}
}
return 0;
}
```
首先,我们定义了一个结构体 `Student` 用于存储每个学生的姓名、3门课成绩和平均成绩。在主函数中,通过循环输入每个学生的信息,并计算出其平均成绩。接下来,我们倒序遍历每个学生,如果其平均成绩大于等于60分,则输出该学生的信息。注意,我们每行输出一个学生的信息,每个数据之间留一个空格,且保留平均成绩的小数点后两位。同时,由于可能有多组测试数据,我们使用了一个 `while` 循环来不断读入输入。