为何我的For循环仅输出最后计算结果?如何修复?
问题修复说明
问题根源
Pascal 的 for 循环默认仅将 do 后紧跟的单条语句视为循环体。你的代码中,只有 x:=n*i; 处于循环范围内,writeln(x); 是在循环全部执行完毕后才运行的,因此只会打印最后一次计算的结果。
修复后的代码
begin writeln('FOR'); for i:=1 to 10 do begin x:=n*i; writeln(x); end; readln(); end;
核心改动是用 begin...end 将 x:=n*i; 和 writeln(x); 包裹起来,让这两行代码都成为循环体的一部分,这样每次循环计算后都会立即打印结果。
关于你提到的测试现象解释
- 移除
x:=n*i;后打印10次0:此时你应该已经将writeln(x)放入了循环体(可能调整了代码结构),而 Pascal 中未初始化的数值变量默认值为0,因此每次循环都会输出0。 - 将
writeln中的x替换为n后打印10次n:同样是因为writeln处于循环体内,每次循环都会输出n的固定值,因此重复打印10次。
内容的提问来源于stack exchange,提问作者SheikYerbouti
相关产品推荐
相关产品推荐

