C语言程序设计自动评判系统使用说明

来源:互联网 发布:淘宝广场舞布鞋 编辑:程序博客网 时间:2024/05/15 13:50

C语言程序设计自动评判系统使用说明

(适用于课程作业、实验与考试)

1        信息

在线评判系统网址为http://218.193.57.136:20101;登陆用户名为oj;登陆口令为whuang。系统仅在上班时间、对教育网接口(如实验楼)开放。

系统不开放注册,请用学号与第一节实验课的口令登录系统。

系统在Google Chrome浏览器下显示正常。


2        登录

系统使用前应登录,具体方法为:

1、单击右上角Login菜单;

2、在出现的小窗口中输入User(即学号)和Password(口令),并单击Login。

3、登录失败则弹出窗口提示错误,否则显示用户全名。


 

3        完成定时任务

课程作业、实验课作业、期中上机考试(模拟、不计分)、期末上机考试均使用该模式,均称为竞赛。

操作方法为:

1、单击菜单中的Contests(竞赛)。

2、查看竞赛列表,其中标记Scheduled(尚未开始)为即将开始的竞赛;标记为Running(正在运行)的竞赛为可作答的竞赛;标记为Closed(关闭)为已经到期不可提交的竞赛。Start Time和Deadline分别为该竞赛的起止时间,时间终止后提交的代码不计入总分。


3、单击Title中显示的竞赛名,可以看到竞赛的信息。其中表格显示了当前竞赛的题目。Status为NA表示NotAvailable(尚未提交),AC表示Accepted(已接受)。ER表示Error(错误)。当所有题目显示AC时为完成竞赛,否则将扣分。已经AC的题目不要重复提交,更不要盲目提交,否则会降低分数(接受题目数量除以提交次数)。


4、单击各个题目的Title(标题),进入题目信息页。仔细阅读相关信息,其中,大字显示的是Problem(问题)编号和Contest(竞赛)编号,以及问题的标题。Limitation说明了问题的时间和空间限制(初学者暂时不必理会)。Description(描述)说明了题目的内容。Input(输入)说明了题目的输入,即运行一次程序标准输入流的输入。Input(输出)说明了题目的输出,即运行一次程序标准输出流的输出。Sample Input(样例输入)和Sample Output(样例输出)提供了一个可以理解和测试自己程序的范例。Hint(提示)是对较难题目的提示。Source(源)则为出题的来源。Statistics(统计)为同学之间答题的正确数,用于辅助你预估题目的难度。


最下方还有Submit(提交)用于提交代码,Go Back(返回)回到上一页,Status(状态)用于查看当前状态,以及Discuss(讨论)可以在BBS栏目讨论该题。


5、在Linux系统下的GEdit(或Windows下的记事本)完成上述题目,并使用Linux(虚拟机太卡的可以使用CYGWIN)的GCC进行测试(第一节实验课内容)。即:首先,对复杂的题目在纸张上写下C语言程序的草稿;第二,在GEdit下输入C程序;第三,将C程序编译为可执行文件(GCC FILENAME.C –o FILENAME),并根据编译器提出的错误修改程序直至正确(测好了再提交,切勿将OJ系统作为编译器使用,错误将扣分);第四,运行可执行文件(./FILENAME),输入Sample Input所示的输入,并观察输出是否和Sample Output一模一样(不得多或少一个字符!)。若不一致,应思考并修改程序;若一致,应尝试更多的输入,直至程序测试无误。

6、单击Submit(提交)按钮,进入提交页面。ProblemID(问题ID)是不可修改的,Language(语言)仅允许使用GCC,并将运行正确那一刻的C语言程序复制粘贴到Source(源代码)文本框中。单击Submit(提交),或Reset(重置)放弃。


