noip的“全文比较”是什么意思~

来源:百度知道 编辑:UC知道 时间:2024/09/23 05:57:45
如题~要注意什么吗
我是用C语言的~~有没有什么特别要小心的地方~~搞不好对的都给我判错了

全文比较简单点讲就是将输出文件中的每一个字符都与标准答案文件中的每一个字符进行比较,看看是否有不同,有差异的该得分点即为0分,全部相同的得10分。
上面所说的“每一个字符”除了题目中要求输出的答案及其格式外,要特别注意的是换行符等“看不见”的字符也包括在内。
根据NOIP2008无数同学血的教训,请注意:除了按照题目要求输出答案(空格什么不能多加)之外,输出文件的最后都要换行(即留一个空行)!
注意:所谓空行意思说空格也不能输出……不要理解为“看过去是空白的”,你就一个"\n"解决问题就行了。
比如说题目只要你输出一个数字2.
输出1:
2
(上面的输出是错误的,因为文件结尾没有换行)
输出2:
2

(上面的输出仍然是错误的,因为文件结尾有两个空行,在C语言中输出了两个"\n")
输出3:
2

(上面的输出才是正确的,输出题目要求的答案2后,在文件末尾输出一个"\n"来换行)
输出4:
2 (注意,2后面有回车)

(上面的输出是错误的,虽然文件末尾记得换行了,但是除了题目要求的答案2以外,后面多输出了一个空格,这个是无关字符,题目无要求输出)
在“全文比较”模式下,会将你的输出文件与答案文件进行“逐字节”比较,而且不忽略多余的空格和空行。
你在网络上做题的时候,可能有的地方要求文件结尾不能留空行,但是在NOIP中若无特殊说明,在文件末尾都要留一个空行,注意必须而且只能留一个空行,即输出一个"\n"。知道这点就没有问题了。(当然,如果哪年题目特别说明了就按照题目上要求的来输出)
听说这么规定的理由是,一个文件要以“完整”的一行来结束,而完整的一行必须包括行换符"\n",以表示这一行已经结束,否则这一行还没结束……