输入10个学生5门课的成绩,分别用函数求:(1)每个学生的平均分;(2)每门课的平均分;(3)找出平均分最高的学生。用C语言简单程序编写出来
时间: 2024-01-20 17:03:15 浏览: 30
可以使用二维数组存储10个学生5门课的成绩,然后编写3个函数分别求解。
以下是一个简单的实现:
```c
#include <stdio.h>
#define NUM_STUDENTS 10
#define NUM_SUBJECTS 5
void calc_student_avg(int scores[NUM_STUDENTS][NUM_SUBJECTS], float student_avg[NUM_STUDENTS]) {
// 计算每个学生的平均分
for (int i = 0; i < NUM_STUDENTS; i++) {
float sum = 0;
for (int j = 0; j < NUM_SUBJECTS; j++) {
sum += scores[i][j];
}
student_avg[i] = sum / NUM_SUBJECTS;
}
}
void calc_subject_avg(int scores[NUM_STUDENTS][NUM_SUBJECTS], float subject_avg[NUM_SUBJECTS]) {
// 计算每门课的平均分
for (int i = 0; i < NUM_SUBJECTS; i++) {
float sum = 0;
for (int j = 0; j < NUM_STUDENTS; j++) {
sum += scores[j][i];
}
subject_avg[i] = sum / NUM_STUDENTS;
}
}
int find_highest_avg_student(float student_avg[NUM_STUDENTS]) {
// 找出平均分最高的学生
int highest_index = 0;
float highest_avg = student_avg[0];
for (int i = 1; i < NUM_STUDENTS; i++) {
if (student_avg[i] > highest_avg) {
highest_index = i;
highest_avg = student_avg[i];
}
}
return highest_index;
}
int main() {
int scores[NUM_STUDENTS][NUM_SUBJECTS];
float student_avg[NUM_STUDENTS];
float subject_avg[NUM_SUBJECTS];
// 读入成绩
printf("请按顺序输入10个学生5门课的成绩:\n");
for (int i = 0; i < NUM_STUDENTS; i++) {
printf("输入学生%d的成绩:", i+1);
for (int j = 0; j < NUM_SUBJECTS; j++) {
scanf("%d", &scores[i][j]);
}
}
// 计算平均分
calc_student_avg(scores, student_avg);
calc_subject_avg(scores, subject_avg);
// 输出结果
printf("每个学生的平均分:\n");
for (int i = 0; i < NUM_STUDENTS; i++) {
printf("学生%d的平均分为:%.2f\n", i+1, student_avg[i]);
}
printf("每门课的平均分:\n");
for (int i = 0; i < NUM_SUBJECTS; i++) {
printf("第%d门课的平均分为:%.2f\n", i+1, subject_avg[i]);
}
int highest_index = find_highest_avg_student(student_avg);
printf("平均分最高的学生是学生%d,平均分为:%.2f\n", highest_index+1, student_avg[highest_index]);
return 0;
}
```
注意,本程序并没有进行输入的数据校验,实际使用时需要加上输入格式检查等保护措施。
阅读全文