7、提交后可以查看StatusList(状态)。其中Result分为9个大类,即:(1)Waiting:系统忙,你的答案在排队等待(如果长期处于这个阶段可能是系统错误,此时不要重复提交应报告老师);(2)Accepted:答案正确;(3)PresentationError:答案因表达问题而错误。(4)WrongAnswer:答案不对,仅仅通过样例数据的测试并不一定是正确答案,测试并不全面。(5)TimeLimit Exceeded:运行超出时间限制,检查下是否有死循环,或者应该有更快的计算方法。(6)MemoryLimit Exceeded:超出内存限制,数据可能需要压缩,检查内存是否有泄露。(7)OutputLimit Exceeded: 输出超过限制,你的输出比正确答案长了两倍。(8)RuntimeError :运行时错误,非法的内存访问,数组越界,指针漂移,调用禁用的系统函数。(9)CompileError:编译错误。


你可以单击Language列里的GCC查看编译器的输出(以上8、9情况可以通过编译器输出尽快找到错误)。其它类型的错误信息不提供。


严禁通过该功能提供作业抄袭(我会抽查演示,一经发现,期末改卷从严从重。)

8、至此,你做完了第一题,可以接着完成所有的题目。也可以单击Standings(积分榜)查看自己的名次。


9、所有题目完成后,可以退出登录。

4        完成一般任务

还有另一类题目称为Problem(问题),以公布之日开始,本学期期末上机考试后为结束。

1、单击菜单栏的“Problems”进入问题列表。题目过多时可以使用翻页工具进行换页。表格前的AC标记表示该题已经正确,不要重复提交。Title(标题)表示问题的名称。Ratio(比例)是AC(正确)的题目数量与Submit(提交)的次数作比较。Difficulty(难度)为题目的难度。Date(日期)为出题的时间。


2、“问题”的提交与“竞赛”的问题提交相同。

3、由于问题难度各异,在遇到难题时应独立思考,无法解答时与同学争论探讨,如果很可能是出题错误,请联系老师。

5        名次的确定

各参赛者以Accepted的题目数量(同一题目多次被接受合并记为接受1题)降序排列。对Accepted题目数量相等的参赛者,以提交次数最少的为先(同一题目提交或测试多次记为提交多次)。对提交次数相等的选手,以耗时最短为先。

6        评分过程

评分过程如下:

1、对提交上来的代码,先经过编译环节,得到可执行文件。若此环节出错,则报告编译错误,可以查询。

2、对编译得到的可执行文件,以测评专用输入文件为输入,将程序输出保存为文本文件,与测评专用输出文件做对比,长度与内容完全相等,且时间和内存消耗在规定范围内的情况,判定为Accepted(通过)。否则判定为超时、超空间或答案错误,且不可查询。本轮评判分两种:(本系统和北大POJ系统采用前一种,其它系统可能采用后一种

(1)输入文件有多个,以加法题目为例,有三个输入文件:

第1个输入文件内容为:“1 2”,对应答案文件内容为“3”;第2个输入文件内容为:“1 3”,对应答案文件内容为“4”;等等。程序运行3次,将3个输出存为文本文件与答案比较,只要有一次比对不一致,则为答案错误。

(2)输入文件有一个,多行,以加法题目为例,有一个输入文件:

输入文件第1行内容为:“1 2”;第2行内容为:“1 3”;等等。对应答案文件内容,第一行为“3”;第二行为“4”;等等。程序运行1次,将唯一1个输出存为文本文件与答案比较,只要有一个字符比对不一致,则为答案错误。

此种情况应采用“while(scanf("%d %d",&a, &b) != EOF)”语句循环获得输入,使用“printf("\n");”换行,其中EOF为Endof File(文件结束)标识符,在文件结束时产生。如果自行测试时应使用Ctrl+Z模拟EOF标识符。

至于其它系统采用何种形式,应参见系统的帮助文档(一般在首页可以找到FAQ)说明。

7        其它功能

1、在菜单栏的RankList(排名列表)可以查看你的名次,首页背景颜色也与排名有关。实验课成绩将考虑排名因素,适当奖励。

2、在菜单栏的Status(状态)可以查看每题的批改结果。

3、在菜单栏的BBS(电子公告栏)可以发起讨论。

4、在菜单栏显示你的名字的单元格可以修改你的个人信息。

你还可能遇到另一种OJ系统,是以“while(scanf("%d %d",&a, &b) != EOF)”为输入的,但本系统的作答和上课教授的内容一样,无需修改。

0 0
原创粉丝点击