C语言 设计一个程序统计某个班全体学生3门课的考试成绩。要求能输入学生人数,并按编号从小到大的顺序依次输入学生的成绩,再统计出每门课程的全班总分、平均分及每个考生所有考试的总分和平均分。
时间: 2023-06-12 18:05:54 浏览: 691
下面是一个基于 C 语言的程序,实现了统计某个班全体学生3门课的考试成绩,包括输入学生人数、按编号从小到大的顺序依次输入学生的成绩、统计每门课程的全班总分、平均分及每个考生所有考试的总分和平均分的功能。
```c
#include <stdio.h>
#define MAX_STUDENT_NUM 100
int main() {
int n, i, j;
float score[MAX_STUDENT_NUM][3]; // 每个学生的三门成绩
float sum[3] = {0}; // 每门课程的总分
float avg[3] = {0}; // 每门课程的平均分
float sum_all[MAX_STUDENT_NUM] = {0}; // 每个学生所有成绩的总分
float avg_all[MAX_STUDENT_NUM] = {0}; // 每个学生所有成绩的平均分
printf("请输入学生人数:\n");
scanf("%d", &n);
if (n > MAX_STUDENT_NUM) {
printf("学生人数不能超过 %d\n", MAX_STUDENT_NUM);
return 1;
}
printf("请依次输入每个学生的三门成绩:\n");
for (i = 0; i < n; i++) {
printf("第 %d 个学生:", i+1);
for (j = 0; j < 3; j++) {
scanf("%f", &score[i][j]);
sum[j] += score[i][j];
sum_all[i] += score[i][j];
}
avg_all[i] = sum_all[i] / 3;
}
printf("每门课程的总分为:%.2f %.2f %.2f\n", sum[0], sum[1], sum[2]);
printf("每门课程的平均分为:%.2f %.2f %.2f\n", sum[0]/n, sum[1]/n, sum[2]/n);
printf("每个学生所有考试的总分和平均分为:\n");
for (i = 0; i < n; i++) {
printf("第 %d 个学生:%.2f %.2f\n", i+1, sum_all[i], avg_all[i]);
}
return 0;
}
```
程序中,首先定义了一个最大学生人数的常量 `MAX_STUDENT_NUM`,以防止输入超出程序处理能力的学生人数。然后,定义了一个二维数组 `score`,用于存储每个学生的三门成绩,以及三个一维数组 `sum`、`avg`和 `sum_all`,用于存储每门课程的总分、平均分、每个学生所有成绩的总分和平均分。
程序运行后,先要求输入学生人数,然后依次输入每个学生的三门成绩,并按编号从小到大的顺序保存到 `score` 数组中。在输入的过程中,同时计算每门课程的总分和每个学生所有成绩的总分,并保存到 `sum` 数组和 `sum_all` 数组中。最后,计算每门课程的平均分和每个学生所有成绩的平均分,并输出结果。
注意,程序中使用了 `scanf()` 函数来接受用户的输入,通过 `%f` 格式符来读取浮点数。同时,为了防止输入超出 `score` 数组的范围,程序在接受学生人数的输入时进行了判断。
阅读全文