用C语言编写一个程序,满足输入10个学生5门课的成绩,分别用函数求: (1)每个学生的平均分; (2)每门课的平均分;(3)找出平均分最高的学生。
时间: 2023-12-10 15:42:24 浏览: 70
以下是用 C 语言编写的程序,实现了输入 10 个学生 5 门课的成绩,并分别用函数求出每个学生的平均分、每门课的平均分和平均分最高的学生。
```c
#include <stdio.h>
#define STUDENTS 10
#define COURSES 5
void student_avg(float scores[][COURSES]);
void course_avg(float scores[][COURSES]);
void max_avg(float scores[][COURSES]);
int main(void)
{
float scores[STUDENTS][COURSES];
int i, j;
printf("Please enter the scores of %d students for %d courses:\n", STUDENTS, COURSES);
for (i = 0; i < STUDENTS; i++) {
printf("Scores of student %d: ", i + 1);
for (j = 0; j < COURSES; j++) {
scanf("%f", &scores[i][j]);
}
}
printf("The average scores of each student:\n");
student_avg(scores);
printf("The average scores of each course:\n");
course_avg(scores);
printf("The student with the highest average score:\n");
max_avg(scores);
return 0;
}
void student_avg(float scores[][COURSES])
{
int i, j;
float sum;
for (i = 0; i < STUDENTS; i++) {
sum = 0;
for (j = 0; j < COURSES; j++) {
sum += scores[i][j];
}
printf("Student %d: %.2f\n", i + 1, sum / COURSES);
}
}
void course_avg(float scores[][COURSES])
{
int i, j;
float sum;
for (j = 0; j < COURSES; j++) {
sum = 0;
for (i = 0; i < STUDENTS; i++) {
sum += scores[i][j];
}
printf("Course %d: %.2f\n", j + 1, sum / STUDENTS);
}
}
void max_avg(float scores[][COURSES])
{
int i, j, max_index = 0;
float avg_scores[STUDENTS], max = 0, sum;
for (i = 0; i < STUDENTS; i++) {
sum = 0;
for (j = 0; j < COURSES; j++) {
sum += scores[i][j];
}
avg_scores[i] = sum / COURSES;
if (avg_scores[i] > max) {
max = avg_scores[i];
max_index = i;
}
}
printf("Student %d: %.2f\n", max_index + 1, max);
}
```
程序中,我们定义了 `STUDENTS` 和 `COURSES` 两个常量,分别表示学生和课程的数目。在 `main` 函数中,首先提示用户输入每个学生每门课的成绩,然后调用三个函数分别求出每个学生的平均分、每门课的平均分和平均分最高的学生。
在 `student_avg` 函数中,我们使用了两个循环遍历每个学生的成绩,计算平均分,并输出到屏幕上。在 `course_avg` 函数中,我们使用了两个循环遍历每门课的成绩,计算平均分,并输出到屏幕上。在 `max_avg` 函数中,我们同样使用了两个循环遍历每个学生的成绩,计算平均分,并记录下平均分最高的学生的索引,最后输出该学生的信息。
注意,在程序中我们假定了用户输入的成绩都是合法的,没有做输入验证。如果需要更加严谨的程序,可以在输入时对用户输入进行逐个验证。
阅读全文