最初我使用 switch/case,但条件必须是变量匹配的常量值,而不是变量是否在范围内的 bool 值。
相反,我有这个怪物:
if ( data[y] > 91 ) {
grades[9] = grades[9] + 1;
}
else if ( data[y] > 88 && data[y] < 92 ) {
grades[8] = grades[8] + 1;
}
else if ( data[y] > 84 && data[y] < 89 ) {
grades[7] = grades[7] + 1;
}
else if ( data[y] > 81 && data[y] < 85) {
grades[6] = grades[6] + 1;
}
else if ( data[y] > 79 && data[y] < 82) {
grades[5] = grades[5] + 1;
}
else if ( data[y] > 74 && data[y] < 79 ) {
grades[4] = grades[4] + 1;
}
else if ( data[y] > 71 && data[y] < 75 ) {
grades[3] = grades[3] + 1;
}
else if ( data[y] > 68 && data[y] < 72 ) {
grades[2] = grades[2] + 1;
}
else if ( data[y] > 59 && data[y] < 69 ) {
grades[1] = grades[1] + 1;
else {
//data[y] < 60:
grades[0] = grades[0] + 1;
}
有没有人知道处理这段代码的更好方法,因为我的 switch/case 想法不适用?当然,必须有更好的方法来做到这一点。
最佳答案
缩短代码最明显的方法是摆脱不必要的二次测试:
if (data[y] >= 92) ++grades[9];
else if (data[y] >= 89) ++grades[8];
else if (data[y] >= 85) ++grades[7];
else if (data[y] >= 82) ++grades[6];
else if (data[y] >= 80) ++grades[5];
else if (data[y] >= 75) ++grades[4];
else if (data[y] >= 72) ++grades[3];
else if (data[y] >= 69) ++grades[2];
else if (data[y] >= 60) ++grades[1];
else ++grades[0];
关于c - 在 C 中使用一长串 "if/else if"语句的更好替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25794662/