```
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define NUM_STUDENTS 4
#define NUM_COURSES 5
// 存储学生信息的结构体
struct student {
int id;
float grades[NUM_COURSES];
float average;
};
// 存储课程信息的结构体
struct course {
char name[20];
float average;
};
int main() {
// 定义变量
struct student students[NUM_STUDENTS];
struct course courses[NUM_COURSES];
int i, j;
float sum;
// 输入课程信息
for (i = 0; i < NUM_COURSES; i++) {
scanf("%s", courses[i].name);
}
// 输入学生信息并计算平均成绩
for (i = 0; i < NUM_STUDENTS; i++) {
scanf("%d", &students[i].id);
sum = 0;
for (j = 0; j < NUM_COURSES; j++) {
scanf("%f", &students[i].grades[j]);
sum += students[i].grades[j];
}
students[i].average = sum / NUM_COURSES;
}
// 计算每门课程的平均分
for (i = 0; i < NUM_COURSES; i++) {
sum = 0;
for (j = 0; j < NUM_STUDENTS; j++) {
sum += students[j].grades[i];
}
courses[i].average = sum / NUM_STUDENTS;
}
// 输出第一门课程的名称和平均分
printf("%s %.2f\n", courses[0].name, courses[0].average);
}
void findFailingStudents(struct student students[], int numStudents, int numCourses) {
int i, j;
int failingCount;
for (i = 0; i < numStudents; i++) {
failingCount = 0;
for (j = 0; j < numCourses; j++) {
if (students[i].grades[j] < 60) {
failingCount++;
}
}
if (failingCount >= 2) {
// 输出学生的学号和全部课程成绩
printf("%d ", students[i].id);
for (j = 0; j < numCourses; j++) {
printf("%.2f ", students[i].grades[j]);
}
printf("%.2f\n", students[i].average);
}
}
}
// 找出平均成绩在90分以上或全部课程成绩在85分以上的学生,并输出他们的学号和全部课程成绩及平均成绩
void findHighAchievingStudents(struct student students[], int numStudents, int numCourses) {
int i, j;
int highAchieving;
for (i = 0; i < numStudents; i++) {
highAchieving = 0;
if (students[i].average >= 90) {
highAchieving = 1;
}
else {
for (j = 0; j < numCourses; j++) {
if (students[i].grades[j] >= 85) {
highAchieving = 1;
break;
}
}
}
if (highAchieving) {
// 输出学生的学号和全部课程成绩
printf("%d ", students[i].id);
for (j = 0; j < numCourses; j++) {
printf("%.2f ", students[i].grades[j]);
}
// 输出学生的平均成绩
printf("%.2f\n", students[i].average);
}
}
}
```为什么只能输出第1个结果?