这道题目的意思是统计一门课程各分数段的人数:统计一个班级一门课程各分数段的人数,班级人数自定,成绩为百分制整数。代码
时间: 2023-06-06 14:05:19 浏览: 85
这个问题可以回答,以下是一个示例代码:
```python
def score_distribution(scores):
counts = [0, 0, 0, 0, 0] # 5个分数段
for score in scores:
if score >= 90:
counts[0] += 1
elif score >= 80:
counts[1] += 1
elif score >= 70:
counts[2] += 1
elif score >= 60:
counts[3] += 1
else:
counts[4] += 1
return counts
# 示例用法
scores = [76, 82, 90, 68, 92, 57, 84, 79, 74, 63]
counts = score_distribution(scores)
print(counts)
```
输出结果是:
```
[2, 3, 3, 2, 0]
```
其中,counts[0] 表示分数在 90 分及以上的学生数量,counts[1] 表示分数在 80-89 分之间的学生数量,以此类推。
相关问题
C语言:统计一门课程各分数段人数:统计一个班级一门课程各分数段人数,班级人数自定,成绩为百分制整数。
好的,我可以回答这个问题。为了统计各分数段人数,需要先确定分数段范围。例如,我们可以将分数分为60以下、60-69、70-79、80-89、90以上五个分数段。然后,遍历所有学生的成绩,将每个成绩所在的分数段计数器加1。最后,输出各个分数段的计数器值即可。以下是一个C语言实现的例子:
```c
#include <stdio.h>
int main() {
int num_students = 0, score;
int count_60down = 0, count_60to69 = 0, count_70to79 = 0, count_80to89 = 0, count_90up = 0;
printf("请输入班级人数:\n");
scanf("%d", &num_students);
printf("请依次输入每个学生的成绩(整数):\n");
for (int i = 0; i < num_students; i++) {
scanf("%d", &score);
if (score < 60) {
count_60down++;
} else if (score < 70) {
count_60to69++;
} else if (score < 80) {
count_70to79++;
} else if (score < 90) {
count_80to89++;
} else {
count_90up++;
}
}
printf("各分数段人数如下:\n");
printf("60以下:%d\n", count_60down);
printf("60-69:%d\n", count_60to69);
printf("70-79:%d\n", count_70to79);
printf("80-89:%d\n", count_80to89);
printf("90以上:%d\n", count_90up);
return 0;
}
```
这个例子中,首先通过`scanf`获取班级人数。然后,通过一个循环,遍历每位学生的成绩,并根据分数范围计数。最后,输出各个分数段的计数值。
根据学生课程数据库的sc表编写一个存储过程,完成下述功能:统计任意一门课程的成绩分布情况,即按照各分数段统计人数(分数段自定);
这个存储过程可以按照以下步骤编写:
1. 定义输入参数:课程编号(course_id)。
2. 定义输出参数:各分数段的人数统计结果。
3. 使用SQL语句查询sc表,筛选出选修该课程的学生的成绩。
4. 根据自定的分数段,使用SQL语句统计各分数段的人数。
5. 将各分数段的人数统计结果存储到输出参数中。
6. 返回输出参数。
下面是一个简单的示例代码:
CREATE PROCEDURE `score_distribution`(IN course_id INT, OUT result VARCHAR(255))
BEGIN
DECLARE low INT DEFAULT 0;
DECLARE high INT DEFAULT 100;
DECLARE step INT DEFAULT 10;
DECLARE i INT DEFAULT 0;
DECLARE count INT DEFAULT 0;
DECLARE output VARCHAR(255) DEFAULT '';
WHILE i < 10 DO
SELECT COUNT(*) INTO count FROM sc WHERE course_id = course_id AND score >= low AND score < high;
SET output = CONCAT(output, low, '-', high, ':', count, ';');
SET low = low + step;
SET high = high + step;
SET i = i + 1;
END WHILE;
SET result = output;
END;
这个存储过程可以接受一个课程编号作为输入参数,输出各分数段的人数统计结果。分数段的范围可以根据需要自行调整。
阅读全文