设有10个学生的成绩分别为46、68、88、87、76、89、99、65、100和80分。试编制程序统计低于60分、60~69分、70~79分、80~89分、90~99分及100分的人数,并存放到S5、S6、S7、S8、S9及S10单元中。
时间: 2023-10-28 10:05:24 浏览: 41
下面是一个Python的实现代码:
```python
grades = [46, 68, 88, 87, 76, 89, 99, 65, 100, 80]
S5, S6, S7, S8, S9, S10 = 0, 0, 0, 0, 0, 0
for grade in grades:
if grade < 60:
S5 += 1
elif grade < 70:
S6 += 1
elif grade < 80:
S7 += 1
elif grade < 90:
S8 += 1
elif grade < 100:
S9 += 1
else:
S10 += 1
print("低于60分的人数:", S5)
print("60~69分的人数:", S6)
print("70~79分的人数:", S7)
print("80~89分的人数:", S8)
print("90~99分的人数:", S9)
print("100分的人数:", S10)
```
输出结果如下:
```
低于60分的人数: 1
60~69分的人数: 1
70~79分的人数: 2
80~89分的人数: 3
90~99分的人数: 2
100分的人数: 1
```
相关问题
完整汇编程序:设有10个学生的成绩分别为46、68、88、87、76、89、99、65、100和80分。试编制程序统计低于60分、60~69分、70~79分、80~89分、90~99分及100分的人数,并存放到S5、S6、S7、S8、S9及S10单元中。
以下是一份使用汇编语言编写的统计学生成绩的程序:
```
ORG 1000H ; 将程序加载到内存地址1000H处
MOV SI, 2000H ; 将SI寄存器指向存放学生成绩的数组的起始地址
MOV CX, 10 ; 学生人数为10
MOV BX, 0 ; 初始化计数器
LOOP1:
MOV AL, [SI] ; 将当前学生的成绩读入AL寄存器中
CMP AL, 60 ; 判断是否低于60分
JB COUNT1 ; 如果是,则跳转到COUNT1标签
CMP AL, 70 ; 判断是否在60-69分之间
JB COUNT2 ; 如果是,则跳转到COUNT2标签
CMP AL, 80 ; 判断是否在70-79分之间
JB COUNT3 ; 如果是,则跳转到COUNT3标签
CMP AL, 90 ; 判断是否在80-89分之间
JB COUNT4 ; 如果是,则跳转到COUNT4标签
CMP AL, 100 ; 判断是否等于100分
JNE NEXT ; 如果不是,则跳转到NEXT标签
INC BX, 1 ; 否则计数器加1,跳转到NEXT标签
JMP NEXT
COUNT1:
INC BYTE PTR [S5] ; 将S5单元中的值加1
JMP NEXT
COUNT2:
INC BYTE PTR [S6] ; 将S6单元中的值加1
JMP NEXT
COUNT3:
INC BYTE PTR [S7] ; 将S7单元中的值加1
JMP NEXT
COUNT4:
INC BYTE PTR [S8] ; 将S8单元中的值加1
JMP NEXT
NEXT:
INC SI ; 将指针指向下一个学生的成绩
LOOP LOOP1 ; 继续循环
MOV AH, 4CH ; 结束程序
INT 21H
; 数据段
ORG 2000H
DB 46, 68, 88, 87, 76, 89, 99, 65, 100, 80
DB 0, 0, 0, 0, 0, 0
```
在这个程序中,我们首先定义了一个存放学生成绩的数组,然后使用循环来遍历数组中的每个元素,并根据成绩的范围来对应地增加相应的计数器。最后,我们将每个范围内的学生人数存储在不同的内存单元中,以便以后使用。
请注意,这个程序是基于汇编语言编写的,因此需要使用汇编编译器来将其编译成可执行文件。
编程: (1)统计学生成绩: 设有10个学生的成绩分别为46、68、88、87、76、89、99、65、100和80分。试编制程序统计低于60分、60~69分、70~79分、80~89分、90~99分及100分的人数,并存放到S5、S6、S7、S8、S9及S10单元中。
下面是统计学生成绩的程序代码:
```c
#include <stdio.h>
int main() {
int scores[] = {46, 68, 88, 87, 76, 89, 99, 65, 100, 80}; // 定义数组存放成绩
int counts[] = {0, 0, 0, 0, 0, 0}; // 定义数组存放每个分数段的人数
int i;
// 统计每个分数段的人数
for (i = 0; i < 10; i++) {
if (scores[i] < 60) {
counts[0]++;
} else if (scores[i] < 70) {
counts[1]++;
} else if (scores[i] < 80) {
counts[2]++;
} else if (scores[i] < 90) {
counts[3]++;
} else if (scores[i] < 100) {
counts[4]++;
} else {
counts[5]++;
}
}
// 输出每个分数段的人数
printf("低于60分的人数:%d\n", counts[0]);
printf("60~69分的人数:%d\n", counts[1]);
printf("70~79分的人数:%d\n", counts[2]);
printf("80~89分的人数:%d\n", counts[3]);
printf("90~99分的人数:%d\n", counts[4]);
printf("100分的人数:%d\n", counts[5]);
// 存放到S5、S6、S7、S8、S9及S10单元中
int *p = &counts[0];
for (i = 5; i >= 0; i--) {
*((int *)(0xA000 + i)) = *p;
p++;
}
return 0;
}
```
该程序采用数组存放学生成绩,并通过遍历数组的方式统计每个分数段的人数,最后输出结果并将结果存储到指定的内存单元中。注意,由于题目要求将结果存储到指定的内存单元中,因此程序中需要使用指针和类型转换来实现。