编写一个程序来计算每个任意数量的班级中学生的平均成绩。输出每个班级的学生成绩,然后输出该班级的平均成绩。
参考代码
#include <stdio.h>
#include <stdbool.h>
#include <ctype.h>
int main(void)
{
const size_t cCount = 5; // 班级数量
const size_t sCount = 7; // 班级中的学生人数
char answer = 'N';
int grades[cCount][sCount]; // Stores the grades
size_t students[cCount]; // Stores the number of students in each class
for (size_t i = 0; i < cCount; ++i)
{
printf("输入学生的成绩 %d.\n", i + 1);
students[i] = 0; // Student count within a class
while (true)
{
printf("输入学生的等级 %d: ", students[i] + 1);
scanf("%d", &grades[i][students[i]]);
if (++students[i] == sCount)// Increment and check student count
{
printf("班级 %zd 学生信息输入完成 ", i + 1);
break;
}
printf("还有更多的学生 %zd ?(Y 或 N): ", i + 1);
scanf(" %c", &answer);
if (toupper(answer) == 'N')
break;
}
}
printf("\n");
for (size_t i = 0; i < cCount; ++i)
{
int class_total = 0;
printf("班级 %d 的学生成绩是:\n", class_total + 1);
for (size_t student = 0; student < students[i]; ++student)
{
class_total += grades[i][student];
if ((student + 1) % 6 == 0)
printf("\n");
printf("%5d", grades[i][student]);
}
printf("\n班级 %zd 的平均成绩是:%.2lf\n", i + 1, (double)class_total / students[i]);
}
return 0;
}
执行上面示例代码,得到以下结果:
hema@yiibai:~/book$ gcc main.c
hema@yiibai:~/book$ ./a.out
输入学生的成绩 1.
输入学生的等级 1: 90
还有更多的学生 1 ?(Y 或 N): y
输入学生的等级 2: 89
还有更多的学生 1 ?(Y 或 N): y
输入学生的等级 3: 93
还有更多的学生 1 ?(Y 或 N): y
输入学生的等级 4: 95
还有更多的学生 1 ?(Y 或 N): n
输入学生的成绩 2.
输入学生的等级 1: 98