通过C语言实现有一个班10个学生,5门课,(1)求第一门课的平均分;(2)找出有2门以上课程不及格的学生,输出他们的学号和全部课程成绩和平均成绩;(3)找出平均成绩在90分以上或全部课程成绩在85分以上的学生。并给出源码
时间: 2024-12-10 09:28:56 浏览: 11
在C语言中实现这个需求,我们可以创建一个简单的结构体表示学生、数组来存储数据,并编写函数来计算平均分以及满足特定条件的学生信息。这里是一个基本的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义学生结构体
typedef struct {
int id;
float scores[5];
} Student;
// 计算平均分
float average_score(Student* student, int course) {
if (course < 0 || course > 4) return -1; // 检查课程索引是否有效
return student->scores[course] / 5; // 假设每门课都是满分为100分,总分除以5得单科分数
}
// 判断学生是否有两门以上不及格
int has_two_or_more_fails(Student* student) {
int fails = 0;
for (int i = 0; i < 5; i++) {
if (student->scores[i] < 60) fails++;
}
return fails >= 2;
}
// 打印不及格学生的信息
void print_students_with_fails(Student students[], int num_students) {
for (int i = 0; i < num_students; i++) {
if (has_two_or_more_fails(&students[i])) {
printf("学生%d:", students[i].id);
for (int j = 0; j < 5; j++) {
printf(" %d", students[i].scores[j]);
}
printf("\n");
}
}
}
// 找出平均成绩在90分以上或所有课程在85分以上的同学
void find_students_above_threshold(Student students[], int num_students) {
for (int i = 0; i < num_students; i++) {
float total = 0;
for (int j = 0; j < 5; j++) {
total += students[i].scores[j];
}
float avg = total / 5;
if (avg >= 90 || all_courses_above_85(students[i])) { // 假设all_courses_above_85检查所有课程是否都大于等于85
printf("学生%d平均分:%.1f\n", students[i].id, avg);
}
}
}
// 假设一个辅助函数,用于判断所有课程是否都高于85分
int all_courses_above_85(Student student) {
for (int i = 0; i < 5; i++) {
if (student.scores[i] < 85) return 0;
}
return 1;
}
int main() {
// 初始化一个包含10名学生的数组
Student students[10];
// 假设这里已经填充了学生的成绩
// 调用函数获取结果
printf("第一门课的平均分:\n");
for (int i = 0; i < 10; i++) {
printf("学生%d: %.1f\n", i+1, average_score(&students[i], 0)); // 假设0代表第一门课
}
print_students_with_fails(students, 10);
find_students_above_threshold(students, 10);
return 0;
}
```
阅读全文