信息学奥赛中Linux环境程序编写、调试及测评简易教程.pdf

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

信息学奥赛中Linux环境程序编写、调试及测评简易教程

贵阳一中李守志

本文介绍如何在NOI Linux中编写,编译,并调试C/C++程序,以及如何

使用Arbiter进行评测.由于作者水平有限,本文不会涉及太多理论知识;相反,如果不曾接触NOI Linux,你可以利用此教程快速入门.

如果不清楚某一个命令的用法,可以在终端中使用man[命令]的方式查看系统手册.(例如键入”man diff”查看diff命令的用法.)

一、程序编写、编译和运行

NOI的Linux环境提供了很多程序编写软件,我们经常直接用文本编辑器直接来写代码。下面简单介绍一下:

1.编写C++程序。打开附件->文本编辑器(gedit),或其它你喜爱的IDE/编辑器.

编写以下程序,存放在将其另存为’/home/noilinux/code(code为新建的文件夹)。假设写好的程序保存为1.cpp。

程序写完。

2.编译并运行。打开附件,选择终端,依次输入以下命令。

1切换至程序保存的目录code:cd code.

2编译程序:g++1.cpp-o1

3运行编译之后的程序:./1

此时终端就能输出Hello Word!

程序运行结束。

二、程序的gdb调试

打开附件,选择终端,依次输入以下命令。

(1)切换至程序保存的目录code:cd code.

(2)编译程序:g++1.cpp-o1-g

(3)进入gdb程序:gdb1

打开GDB(然后会冒出来一大堆英文,当看到done就说明完成了初始化.)

可以按照基本命令表进行调试。

命令功能描述

r运行程序

l查看源程序

b设置断点

info b查询断点

watch a观察变量a的值(变量可以换成表达式)

clear4删除断点4

delet删除所有断点

n单步调试

c继续运行程序

p a输出变量a的值

bt查看当前函数调用栈的所有信息

f打印当前栈的信息

set var b修改变量b的值

jump n跳转到第n行代码

q退出

这里调试东西太多,不能细讲,大家可以网上搜索一下相关资料,边看边联系,很快就熟悉了。

三、Arbiter评测系统单机版简要使用说明

进入Arbiter系统所在目录,运行./arbiter即可以运行系统,初始界面如下图

选择文件 新建比赛,可以看到以下界面

选择”单机考试”,选择存储考试的目录,然后点“确定”,可以进入配置界面

注意到“试题概要”区有大片的空白,在空白区单击右键,可以添加一天的比赛,在比赛名上点击右键,添加一道试题,默认试题标题名叫”unknow”,点击试题标题,就可以在右边的“详细信息”区可以配置相应的信息

按照下图配置好“你好,世界”这个题,标题叫“打印字符”,基本名:pchar,提交方式:源文件,测试点数量:2,时间限制:1,允许使用的语言:都勾上,评测方式:字符串比较---单字符串行比较,编译选项都不填。

之后进入选手管理页面,单击“添加”按键可以添加选手,添加2个选手,姓名和编号分别为star(AH-01),moon(GD-01),添加之后如下图所示,如果输入有误可以单击”删除”按键删除指定选手.“所属”项会自动添上,所属项信息没有意义,不影响评测结果

在菜单栏中选择文件—保存,把刚才的配置信息都保存下来。我们准备好答案以后就可以开始评测了。每个选手的答案都必须存储在“答案存储目录”项提示的目录下.这个目录需要自行创建。以上star选手的答案如下,文件名是pchar.c

star答案如下,代表是正确答案

#include

#include

#define INFILE"pchar.in"

#define OUTFILE"pchar.out"

/*不管几个测试点,选手程序都只从以上文件读输入,写输出*/

int main()

{

FILE*fpin,*fpout;

char c;

fpin=fopen(INFILE,"r");

fpout=fopen(OUTFILE,"w");

if(!fpin||!fpout){

perror(NULL);

exit(1);

}

while((c=getc(fpin))!=EOF){

putc(c,fpout);

}

fclose(fpin);

fclose(fpout);

return0;

}

monn随便提交个错误答案

在每个选手存放答案的目录下再建个叫pchar(和试题基本名相同)的子目录,把他们的答案文件都放到那个目录下去

把事先准备好的pchar1.in,pchar1.ans,pchar2.in,pchar2.ans都放到“比赛存储目录/evaldata”这个目录下,保证pchar1.in pchar1.ans内容一致,pchar2.in,pchar2.ans(内容一致即可)

准备工作完成了,下面在“选手管理”页面,确定左上角那个“需要评测第X天的比赛”选项的地方,选择的是第“1”天,然后勾选需要评测的选手,点击“评测选定选手”键,出现的画面如下图所示

点击确定,评测进度条显示当前评测选手的评测进度,某个评测完成以后“是否已评测”这个表项会变成绿灯,如下图所示

等评测完所有选手,就可以进入“成绩统计”页面

相关文档
最新文档