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]; */
毫无疑问,这是正确的。但是评分系统竟然会判为“错误”,不给分。考试系统会出现这种低级错误,倒是我以前未曾想到的,而且直至目前,这种错误仍未得到修正。
因此考生必须注意把错误的内容全部删除掉。