一般教科书上,实现成绩转换功能用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("分数错误! "); else printf("%s ", result[convert[score/10]]); return 0; }