用二维数组编程实现:某小组共有8个学生,期末考试语文、数学、英语、物理和计算机5科,要求分别输入每个学生的各科分数(范围0~100分),计算并输出每个学生的平均分和该小组各科平均分(保留2位小数)。
时间: 2024-12-26 08:28:52 浏览: 13
要使用二维数组来实现这个需求,首先我们需要创建一个二维数组来存储每个学生的成绩,然后遍历数组计算每个学生的总分和平均分,同时累计每科的总分。最后,我们再计算整个小组的平均分。
以下是一个简单的C语言程序实现:
```c
#include <stdio.h>
#define NUM_STUDENTS 8
#define NUM_SUBJECTS 5
// 声明二维数组
int student_scores[NUM_STUDENTS][NUM_SUBJECTS];
void input_student_scores() {
for (int i = 0; i < NUM_STUDENTS; i++) {
for (int j = 0; j < NUM_SUBJECTS; j++) {
printf("请输入第 %d 学生第 %d 科的成绩: ", i+1, j+1);
scanf("%d", &student_scores[i][j]);
// 检查输入是否在0-100范围内
while (student_scores[i][j] < 0 || student_scores[i][j] > 100) {
printf("输入错误,请重新输入(0-100): ");
scanf("%d", &student_scores[i][j]);
}
}
}
}
double calculate_average(int scores[], int num_scores) {
double sum = 0;
for (int i = 0; i < num_scores; i++) {
sum += scores[i];
}
return sum / num_scores;
}
void print_student_averages() {
printf("学生平均分:\n");
for (int i = 0; i < NUM_STUDENTS; i++) {
double avg = calculate_average(student_scores[i], NUM_SUBJECTS);
printf("学生 %d 的平均分为: %.2f\n", i+1, avg);
}
}
void print_group_averages() {
int total_scores[NUM_SUBJECTS] = {0};
for (int i = 0; i < NUM_STUDENTS; i++) {
for (int j = 0; j < NUM_SUBJECTS; j++) {
total_scores[j] += student_scores[i][j];
}
}
double group_avg[5];
for (int i = 0; i < 5; i++) {
group_avg[i] = calculate_average(total_scores, NUM_STUDENTS);
}
printf("\n小组各科平均分:\n");
for (int i = 0; i < 5; i++) {
printf("科目 %d 的平均分为: %.2f\n", i+1, group_avg[i]);
}
}
int main() {
input_student_scores();
print_student_averages();
print_group_averages();
return 0;
}
```
运行此程序后,用户将按照提示为每个学生输入他们的成绩,然后程序会计算并打印出每个学生的平均分以及小组各科的平均分。
阅读全文