CN107391387A - 一种c程序的评价方法及装置 - Google Patents
一种c程序的评价方法及装置 Download PDFInfo
- Publication number
- CN107391387A CN107391387A CN201710806781.7A CN201710806781A CN107391387A CN 107391387 A CN107391387 A CN 107391387A CN 201710806781 A CN201710806781 A CN 201710806781A CN 107391387 A CN107391387 A CN 107391387A
- Authority
- CN
- China
- Prior art keywords
- program
- tested
- data
- output
- default
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种C程序的评价方法及装置,其中,所述方法包括:获取待测试C程序,以及将预设输入数据保存至第一数据文件;以命令行方式运行所述待测试C程序;得到运行所述待测试C程序后输出的输出数据,并保存至第二数据文件;读取所述第二数据文件中的输出数据,将所述输出数据与预设输出数据进行对比,根据对比结果评价所述待测试C程序。本申请公开的方法可以通过不同的输入数据多次调用本函数来测试C程序的输出结果,能够保证评价的有效性和准确性,防止学生投机取巧。
Description
技术领域
本申请涉及C程序评价领域,尤其涉及一种C程序的评价方法及装置。
背景技术
C程序考试系统需对考生编写的程序进行自动评价。评价的方法是:在主程序中嵌入固定代码,该固定代码将学生编写的C程序的输出结果写入文件中。或者要求考生将编写的C程序的输出结果写入预设文件中。评价时,根据预设文件中的输出结果,将输出结果与正确的输出结果对比,如果相同则确定学生编写的C程序正确,反之则不正确。
上述方法存在的缺陷是,没有对学生编写的C程序进行测试,只是根据输出结果文件进行评价,如果该C程序没有算法的实现代码,只是简单的将程序结果输出,评价也会完全正确;甚至学生不写代码,而是直接将正确的输出结果写入文件,考试系统也会评价学生的程序正确。因此,现有技术的评价方法不能正确评价学生编写的C程序是否正确。
发明内容
本申请提供了一种C程序的评价方法及装置,以解决现有技术的评价方法不能正确评价学生编写的C程序是否正确及准确率低的问题。
第一方面,本申请提供了一种C程序的评价方法,所述方法包括:
获取待测试C程序,以及将预设输入数据保存至第一数据文件;
以命令行方式运行所述待测试C程序;
得到运行所述待测试C程序后输出的输出数据,并保存至第二数据文件;
读取所述第二数据文件中的输出数据,将所述输出数据与预设输出数据进行对比,根据对比结果评价所述待测试C程序。
第二方面,本申请还提供了一种C程序的评价装置,包括处理器、存储器及显示器,其中:
所述存储器,用于存储程序代码;
所述处理器,用于读取所述存储器中的程序代码,并执行第一方面所述的方法;
所述显示器,用于显示评价结果。
本申请公开的C程序的评价方法及装置有益效果包括:
本申请公开的C程序的评价方法中,能够根据不同的输入数据自动得到C程序的输出结果,并依据输出结果作出评价。与现有技术相比,输出结果不是考生上交的,而是运行C程序自动产生的,是直接对C程序的测试,能够保证C程序评价的有效性和准确性,有效防止了考生的投机取巧。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种C程序的评价方法流程示意图;
图2为本申请实施例提供的步骤S200流程示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
现有的C程序的考试系统对C程序的输出测评,均采用代码中附加文件输出的方法,只针对这个输出文件进行评价。具体过程包括,在C程序的考试系统main函数中嵌入固定代码(用于保存程序的输出结果到文件),或者要求考生将该C程序的输出结果直接写入预设文件中,根据输出结果评价C程序是否正确。
本申请实例由Visual Basic 6.0实现(流程图参见图1),预设评价函数声明如下:
getCexeOutput(CF As String,InpS As String,outS As String,wT As Long)
各参数含义分别为:
----CF:指定需评价的C程序(EXE文件,含路径);
----InpS:指定C程序运行时需要的输入数据(可为空串);
----outS:指定C程序运行时在输入数据下的预设输出数据;
----wT:指定等待C程序运行结束的毫秒数;
函数根据输入数据自动运行C程序,并将C程序运行后的输出结果与outputS比较,如果正确,则函数返回值True,否则返回False。
参见图1,为本申请实施例提供的一种C程序的评价方法流程示意图。
在步骤S100中,获取待测试C程序,以及将预设输入数据保存至第一数据文件。
待测试C程序存储在以学生考试号或者学号等命名的文件夹中,当需要评价某个学生的C程序时,从对应的文件夹中获取待测试C程序。同时,将预设输入数据写入第一数据文件中。在评价C程序过程中,根据题目的顺序依从学生考题文件夹中获取待测试C程序,如果待测试C程序不存在,则返回False,说明学生此题未答复,或者未保存至文件中,因此评价结果为错误结果,对应的评价分值为0分。
预设输入数据是由考试系统的评价模块根据C程序的输入需求确定的,现有考试系统中,C程序的编程题均无输入数据(这是现有评价方法本身的缺陷所致),因此,程序的输出结果是固定的。本申请实例先将预设的输入数据存储到文件中,为下一步的处理作准备。考虑到应用的全面性,本方法也允许输入数据为空。
进一步的,如果预设输入数据包括多行数据,则按行分割预设输入数据,并将每一行数据写入第一数据文件中。
现有技术中,运行的待测试C程序的输入数据需要用户通过键盘输入,本申请实施例中将预设输入数据存储在第一数据文件中,让程序直接从第一数据文件中读取预设输入数据,因此,通过输入重定向每输入一个数据,则重新定向,从文件中读取下一个预设输入数据。
在步骤S200中,以命令行方式运行所述待测试C程序调用预设测试程序运行所述待测试C程序。评价预设测试程序为一个评价函数,评价函数定义为getCexeOutput(CExeF,InputS,outputS,Elapse)。运行待测试C程序过程中以命令行方式运行。
例如,以命令行方式运行D:\cp.exe,表示以命令行方式运行程序D:\cp.exe。
具体的,参见图2,为本申请实施例提供的步骤S200流程示意图。
如图2所示,在步骤S201中,输入重定向至第一数据文件,以及输出重定向至第二数据文件。
在以命令行方式运行待测试C程序过程中,将输入重定向至第一数据文件中。正常情况下,C程序运行时,需要的输入数据由用户通过键盘输入。但通过输入重定向,可让运行的C程序直接从指定的文件中读取所有输入数据,不再等待用户通过键盘输入。
另外,正常情况下,待测试C程序运行时的输出结果会显示在屏幕上。通过输出重定向,可以让运行的C程序将输出结果不再在屏幕上显示,而是保存到第二数据文件中。
在步骤S202中,从所述第一数据文件中读取所述预设输入数据,将所述预设输入数据输入至所述待测试C程序。
输入重定向到第一数据文件中后,从第一数据文件中读取预设输入数据,将预设输入数据输入至待测试C程序中运行,得到输出数据。
例如:假定有C程序D:\cp.exe。其功能是:输出区间[m,n]上质数的个数。其中m,n为输入数据。如:
输入:1,100
输出:25
那么,评价该程序的VB代码可以是(四组输入数据):
if getCexeOutput("D:\cp.exe","1,100","25")then k=1else k=0
if getCexeOutput("D:\cp.exe","2,100","25")then k=k+1
if getCexeOutput("D:\cp.exe","30,40","2")then k=k+1
if getCexeOutput("D:\cp.exe","90,100","1")then k=k+1
在步骤S203中,如果所述待测试C程序的运行时间超过预设时间,则终止运行所述待测试C程序。
在运行待测试C程序的过程中进行计时,设定预设时间,在预设时间内等待待测试C程序的运行,以代码Sleep Elapse实现,如果在预设时间内没有运行结束,则终止运行。通过暂停机制控制调试的C程序的运行时间,有效避免了程序运行时错误。
进一步的,如果包括多个预设输入数据,则在以命令行方式运行待测试C程序时,多次输入预设输入数据,并多次运行待测试C程序,从而得到多个输出数据,将多个输出数据依次保存至第二数据文件。
在步骤S300中,得到运行所述待测试C程序后输出的输出数据,并保存至第二数据文件。
将输出定向至第二数据文件,从而将输出数据保存至第二数据文件中,而不是现实在屏幕上。另外,如果输出数据为多行,也可以将输出数据按行分割后保存至第二数据文件中,例如,
在步骤S400中,读取所述第二数据文件中的输出数据,将所述输出数据与预设输出数据进行对比,根据对比结果评价所述待测试C程序。
从第二数据文件中读取输出数据,将输出数据与预设输出数据进行对比,根据对比结果评价待测试C程序。包括两种对比方式:
第一种,只使用一组输入数据,如果生成的输出数据与预设的输出数据全部相同,则确定C程序正确。这时只需调用一次getCexeOutput函数。
第二种,通过预设不同的输入数据多次调用getCexeOutput函数,根据每次得到的输出数据分别计分,以确保评价的有效性和正确性。
对于第二中方式,可根据多个输出数据与输出数据相同的比例,确定待测试C程序的评价分值。如果输出数据中有两个与预设输出数据相同,另外两个输出数据与预设输出数据不相同,则输出数据与预设输出数据相同的比例为50%,那么待测试C程序占总分值的50%,如果总分值为20分,那么待测试C程序的分值为10分。当需要评价下一个待测试C程序时,删除上一次测试得到的输出结果,也就是清除第二数据文件中的输出结果,避免在对比预设输出结果时出错。
由上述描述可知,本申请实施例提供的C程序的评价方法,获取待测试C程序,以及将预设输入数据保存至第一数据文件;以命令行方式运行所述待测试C程序;得到运行所述待测试C程序后输出的输出数据,并保存至第二数据文件;读取所述第二数据文件中的输出数据,将所述输出数据与预设输出数据进行对比,根据对比结果评价所述待测试C程序。因此,通过不同的输入数据输入待测试C程序中运行,确定同一个待测试C程序在不同的输入数据下能否输出正确的输出结果,以此来进行评价,与现有技术相比,输出结果不固定,学生无法投机取巧,所以,对待测试C程序的评价更加准确。
与上述实施例对应的,本申请实施例还提供了一种C程序的评价装置,包括处理器、存储器及显示器,其中:存储器用于存储程序代码;处理器用于读取所述存储器中的程序代码,并执行上述实施例提供的方法;显示器用于显示评价结果。
本领域技术人员在考虑说明书及实践这里发明的公开后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (7)
1.一种C程序的评价方法,其特征在于,所述方法包括:
获取待测试C程序,以及将预设输入数据保存至第一数据文件;
以命令行方式运行所述待测试C程序;
得到运行所述待测试C程序后输出的输出数据,并保存至第二数据文件;
读取所述第二数据文件中的输出数据,将所述输出数据与预设输出数据进行对比,根据对比结果评价所述待测试C程序。
2.根据权利要求1所述的方法,其特征在于,所述以命令行方式运行所述待测试C程序,包括:
输入重定向至第一数据文件,以及输出重定向至第二数据文件;
从所述第一数据文件中读取所述预设输入数据,将所述预设输入数据输入至所述待测试C程序中运行;
如果所述待测试C程序的运行时间超过预设时间,则终止运行所述待测试C程序。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果所述输出数据为空,则所述待测试C程序错误。
4.根据权利要求1所述的方法,其特征在于,将预设输入数据保存至第一数据文件,包括:
如果所述预设输入数据包括多行数据,则按行分割所述预设输入数据;
依次将每一行预设输入数据写入第一数据文件。
5.根据权利要求1所述的方法,其特征在于,所述以命令行方式运行所述待测试C程序,包括:
如果有多个所述预设输入数据,则以命令行方式多次运行所述待测试C程序;
所述得到运行所述待测试C程序得到的输出数据,并保存至第二数据文件,包括:
得到以命令行方式多次运行所述待测试C程序输出的多个输出数据,并依次保存至所述第二数据文件。
6.根据权利要求5所述的方法,其特征在于,将所述输出数据与预设输出数据进行对比,根据对比结果评价所述待测试C程序,包括:
根据所述多个输出数据与预设输出数据相同的比例,确定所述待测试C程序的评价分值。
7.一种C程序的评价装置,其特征在于,包括处理器、存储器及显示器,其中:
所述存储器,用于存储程序代码;
所述处理器,用于读取所述存储器中的程序代码,并执行所述权利要求1-6任一所述的方法;
所述显示器,用于显示评价结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710806781.7A CN107391387A (zh) | 2017-09-08 | 2017-09-08 | 一种c程序的评价方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710806781.7A CN107391387A (zh) | 2017-09-08 | 2017-09-08 | 一种c程序的评价方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107391387A true CN107391387A (zh) | 2017-11-24 |
Family
ID=60349419
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710806781.7A Pending CN107391387A (zh) | 2017-09-08 | 2017-09-08 | 一种c程序的评价方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107391387A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020026301A1 (en) * | 2000-06-14 | 2002-02-28 | Kazuyoshi Takeda | Automatic evaluation method, automatic evaluation system, and storage medium storing automatic evaluation program |
CN102214136A (zh) * | 2010-04-09 | 2011-10-12 | 三美电机株式会社 | 评价系统、评价装置、评价方法以及评价程序 |
CN103440152A (zh) * | 2013-09-09 | 2013-12-11 | 中国农业银行股份有限公司 | 一种程序变更评价方法及系统 |
CN106326112A (zh) * | 2016-08-15 | 2017-01-11 | 江苏海事职业技术学院 | 一种程序作业自动批改的方法和装置 |
-
2017
- 2017-09-08 CN CN201710806781.7A patent/CN107391387A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020026301A1 (en) * | 2000-06-14 | 2002-02-28 | Kazuyoshi Takeda | Automatic evaluation method, automatic evaluation system, and storage medium storing automatic evaluation program |
CN102214136A (zh) * | 2010-04-09 | 2011-10-12 | 三美电机株式会社 | 评价系统、评价装置、评价方法以及评价程序 |
CN103440152A (zh) * | 2013-09-09 | 2013-12-11 | 中国农业银行股份有限公司 | 一种程序变更评价方法及系统 |
CN106326112A (zh) * | 2016-08-15 | 2017-01-11 | 江苏海事职业技术学院 | 一种程序作业自动批改的方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20160048505A1 (en) | Techniques for automatically swapping languages and/or content for machine translation | |
US20050204241A1 (en) | Method and device for analyzing software error | |
Teovanović | Individual differences in anchoring effect: Evidence for the role of insufficient adjustment | |
CN109189895B (zh) | 一种针对口算题的题目批改方法及装置 | |
GB2587314A (en) | Using a machine learning module to determine when to perform error checking of a storage unit | |
CN107491536B (zh) | 一种试题校验方法、试题校验装置及电子设备 | |
CN104156305B (zh) | 一种应用程序测试方法及装置 | |
CN110413961A (zh) | 基于分类模型进行文本评分的方法、装置和计算机设备 | |
CN113779912B (zh) | 一种芯片验证系统、方法、装置、电子设备及存储介质 | |
Erceg-Hurn et al. | Robust statistical estimation | |
CN109324956B (zh) | 系统测试方法、设备及计算机可读存储介质 | |
CN108985379B (zh) | 分类器的性能评估方法、装置和计算机可读存储介质 | |
US7434132B2 (en) | Method and system of configuring a software program | |
US10665123B2 (en) | Smart examination evaluation based on run time challenge response backed by guess detection | |
US20200250560A1 (en) | Determining pattern similarities using a multi-level machine learning system | |
CN107391387A (zh) | 一种c程序的评价方法及装置 | |
CN106599312B (zh) | 知识库的检验方法、装置及终端 | |
CN112749093A (zh) | 测试用例管理方法、装置、设备和存储介质 | |
CN107122272A (zh) | 一种cpu寄存器信息的自动校验方法及装置 | |
CN111209214B (zh) | 代码测试处理方法、装置、电子设备及介质 | |
EP3163463A1 (en) | A correlation estimating device and the related method | |
US20180129486A1 (en) | System and method for estimating programming capability | |
US10432547B2 (en) | Verifying functionality restrictions of computing devices | |
Catalena | Mining student submission information to refine plagiarism detection | |
CN111352941A (zh) | 依据答题结果维护题库品质的系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171124 |