CSP-J 2019SC 0分原因分析

时光怂恿深爱的人放手 提交于 2019-12-06 15:02:13

首先说一下正确使用freopen的方式

/*将 <题目cpp文件名> 替换为cpp文件名

freopen("<题目cpp文件名>.in",  "r", stdin);
freopen("<题目cpp文件名>.out", "w", stdout);
*/

//number.cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{

	freopen("number.in",  "r", stdin);
	freopen("number.out", "w", stdout);

	// 以下开始解题代码
	.
	.
	.
	.
	.
	.

	fclose(stdin);   //本行不是必须
	fclose(stdout);  //本行不是必须
	return 0;
}

错误实例

 

绝大部分来自于SC CSP-J的代码

没有代码的

存错目录了,存错盘符等没有按要求放cpp文件的

四川没有代码的,
SC-Junior @SC
ntotal 793, lost 16:
SC-00033 SC-00060 SC-00110 SC-00112 SC-00123 SC-00131 SC-00153 SC-00185 SC-00227 SC-00308 SC-00381 SC-00387 SC-00432 SC-00561 SC-00715 SC-00781

SC-Senior-day1 @SC
ntotal 807, lost 2:
SC-00215 SC-00637
 

SC-Senior-day2 @SC
ntotal 807, lost 11:
SC-00024 SC-00144 SC-00158 SC-00169 SC-00215 SC-00419 SC-00463 SC-00591 SC-00637 SC-00758 SC-00787
 

据说有个省(好象是河南)是要确保每个人的代码是正常收集到了的

没用使用freopen:

此种情况在洛谷等网站评测时需要注释掉freopen,所以不会爆0,甚至是高分

重定向文件名多了空格

下图黑色位置多了一个空格

我测了一下在windows系统中文件名最后的空格不影响结果。但在linux中是读不到输入数据的。NOI评测是在linux中,所以会爆0
freopen("number.in ", "r", stdin);
freopen("number.in",  "r", stdin);

此种情况在洛谷等网站评测时需要注释掉freopen,所以不会爆0,甚至是高分

/写成\


// 以下一行在Windows DevC++是正确的,但在NOI Linux中是错误(编译都过不了)
#include <bits\stdc++.h>

// 以下一行在Windows DevC++和NOI Linux中都是正确的。
#include <bits/stdc++.h>

 

用了freopen,但文件名不正确,输入没有.in, 输出没有.out

此种情况在洛谷等网站评测时需要注释掉freopen,所以不会爆0,甚至是高分

文件错写为.txt

此种情况在洛谷等网站评测时需要注释掉freopen,所以不会爆0,甚至是高分

命令行调试后没有取消注释

此种情况在洛谷等网站评测时需要注释掉freopen,所以不会不问题

拷贝文件或另存为没有改文件名

如下图是number.cpp 对应的重定向文件应该为number.in , number.out

 

把.out错误地写成.ans

.ans文件是标准答案

 

 

把.inn错误地写成.in.txt,把.out错误地写成.out.txt

写法错误,编译都通不过的

 

freopen 写错成preopen

就想问一句编译能通过吗? 估计就没编译过代码。

 stdin 写错成"stdin"

编译也通不过啊.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!