zoukankan      html  css  js  c++  java
  • CCF NOI1014 写评语

    问题链接CCF NOI1014 写评语




    时间限制: 1000 ms  空间限制: 262144 KB

    题目描述

      输入某学生成绩score,根据成绩好坏输出相应评语。如果成绩在大于等于90,输出“Excellent”;如果成绩在大于等于80分且小于90分,输出“Good”;如果成绩大于等于60分且小于80分,输出“Pass”;成绩小于60分,输出“Fail”。

    输入

      输入一个整数score,表示学生的成绩。

    输出

      输出对应的评语。

    样例输入

    65

    样例输出

    Pass

    数据范围限制

      0<=score<=100



    问题分析

      这是一个把百分制成绩转换为等级成绩的问题。

      这个问题有三种解法:

      一是根据输入的成绩直接进行范围判定,输出结果。这是一种最差的做法。

      二是先将输入成绩除以10,再进行判定。这种方法大幅简化了判定逻辑。

      三是查表法,先计算后差表。这种做法逻辑简洁,程序通用性强。问题要求改变时不需要修改程序逻辑,只需要修改表(程序中可能用数组存储)。

    程序说明

      这里给出了2种程序。后一种是用查表法实现的,是2次查表,表格从一定意义上来说实现了一种映射。

    要点详解
    • 一个复杂的计算,不是直接处理,而是分步进行处理,每一步的逻辑都变得简单,整体的处理逻辑也简化了。
    • 查表法是一种值得推荐的方法,优点多多。
    • 程序中,出现了指针数组,需要理解和掌握。



    100分通过的C语言程序之一:

    #include <stdio.h>
    
    int main(void)
    {
        int score;
    
        scanf("%d", &score);
    
        switch(score / 10) {
        case 10:
        case 9:
            printf("Excellent
    ");
            break;
        case 8:
            printf("Good
    ");
            break;
        case 7:
        case 6:
            printf("Pass
    ");
            break;
        default:
            printf("Fail
    ");
        }
    
        return 0;
    }


    100分通过的C语言程序之二:

    #include <stdio.h>
    
    int main(void)
    {
        char *ans[] = {
             "Excellent"
            , "Good"
            , "Pass"
            , "Fail"
        };
        int level[] = {3, 3, 3, 3, 3, 3, 2, 2, 1, 0, 0};
        
        int score;
                      
        scanf("%d", &score);
        
        printf("%s
    ", ans[level[score / 10]]);
        
        return 0;
    }



  • 相关阅读:
    事件基础(一)
    添加/删除子元素的笔记
    面向对象的三大特性
    初识面向对象
    异常处理
    模块和包
    Python中常用模块一
    递归函数
    内置函数、匿名函数
    迭代器,生成器
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7563930.html
Copyright © 2011-2022 走看看