判题系统的国内现状

判题系统的国内现状,第1张

持一些依赖于计算机自动化评测的应用来说,有着重要的意义。这一系统最初用于支撑 ACM/ICPC 竞赛,并保证竞赛的公平公正[1],而在经过一些必要的扩展之后,可以应用于所有需要使用自动化黑盒测试进行评判的场合,例如程序设计类课程的教学与考试[2],亦可用于计算机辅助

教学[3-4]。5852

目前,大部分在线评测系统都着眼于如何准确、高效地评判代码是否正确运行,

在系统中判题子系统成为了整个系统的核心[1]。对判题子系统的研究主要集中在确

保判题过程的公正可靠[5],确保危险代码不破坏系统[6-7],通过引入分布式评测或

借助云计算环境来提高可靠性和容错能力[8-9],以及如何进行快速高效的结果比对

[10]。一些更深入的研究着力探讨如何更精确地计时,并完成更公平公正的判题流程

[11],以及如何利用多核多线程的优势提升单台服务器的负载能力[12]。同样也有一

些尝试从其他方向实现并优化在线评测系统的案例,例如使用 XML 代替数据库实现持

久化,并使用 XSLT 来控制表示层的呈现以减轻服务器端处理负载等[13]。而这些在

线评测系统几乎都采用了经典的三层架构,加上评判内核(即判题子系统),构成“表

现层——业务层——评判内核——持久层(数据层)”的体系结构[14],同时由于在

线评测系统固有的瘦客户端的设计,B/S 结构成为大多数平台的首选[15-19],一些评

测平台会提供自己的客户端以支持更多服务[10]。

在判题子系统之外,一些评测系统虽然有所扩展,但也只是集中在添加竞赛模块

用以支持具有一定伸缩性的比赛,或是添加诸如文件提交或胖客户端提交等更多的提

交方式[10],又或是进行一系列改动使之更适应于程序设计类课程的在线评判[20],

并研究组卷过程中难度系数的衡量以及组卷算法的设计[21]。但有必要指出的是,这

些扩展点的加入在一定程度上提升了系统的整体功能,但却并没有从根本上改变以判

题子系统为中心的体系结构,这也直接限制了系统的可扩展性。

同时,现有的在线评测系统大多采用传统的“数据层——业务层——表现层”的

三层架构搭建,而对于一些在线评测系统而言,由于基于 LAMP (Linux、 Apache、 MySQL、

PHP)构建,间接导致本身的外围业务和表现层的界限也不再清晰,可以见到的只是

判题子系统被作为独立业务模块分离并与其他的模块之间有清晰的界限,但诸如用户

管理、代码管理之类与领域关系稍远的功能模块的划分就相对模糊,一些专注于业务

的功能被放到了表现层实现,并依据用户需求改变表示层,而另一些则依附于判题子

系统而存在,并不具有非常显著的模块特征。可以说,笼统的三层架构在应对一般的

信息系统时也许能得心应手,但在处理诸如在线评测系统之类具有突出业务特征的系

统时,很难用相对粗略的层次使所有模块保持和谐。

在另一方面,现有在线评测平台大多着力于解决评测子系统上的问题,而忽略了

软件整体的扩展性和后续用户需求变更的可能。诚然,完美地实现核心业务是一个软

件的灵魂所在,但由相对僵化的体系结构所决定的在线评测系统也促成了目前这一类

系统的一般格局:用户提交代码,由系统编译执行,应用自动化黑盒测试并给出结果,

除此之外的其他用户需求相对很少顾及到,例如对于所提交代码的管理,对于解题过

共2页:

上一页

1

2

下一页

两段程序都是一样的错误:

struct dian a[1]这里只分配了一个点的内存,输入和计算的时候是两个点,数组越界。

改为:

struct dian a[2]

改后两段程序都能正常运行。

我假定你说的这些选择题的位置是固定的,我的意思就是第二题后面是第四题,中间没有别的题了。也就是说你输入的必须准确,

#include<stdio,h>

#include<ctype.h>

#define

s

5

//每题的得分,以后不一样的话可以更改

int

main()

{

int

anwser[40]={'a','d','d','c','a','a','b','d','a','c','c','a','a','b','d','a','b','c','c','b','d','a','a','a','a','c','c','d','b','d','b','d','c','c','c','c','b','a','d','c','c','c','d'}

//这些是正确答案

数组大小那块我就不要求可移植性了

你懂得....

int

sum=0//总分数计数器

int

m=0

char

ch

while((ch=getchar())!=eof&&ch!='\n')

{

ch=toupper(ch)//转成大写

if(ch==answer[m])

sum+=s

m++

}

printf("%d\n",sum)

return

0

}

这位帅哥还是美女的......我相信你是懂c语言的....因为没有在编译器上实际 *** 作...可能会有些纰漏..(刚完吃饭...)你要按照下列格式输入答案比如(大小写随便):a

b

c

d

.....(这个程序能否正确运行你输入准确是先决条件....)

当然了

我这算是个提示程序....还可以有很方便的。。就是你在一整个文件中输入所有同学的答案

然后在另一个文件中显示对应分数。。。如果你是一个学c的学生的话

你该知道怎么弄

要是不是的话

你可以再找我要........


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11023198.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存