跳到主要内容

常见错误


1. AND / OR 混淆 ❌

错误: IF value >= 1 AND value <= 100 THEN 用于 invalid 判断
原因: 这个条件判断的是 valid 值,而 loop 需要的是 invalid 条件
正确: IF value < 1 OR value > 100 THEN

记忆口诀: "Invalid 用 OR,valid 用 AND"


2. Loop 内缺少重新输入 ❌

// ❌ 错误
INPUT value
WHILE value < 1 OR value > 100
OUTPUT "Invalid"
ENDWHILE // 永不退出
// ✅ 正确
INPUT value
WHILE value < 1 OR value > 100
OUTPUT "Invalid"
INPUT value
ENDWHILE

3. 不等号边界错误 ❌

题目要求错误写法正确写法
1–100 inclusivevalue > 0 AND value < 101value >= 1 AND value <= 100
1–100 exclusivevalue >= 1 AND value <= 100value > 1 AND value < 100

4. Check Digit 权重顺序错误 ❌

  • 未看清题目要求的 weight 分配方向(从左到右还是从右到左)
  • 常见 ISBN-13: odd position weight = 1, even position weight = 3
  • 注意 position 通常从 1 开始计数

5. Mod-11 余数 10 未处理 ❌

// ❌ 错误
checkDigit ← 11 - (total MOD 11)
// 当 total MOD 11 = 1 时,checkDigit = 10,但 check digit 是一位数字

// ✅ 正确
remainder ← total MOD 11
IF remainder = 0 THEN
checkDigit ← 0
ELSE
checkDigit ← 11 - remainder
IF checkDigit = 10 THEN
checkDigit ← "X"
ENDIF
ENDIF

6. Flag 未初始化 ❌

// ❌ 错误
REPEAT
INPUT value
IF value >= 1 AND value <= 100 THEN
valid ← TRUE
ENDIF
UNTIL valid // valid 未定义
// ✅ 正确
valid ← FALSE
REPEAT
...
UNTIL valid

7. Validation 与 Verification 混淆 ❌

概念定义例子
Validation检查数据是否符合预设规则年龄不能为负数,邮箱格式检查
Verification检查数据是否与原始来源一致两次输入密码,人工核对纸质表格

8. 多重验证逻辑混乱 ❌

// ❌ 错误:多个独立的 IF 而不是 ELSEIF
IF empty THEN invalid ← TRUE
IF not numeric THEN invalid ← TRUE
// 可能后一个覆盖前一个的错误
// ✅ 正确:ELSEIF 链或逐层检查
IF empty THEN
OUTPUT "Empty"
ELSEIF NOT numeric THEN
OUTPUT "Not numeric"
ELSEIF out of range THEN
OUTPUT "Out of range"
ELSE
valid ← TRUE
ENDIF