随笔 2018-09-29

关于一道如何给学生成绩分类的题目。

题目是:已知大量的学生成绩,统计出处于各个等级的学生人数。
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]]++;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值