C语言按各科分数段统计人数,(更新啦)学校学生成绩统计通用模板(科目、分数、统计分数段等均可自定,班级数、学生人数不受限制)...
时间: 2023-07-10 12:09:14 浏览: 112
以下是一个用 C 语言实现的学生成绩统计程序,可以根据需要自定义科目、分数段等参数,并且支持任意数量的班级和学生。具体实现如下:
```c
#include <stdio.h>
#define MAX_CLASS 10 // 最大班级数量
#define MAX_STUDENT 100 // 最大学生数量
// 学生结构体
struct Student {
char name[20]; // 姓名
float score; // 分数
};
// 班级结构体
struct Class {
struct Student students[MAX_STUDENT]; // 学生数组
int num_students; // 学生数量
};
// 统计分数段人数
void count_score_range(struct Class *cls, float min, float max, int *count) {
for (int i = 0; i < cls->num_students; i++) {
if (cls->students[i].score >= min && cls->students[i].score <= max) {
(*count)++;
}
}
}
int main() {
struct Class classes[MAX_CLASS]; // 班级数组
int num_classes = 0; // 班级数量
// 读入班级和学生信息
printf("请输入班级数:");
scanf("%d", &num_classes);
for (int i = 0; i < num_classes; i++) {
printf("请输入第%d个班级的学生数量:", i+1);
scanf("%d", &classes[i].num_students);
for (int j = 0; j < classes[i].num_students; j++) {
printf("请输入第%d个班级的第%d个学生的姓名和分数:", i+1, j+1);
scanf("%s%f", classes[i].students[j].name, &classes[i].students[j].score);
}
}
// 统计分数段人数
float ranges[][2] = { {0, 60}, {60, 70}, {70, 80}, {80, 90}, {90, 100} }; // 分数段
int counts[sizeof(ranges)/sizeof(ranges[0])]; // 分数段人数
for (int i = 0; i < sizeof(ranges)/sizeof(ranges[0]); i++) {
counts[i] = 0;
for (int j = 0; j < num_classes; j++) {
count_score_range(&classes[j], ranges[i][0], ranges[i][1], &counts[i]);
}
}
// 输出结果
printf("分数段\t人数\n");
for (int i = 0; i < sizeof(ranges)/sizeof(ranges[0]); i++) {
printf("%.0f-%.0f\t%d\n", ranges[i][0], ranges[i][1], counts[i]);
}
return 0;
}
```
以上程序通过两个结构体 `Student` 和 `Class` 分别表示学生和班级,其中 `Class` 包含一个 `Student` 数组和学生数量,以支持任意数量的班级和学生。通过 `count_score_range` 函数统计指定分数段的学生数量,最终输出统计结果。
在主函数中,首先读入班级和学生信息,然后定义一个分数段数组 `ranges`,并通过 `count_score_range` 函数统计各个班级中每个分数段的人数,最后输出结果。
需要注意的是,以上程序仅为一个通用模板,具体实现需要根据实际情况进行调整。
阅读全文