0

我有一个关于如何在 Delphi 中准确填充矩阵的问题?在Delphi中,以哪种方式,哪一行和哪一列先行,哪个数字后跟哪个数字?你能帮我澄清一下吗?详情如下:

我有 5x5 矩阵,编号为 1 到 5,代码如下:

for i := 1 to 5 do
   for j := 1 to 5 do
       x[i, j] := i + j;

x[2,2] 和 x[1,1] 这样的位置会是什么?填充矩阵的顺序是什么?以何种方式?第一个,第二个,第三个等填充什么行和列?谢谢您的回答。

4

2 回答 2

5

代码按照出现的顺序从上到下运行。如果它有助于更​​好地查看它(我不建议您编写这样的代码,但只是更好地显示逻辑):

for i := 1 to 5 do
  begin
    for j := 1 to 5 do
      begin
        x[i, j] := i + j;
      end;
  end; 

逻辑从 i = 1 开始,然后计算内部循环。所以基本上,你正在这样做:

 x[1, 1] := 1 + 1;
 x[1, 2] := 1 + 2;
 ...
 x[1, 5] := 1 + 5;
 x[2, 1] := 2 + 1;
 ..
 x[5, 4] := 5 + 4;
 x[5, 5] := 5 + 5;

希望这可以帮助您了解 for 循环在这种情况下是如何工作的。

于 2013-08-23T04:52:22.587 回答
5

这个问题与矩阵或 Delphi 本身无关。相反,它都是关于嵌套的 for 循环。

我将向您展示如何自己解决这个问题。创建这个简单的控制台应用程序:

program NestedLoops;

procedure Main;
var
  i, j: Integer;
begin
  for i := 1 to 5 do
    for j := 1 to 5 do
    begin
      Write('i=');
      Write(i);
      Write(' j=');
      Write(j);
      Writeln;
    end;
end;

begin
  Main;
end.

你会看到这样的输出:

i=1 j=1
i=1 j=2
i=1 j=3
i=1 j=4
i=1 j=5
i=2 j=1
i=2 j=2
....

无需运行代码也很容易预测这一点。想一想:

  • i 循环是外循环。在第一次迭代中,i 为 1。
  • 然后内部循环运行,并运行到完成。所以我们有 j 值 1、2、3、4 和 5,而我们仍然处于 i=1,即第一次外循环迭代。
  • 然后我们有第二次外循环迭代,i=2,和一个全新的完整的内循环 j 值集。
  • 对于剩余的外部循环 i 迭代,依此类推。
于 2013-08-23T06:20:35.323 回答