关于一道如何给学生成绩分类的题目。
题目是:已知大量的学生成绩,统计出处于各个等级的学生人数。
A(90~100), B(80~89), C(70~79), D(60~69), E(0~59)。
用grade[5]数组存放各个等级的学生人数。score表示学生成绩。
解法1:
while(学生人数)
if(score > 90)
grade[0]++;
else if (score > 80)
grade[1]++;
else if (score > 70)
grade[2]++;
else if(score > 60)
grade[3]++;
else
grade[4]++;
解法2:
使用一个table[11]数组。
- table[0] : 成绩为0~9分的学生
- table[1] : 成绩为10~19分的学生
- table[2] : 成绩为20~29分的学生
- table[3] : 成绩为30~39分的学生
- table[4] : 成绩为40~49分的学生
- table[5] : 成绩为50~59分的学生
- table[6] : 成绩为60~69分的学生
- table[7] : 成绩为70~79分的学生
- table[8] : 成绩为80~89分的学生
- table[9] : 成绩为90~99分的学生
- table[10] : 成绩为100分的学生
最终把table[0]到table[5]加起来为等级E的学生,table[9]加table[10]为等级A的学生。
while(学生人数) {
table[score/10]++
}
grade[0] = table[9] + table[10];
grade[1] = table[8];
grade[2] = table[7]
grade[3] = table[6];
grade[4] = table[0] + table[1] + table[2]
+ table[3] + table[4] + table[5];
解法3:
同样使用table[11]数组,但是给数组初始化等级所代表的grade数组的索引,达到一步到位的效果。
table[11] = {4, 4, 4, 4, 4, 4, 3, 2, 1, 0, 0};
while(学生人数) {
grade[table[score/10]]++;
}