C语言(用函数写)代码生成,输入10个学生10门课程的成绩,要求包括的功能: 1.求出某个学生的最高成绩; 2.求出某门课程的最高成绩; 3.求出某个学生的平均成绩; 4.求出某门课程的平均成绩; 5.统计某个学生不及格课程的门数;
时间: 2023-08-31 12:31:00 浏览: 199
### 回答1:
以下是使用函数实现上述功能的C语言代码:
```c
#include <stdio.h>
#define NUM_STUDENTS 10
#define NUM_COURSES 10
int max_student_score(int scores[NUM_STUDENTS][NUM_COURSES], int student_index);
int max_course_score(int scores[NUM_STUDENTS][NUM_COURSES], int course_index);
float avg_student_score(int scores[NUM_STUDENTS][NUM_COURSES], int student_index);
float avg_course_score(int scores[NUM_STUDENTS][NUM_COURSES], int course_index);
int num_failed_courses(int scores[NUM_STUDENTS][NUM_COURSES], int student_index);
int main() {
int scores[NUM_STUDENTS][NUM_COURSES];
int i, j;
// 读入成绩
for (i = 0; i < NUM_STUDENTS; i++) {
printf("请输入学生%d的10门课程成绩:\n", i + 1);
for (j = 0; j < NUM_COURSES; j++) {
scanf("%d", &scores[i][j]);
}
}
// 求出最高成绩和平均成绩
for (i = 0; i < NUM_STUDENTS; i++) {
printf("学生%d的最高成绩为:%d\n", i + 1, max_student_score(scores, i));
printf("学生%d的平均成绩为:%.2f\n", i + 1, avg_student_score(scores, i));
printf("学生%d不及格的课程数为:%d\n", i + 1, num_failed_courses(scores, i));
}
for (j = 0; j < NUM_COURSES; j++) {
printf("课程%d的最高成绩为:%d\n", j + 1, max_course_score(scores, j));
printf("课程%d的平均成绩为:%.2f\n", j + 1, avg_course_score(scores, j));
}
return 0;
}
// 求出某个学生的最高成绩
int max_student_score(int scores[NUM_STUDENTS][NUM_COURSES], int student_index) {
int max_score = scores[student_index][0];
int i;
for (i = 1; i < NUM_COURSES; i++) {
if (scores[student_index][i] > max_score) {
max_score = scores[student_index][i];
}
}
return max_score;
}
// 求出某门课程的最高成绩
int max_course_score(int scores[NUM_STUDENTS][NUM_COURSES], int course_index) {
int max_score = scores[0][course_index];
int i;
for (i = 1; i < NUM_STUDENTS; i++) {
if (scores[i][course_index] > max_score) {
max_score = scores[i][course_index];
}
}
return max_score;
}
// 求出某个学生的平均成绩
float avg_student_score(int scores[NUM_STUDENTS][NUM_COURSES], int student_index) {
int sum = 0;
int i;
for (i = 0; i < NUM_COURSES; i++) {
sum += scores[student_index][i];
}
return (float) sum / NUM_COURSES;
}
// 求出某门课程的平均成绩
float avg_course_score(int scores[NUM_STUDENTS][NUM_COURSES], int course_index) {
int sum = 0;
int i;
for (i = 0; i < NUM_STUDENTS; i++) {
sum += scores[i][course_index];
}
return (float) sum / NUM_STUDENTS;
}
// 统计某个学生不及格课程的门数
int num_failed_courses(int scores[NUM_STUDENTS][NUM_COURSES], int student_index) {
int num_failed = 0;
int i;
for (i = 0; i < NUM_COURSES; i++) {
if (scores[student_index][i] < 60) {
num_failed++;
}
}
return num_failed;
}
```
在这个代码中,我们定义了5个函数,分别对应题目中的5个功能,分别是:
- `max_student_score`:求出某个学生的最高成绩。
- `max_course_score`:求出某门课程的最高成绩。
- `avg_student_score`:求出某个学生的平均成绩。
- `avg_course_score`:求出某门课程的平均成绩。
- `num_failed_courses`:统计某个学生不及格课程的门数。
在 `main` 函数中,我们首先读入成绩,然后分别调用上述函数,输出结果。注意到我们使用了 `#define` 定义了学生数和课程数,这样可以方便地修改程序的规模。
### 回答2:
首先,可以定义一个二维数组来存储10个学生10门课程的成绩。数组的行表示学生,列表示课程。
1.求出某个学生的最高成绩:
可以定义一个函数,传入学生的编号和成绩数组,依次比较该学生的每门课程成绩,找到最高成绩并返回即可。
2.求出某门课程的最高成绩:
同样定义一个函数,传入课程的编号和成绩数组,依次比较每个学生在该门课程上的成绩,找到最高成绩并返回。
3.求出某个学生的平均成绩:
定义一个函数,传入学生的编号和成绩数组,使用一个循环计算该学生所有课程的总成绩,再除以课程数量即可得到平均成绩。
4.求出某门课程的平均成绩:
同样定义一个函数,传入课程的编号和成绩数组,使用一个循环计算该课程所有学生的总成绩,再除以学生数量即可得到平均成绩。
5.统计某个学生不及格课程的门数:
定义一个函数,传入学生的编号和成绩数组,使用一个循环遍历该学生的所有课程成绩,判断是否小于及格分数线(一般是60),如果小于则累加不及格门数。最后返回不及格门数即可。
以上都是用函数来实现,通过传入不同的参数可以实现对应功能的计算。
阅读全文