问题:将100分制的成绩转换成"优秀","良好","中等","及格"和"不及格"。
一般教科书上,实现成绩转换功能用if语句或switch语句。那是浮云。
这里用二次查表法来实现。这样做逻辑简单,程序运行速度快,语句简洁。
简单到几乎看不见逻辑语句的程序才是好程序。
程序如下:
/* I00030 Grades conversion */
#include <stdio.h>
int main(void)
{
int score;
char *result[] = {"优秀", "良好", "中等", "及格", "不及格"};
int convert[] = {4, 4, 4, 4, 4, 4, 3, 2, 1, 0, 0};
while(scanf("%d", &score) != EOF)
if(score < 0 || score > 100)
printf("分数错误!\n");
else
printf("%s\n", result[convert[score/10]]);
return 0;
}