为什么会出现计算机C语言考试时填空题没有生成目标文件

如题所述

visual c++
下面有错误提示
操作系统为win xp,语言环境为Visual C++6.0,具体可以看下文:

2009年全国计算机等级考试调整方案
来源:云南招生考试信息网 时间:2008-11-22

教育部考试中心计划于2008年4月(第27次考试)开始在全国使用2007年版NCRE考试大纲,对NCRE的考试科目、考核内容、考试形式进行调整。这次调整涉及NCRE所有级别,具体方案如下:

一、关于一级

考试科目:新增一级永中Office科目。加上原有的一级MS Office、一级WPS Office和一级B,一级共四个科目。

考试形式:完全采取上机考试形式,各科上机考试时间均为90分钟。

考核内容:四个科目的考核内容包括微机基础知识和操作技能两部分。基础知识部分占全卷的20%(20分),操作技能部分占80%(80分)。各科目对基础知识的要求相同,以考查应知应会为主,题型为选择题。操作技能部分包括汉字录入、Windows使用、文字排版、电子表格、演示文稿、因特网的简单应用。一级B在现有基础上增加对因特网知识的考核;与一级其他科目相比,一级B没有演示文稿部分。

系统环境:一级科目中操作系统为中文版Windows 2000,MS Office版本为中文专业版Office 2000,WPS Office版本由目前的“2003教育部考试专用版”升级为“2007教育部考试专用版”,永中Office使用“永中Office2007教育考试版”。

按照北京金山股份有限公司和永中科技有限公司的商务要求,WPS Office和永中Office两个教育考试版软件的销售由北京时代阳光商贸有限公司代理。

二、关于二级

考试科目:新增二级Delphi语言程序设计,加上原有的二级C等六个科目,二级共七个科目。二级科目分成两类,一类是语言程序设计(C、C++、Java、Visual Basic、Delphi),另一类是数据库程序设计(Visual FoxPro、Access)。

考核内容:二级定位为程序员,考核内容包括公共基础知识和程序设计。所有科目对基础知识作统一要求,使用统一的公共基础知识考试大纲和教程。二级公共基础知识在各科笔试中的分值比重为30%(30分)。程序设计部分的比重为70%(70分),主要考查考生对程序设计语言使用和编程调试等基本能力。

考试形式:二级所有科目的考试仍包括笔试和上机考试两部分。二级C笔试时间由120分钟改为90分钟,上机时间由60分钟改为90分钟。所有二级科目的笔试时间统一为90分钟,上机时间统一为90分钟。

系统环境:二级各科目上机考试应用软件为:中文专业版Access 2000、中文专业版Visual Basic 6.0、中文专业版Visual FoxPro 6.0、Visual C++ 6.0,二级C上机应用软件由Turbo C 2.0改为Visual C++6.0,二级Java由现在的Java JDK 1.4.2改为专用集成开发环境“NetBeans中国教育考试版2007”(有关网站将提供免费下载),二级Delphi使用Delphi7.0版本。

三、云南招生考试信息网关于三级

科目名称、考核内容、考试形式保持不变。

系统环境:三级PC技术上机考试仍为汇编语言,编程环境为MASM4.0/LINK(或TASM/TLINK);三级其它科目上机考试仍为C语言编程,但上机环境由Turbo C 2.0改为Visual C++6.0。

四、关于四级

停考科目:现在的四级将于2007年下半年考试后停考,2008年不再接收新考生报考,只接收补考报名,考试时间为2008年下半年,补考考生上机仍然使用Turbo C2.0。

新增科目:根据市场对计算机应用岗位的需要,设计三个新的面向计算机应用、面向职业岗位需求的应用证书:四级网络工程师、四级数据库工程师、四级软件测试工程师。

考试形式:目前设计为笔试,笔试通过者获得四级该科目证书。笔试时间120分钟。

五、关于NCRE职业英语

为适应IT行业对实用性人才的需求,提高IT行业从业人员和准从业人员的英语运用能力,NCRE考试体系将增设NCRE职业英语考试。该考试将设置三个级别,计划于2008年上半年推出一级考试。

NCRE职业英语一级考试要求考生具备计算机基础知识,能在日常生活中、与信息技术相关的工作环境中运用英语进行基本的交流。该考试主要面向计算机操作员、计算机维护人员、计算机一般销售人员、网络编辑员、客服人员、办公文秘等岗位,适合中等职业学校计算机及相关专业学生,及其它有需求的学生、在职人员等。

NCRE职业英语的具体考核内容和考试形式将另外发文通知。

六、关于上机考试

上机考试仍为C/S结构的局域网,服务器端使用的操作系统版本为Windows 2000 Server,管理机和考试机使用的操作系统为Windows 2000 Professional。上机考试系统使用的数据库由Access2000改为SQL Server2000。
C++是C的扩充集,二者语法有细微区别.

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

自动评分系统有客观、公正的优点,但也有死板的缺点,要想得到比较好的分数,应当考虑到机器的这一特点。实际考试还有人工复查一项,由省级考试部门负责进行.但是人工复查如何进行,我们完全不得而知。因此我们下面的所有内容均不含人工复查内容,仅从考试系统本身来进行分析和说明。
我们从多次使用中摸索到的考生可能感兴趣的几点介绍如下:
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分!!!

过去 C 语言的考试题目一般都出的较为严谨,很少有错误发生(但2002上半年的题虽然没发现什么严重错误,其质量实在不敢恭维)。但在2001年下半年中,仍有错判现象。举一例如下:
/*
给定程序MODI1.C中函数fun的功能是:先将在字符串s中的字符
按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。
例如:当s中的字符串为:"ABCDE"时,
则t中的字符串应为:"EDCBAABCDE"。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序
的结构!
*/
#include <conio.h>
#include <stdio.h>
#include <string.h>

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 = s[sl-i];
for (i=0; i t[sl+i] = s;
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]; */
毫无疑问,这是正确的。但是评分系统竟然会判为“错误”,不给分。考试系统会出现这种低级错误,倒是我以前未曾想到的,而且直至目前,这种错误仍未得到修正。
因此考生必须注意把错误的内容全部删除掉。
3. 编程题除去少部分类似填空或改错的BASIC程序外,均有结果输出到文件。自动评分时检查结果文件,如果结果文件内容正确,则给满分;如果没有结果文件(即使程序是正确的,但没有运行),则得零分;如果应有若干个结果,则得分一般按结果数平均分配(比如应有两个结果,其中一个正确,另一个错误,则一般可得40/2=20分)。在多数情况下,编程题往往不是满分就是零分。
要注意的是,在FoxBASE编程题中,如果要生成新的数据库,只要库结构正确,哪怕其他都是错误的,也可得10到20分(随题目不同而有所变化)。因此做不到编程题的考生不可轻言放弃。
部分BASIC的编程题实际上是填空题,因此是一个个空来改的,分数按空数平均分配。与程序修改题不同的是,它没有使用“***found***”标记,即使有添行等,也能正确进行评分。
有的编程题对考生提出了一些限制,比如不许使用某个或某类函数,或不许使用某种方法等。在评分时,却很可能没有考虑如何限制这一点。我曾试过专门用“不许”的方法去做题,在结果正确的情况下,照样得满分。看来考试系统也是“撑死胆大的,饿死胆小的”。当然,本人绝不鼓励考生不按要求做。如果你看了我的贴子,去做一个“胆大的”,得不到分可不要找我负责哟!!!
温馨提示:答案为网友推荐,仅供参考