信息学奥赛中Linux环境程序编写、调试及测评简易教程.pdf
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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”天,然后勾选需要评测的选手,点击“评测选定选手”键,出现的画面如下图所示
点击确定,评测进度条显示当前评测选手的评测进度,某个评测完成以后“是否已评测”这个表项会变成绿灯,如下图所示
等评测完所有选手,就可以进入“成绩统计”页面