有一个班4个学生,5门课程。求第一门课程平均分;找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩以及平均成绩;找出平均成绩在90分以上或全部课程成绩在85分以上的学生。分别编写3个函数满足以上要求,用c语言写,用到指针方法,学生学号,课程,成绩均可以自己输入
时间: 2023-12-22 12:03:52 浏览: 183
以下是用指针方法实现的3个函数,分别满足以上3个要求:
```c
#include <stdio.h>
#define MAX_STUDENT_NUM 4
#define MAX_COURSE_NUM 5
// 计算第一门课程平均分
float calc_first_course_avg(float *scores) {
float sum = 0.0;
for (int i = 0; i < MAX_STUDENT_NUM; i++) {
sum += *(scores + i * MAX_COURSE_NUM);
}
return sum / MAX_STUDENT_NUM;
}
// 找出有两门以上课程不及格的学生
void find_failed_students(int *ids, float *scores) {
for (int i = 0; i < MAX_STUDENT_NUM; i++) {
int failed_course_num = 0;
float sum = 0.0;
printf("学生%d:\n", *(ids + i));
for (int j = 0; j < MAX_COURSE_NUM; j++) {
float score = *(scores + i * MAX_COURSE_NUM + j);
printf("课程%d:%f\n", j+1, score);
if (score < 60.0) {
failed_course_num++;
}
sum += score;
}
if (failed_course_num >= 2) {
printf("全部课程平均分:%f\n", sum / MAX_COURSE_NUM);
printf("平均成绩:%f\n", sum / MAX_COURSE_NUM);
}
}
}
// 找出平均成绩在90分以上或全部课程成绩在85分以上的学生
void find_excellent_students(int *ids, float *scores) {
for (int i = 0; i < MAX_STUDENT_NUM; i++) {
float sum = 0.0;
int excellent_course_num = 0;
int all_excellent = 1;
for (int j = 0; j < MAX_COURSE_NUM; j++) {
float score = *(scores + i * MAX_COURSE_NUM + j);
sum += score;
if (score >= 85.0) {
excellent_course_num++;
} else {
all_excellent = 0;
}
}
float avg = sum / MAX_COURSE_NUM;
if (avg >= 90.0 || all_excellent) {
printf("学生%d:\n", *(ids + i));
printf("全部课程平均分:%f\n", avg);
printf("优秀课程数目:%d\n", excellent_course_num);
}
}
}
int main() {
int ids[MAX_STUDENT_NUM] = {1, 2, 3, 4};
float scores[MAX_STUDENT_NUM][MAX_COURSE_NUM] = {
{80, 90, 70, 85, 95},
{60, 75, 55, 65, 70},
{95, 88, 97, 92, 90},
{85, 90, 82, 88, 87}
};
printf("第一门课程平均分:%f\n", calc_first_course_avg(&scores[0][0]));
printf("有两门以上课程不及格的学生:\n");
find_failed_students(ids, &scores[0][0]);
printf("平均成绩在90分以上或全部课程成绩在85分以上的学生:\n");
find_excellent_students(ids, &scores[0][0]);
return 0;
}
```
注意,在上面的代码中,我们使用了一个二维数组 `scores` 来存储每个学生的成绩,其中 `scores[i][j]` 表示第 i 个学生的第 j 门课程的成绩。在函数中,我们将其转换为一个一维数组 `&scores[0][0]`,以便于使用指针来访问其中的元素。
阅读全文