招生考试网
学历| 高考 美术高考 考研 自考 成考 专升本 中考 会考 外语| 四六级 职称英语 商务英语 公共英语 日语能力 翻译资格 JTEST
资格| 公务员 报关员 银行从业 司法 导游 教师资格 报关 财会| 会计证 经济师 会计职称 注册会计 税务师 资产评估 审计师
工程| 一建 二建 造价师 造价员 咨询师 监理师 安全师 医学| 卫生资格 执业医师 执业药师 执业护士 | 教案 论文 文档
IT类| 计算机等级 计算机软考 职称计算机 高校计算机 推荐-国家公务员 事业单位招聘 军校国防生 自主招生 艺术特长生 招飞
 3773考试网 - 计算机等级考试 - 报考指南 - 正文

上机必读二级上机考试部分评分方法

来源:招生考试网 2006-8-10

    自动评分系统有客观、公正的优点,但也有死板的缺点,要想得到比较好的分数,应当考虑到机器的这一特点。实际考试还有人工复查一项,由省级考试部门负责进行.但是人工复查如何进行,我们完全不得而知。因此我们下面的所有内容均不含人工复查内容,仅从考试系统本身来进行分析和说明。
  我们从多次使用中摸索到的考生可能感兴趣的几点介绍如下:
  1. DOS操作题的评分比较复杂,评分系统在几次考试中标准似乎有一些变化。
  按系统的操作说明,只要命令正确即可得分,但实际情况并非如此。机器评分只根据结果,结果正确即得分,命令正确而结果不正确,不能得分。
  要注意使用规定的命令。比如考试系统不允许使用 deltree 命令,您如果习惯于用该命令来删除子目录,考试时将无法使用。
  本人曾做过试验,将结果做得完全符合要求,而不让考试系统看到我所作的事(比如使用另外的工具来做),结果照样得分;而使用正确的命令(即使与答案完全相同),而结果不正确(自然使用了“不正当”的方法),评分结果是不能得分。

  2. 程序修改题的评分大约有下面一些特点:
  有结果输出到文件中的,先检查结果文件。如果结果文件内容完全正确,给满分,并不再检查修改内容。
  结果没有输出到文件,或结果文件不正确的,逐个错误语句进行检查。分数平均分配(如果共有两个错误,每修正一个得15分;共有三个错误,则每修正一个得10分……)。
  检查标志为“***found***”。即机器死板地检查第X个“***found***”下面第N行(第X个错误语句应在的行)是否修改得和标准答案中的一个相同,相同则给分,否则不给分。
  例如:您的修改是完全正确的,与标准答案也完全一致。但是您插入了一个空行在“***found***”和修改了的行之间,这显然不影响程序的正确性,但自动评分系统却会认定您“修改错误”。
  更有甚者:如果您在程序的前面增加一个含有“***found***”的注释行,则不论您的程序修改得有多正确,评分系统会毫不留情地给您一个零分。
  程序修改题中还应注意考虑原程序作者的思路,所作改动应尽量小。
  这里有一个极端的例子:(1999年上半年二级BASIC)



'* 给定程序MODI1.BAS其功能是: 从键盘上每次输入两个100以下
'* 的正数分别赋给Y和Z(如不符合此条件的, 则重新输入),累加到累
'* 加器X中,直到X的值超过500为止。请找出程序中的错误,将程序调
'* 试出所需结果。
'* 注意: 不得增行或删行, 也不得更改程序的结构!

X = 0
DO
 DO
  t = 0
  INPUT "Y,Z="; Y, Z
  IF 0 < Y AND Y < 100 AND 0 < Z AND Z < 100 THEN
  t = 2
  ELSE
  PRINT "Out of Range! Input again"
  END IF
'**********found**********
 LOOP WHILE t <> 1
 X = X + Y + Z
'**********found**********
'WHILE X <> 500
PRINT "X="; X
END

  这里共有两个错误:第一个为条件错,第二个语句和条件均有错。因此第一个错误可只改动条件为 t<>2 或 t=0,整个语句为
   loop while t<>2 或者 loop while t=0
  第二个错误可改为
   LOOP WHILE X <= 500
  总之,这里的思路就是用 DO ... LOOP WHILE <条件> 语句。
  如果使用 do ... loop until <条件>,程序可以同样成立。如第一个错误改为
  loop until t=2
  运行结果完全相同。
  但是自动评分系统会认为您“修改错误!”扣掉您应得的15分!!!

  


void fun (char *s, char *t)
{
/************found************/
 int i,sl;
// int i;
/* 由于C语言对书写格式不作要求,本错误如改为 int i, 其结果显然也是
  正确的。然而遗憾的是,自动批改系统此时会判错! */
 sl = strlen(s);
 for (i=0; i < sl; i++)
/************found************/
  t[ i ] = s[sl-i-1];
// t[i] = s[sl-i];
 for (i=0; i   t[sl+i] = s[i];
 t[2*sl] = '\0';
}

main()
{ char s[100], t[100];
 clrscr();
 printf("\nPlease enter string s:"); scanf("%s", s);
 fun(s, t);
 printf("The result is: %s\n", t);
}
 有的考生怕修改过程中忘记了原来的内容,把原来的内容用注释的方法保留在程序中(应该说,这是一个好的习惯)。比如把上面的内容写成
  t[ i ] = s[sl-i-1]; // t[ i ] = s[sl-i]; 或者
  t[ i ] = s[sl-i-1]; /* t[ i ] = s[sl-i]; */
  毫无疑问,这是正确的。但是评分系统竟然会判为“错误”,不给分。考试系统会出现这种低级错误,倒是我以前未曾想到的,而且直至目前,这种错误仍未得到修正。



  • 上一个文章:
  • 网站版权与免责声明
    ①由于各方面情况的不断调整与变化,本网所提供的相关信息请以权威部门公布的正式信息为准.
    ②本网转载的文/图等稿件出于非商业性目的,如转载稿涉及版权及个人隐私等问题,请在两周内邮件fjksw@163.com联系.
    最新文章


    | 关于我们 | 联系我们 | 版权申明 | 网站导航 |
    琼ICP备12003406号