c语言编写有一个班4个学生,5门课程。①求第1门课程的平均分;②找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均成绩;③找出平均成绩在90分以上全部课程成绩在 85分以上的学生。分别编3个函数实现以上3个要求
时间: 2024-12-25 08:30:32 浏览: 13
在C语言中,为了实现上述需求,我们可以创建三个函数分别对应这三个功能。假设我们有一个结构体`Student`来存储学生的相关信息,包括学号、姓名和五门课程的成绩。这里是一个简化的示例:
```c
#include <stdio.h>
#include <string.h>
// 定义学生结构体
typedef struct {
int id;
char name[50];
int grades[5]; // 五门课程的成绩
} Student;
// 函数声明
double average_score(Student *student, int course_num); // 求单门课程平均分
void find_students_below_threshold(Student *students, int n, double threshold); // 找出不及格学生信息
void find_students_above_average(Student *students, int n, double high_avg, double high_score) { // 找出高分学生信息
// 函数实现
double average_score(Student *student, int course_num) {
return (double) student->grades[course_num] / 100; // 由于成绩通常是百分制,除以100转换成小数形式
}
void find_students_below_threshold(Student *students, int n, double threshold) {
for (int i = 0; i < n; i++) {
int fail_count = 0;
for (int j = 0; j < 5; j++) {
if (students[i].grades[j] < threshold) {
fail_count++;
printf("学生 %d, 课程 %d 成绩: %d, 平均成绩: %.2f\n", students[i].id, j+1, students[i].grades[j], average_score(&students[i], j));
}
}
if (fail_count > 2) {
printf("学生 %d 的所有课程成绩及平均成绩: ", students[i].id);
for (int k = 0; k < 5; k++) {
printf("%d, ", students[i].grades[k]);
}
printf("平均成绩: %.2f\n", average_score(&students[i], -1)); // 计算总平均成绩,-1 表示所有课程平均
}
}
}
void find_students_above_average(Student *students, int n, double high_avg, double high_score) {
for (int i = 0; i < n; i++) {
double avg = average_score(&students[i], -1); // 计算总平均成绩
if (avg >= high_avg && check_all_courses_higher(students[i].grades, high_score)) {
printf("学生 %d, 平均成绩: %.2f, 全部课程成绩: ", students[i].id, avg);
for (int j = 0; j < 5; j++) {
printf("%d, ", students[i].grades[j]);
}
printf("\n");
}
}
}
// 辅助函数,检查是否所有课程都在high_score之上
int check_all_courses_higher(int *grades, double high_score) {
for (int i = 0; i < 5; i++) {
if (grades[i] < high_score) {
return 0;
}
}
return 1;
}
// 主函数,用于测试以上函数
int main() {
// 初始化学生数据...
// 调用函数处理数据...
return 0;
}
```
阅读全文