I00030 Grades conversion

问题:将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("分数错误!
");
        else
            printf("%s
", result[convert[score/10]]);

    return 0;
}


原文地址:https://www.cnblogs.com/tigerisland/p/7564694.html