本文主要是介绍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\n");break;case 8:printf("Good\n");break;case 7:case 6:printf("Pass\n");break;default:printf("Fail\n");}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\n", ans[level[score / 10]]);return 0;
}
这篇关于CCF NOI1014 写评语的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!