用一段c语言,输入10个学生5门课的成绩,分别用函数求:(1)每个学生的平均分;(2)每门课的平均分;(3)找出平均分最高的学生。
时间: 2024-01-19 17:03:24 浏览: 83
好的,以下是一个示例代码:
```c
#include <stdio.h>
#define NUM_STUDENTS 10
#define NUM_COURSES 5
// 计算每个学生的平均分
void calc_student_avg(float scores[NUM_STUDENTS][NUM_COURSES], float student_avgs[NUM_STUDENTS]) {
for (int i = 0; i < NUM_STUDENTS; i++) {
float sum = 0;
for (int j = 0; j < NUM_COURSES; j++) {
sum += scores[i][j];
}
student_avgs[i] = sum / NUM_COURSES;
}
}
// 计算每门课的平均分
void calc_course_avg(float scores[NUM_STUDENTS][NUM_COURSES], float course_avgs[NUM_COURSES]) {
for (int j = 0; j < NUM_COURSES; j++) {
float sum = 0;
for (int i = 0; i < NUM_STUDENTS; i++) {
sum += scores[i][j];
}
course_avgs[j] = sum / NUM_STUDENTS;
}
}
// 找出平均分最高的学生
int find_highest_avg_student(float student_avgs[NUM_STUDENTS]) {
int highest_index = 0;
float highest_avg = student_avgs[0];
for (int i = 1; i < NUM_STUDENTS; i++) {
if (student_avgs[i] > highest_avg) {
highest_index = i;
highest_avg = student_avgs[i];
}
}
return highest_index;
}
int main() {
float scores[NUM_STUDENTS][NUM_COURSES];
float student_avgs[NUM_STUDENTS];
float course_avgs[NUM_COURSES];
// 输入成绩
for (int i = 0; i < NUM_STUDENTS; i++) {
printf("请输入第%d个学生的成绩:\n", i + 1);
for (int j = 0; j < NUM_COURSES; j++) {
printf("第%d门课的成绩:", j + 1);
scanf("%f", &scores[i][j]);
}
}
// 计算平均分
calc_student_avg(scores, student_avgs);
calc_course_avg(scores, course_avgs);
// 输出平均分
printf("每个学生的平均分:\n");
for (int i = 0; i < NUM_STUDENTS; i++) {
printf("第%d个学生的平均分为:%.2f\n", i + 1, student_avgs[i]);
}
printf("\n每门课的平均分:\n");
for (int j = 0; j < NUM_COURSES; j++) {
printf("第%d门课的平均分为:%.2f\n", j + 1, course_avgs[j]);
}
// 找出平均分最高的学生
int highest_index = find_highest_avg_student(student_avgs);
printf("\n平均分最高的学生为第%d个学生,平均分为%.2f\n", highest_index + 1, student_avgs[highest_index]);
return 0;
}
```
注意,这个示例代码中并没有对输入进行验证,建议在实际使用时加上相关的输入验证和错误处理。
阅读全文