【问题标题】:Pascal - Order Of Operations帕斯卡 - 运算顺序
【发布时间】:2018-07-24 06:07:24
【问题描述】:

我有一个简单但令人恼火的问题。
当我执行下面的代码并为“a”写 10 时,结果是 1010,
但我真的不知道如何,如果我尝试自己解决这个问题。
知道操作的顺序,但我有点卡住了,好像我会忽略一些东西。

请给我一个启动。我将不胜感激。

program task1 (input,output);

var
a, b, c : integer;

begin
    b := 0;
    c := 1;
    readln(a);
    while a > 0 do
    begin
        b := b + c * (a mod 2);
        a := a div 2;
        c := c * 10;
    end;
    writeln(b)
end.

【问题讨论】:

  • 把每个循环写在纸上,你会看到的。你也应该learn to debug
  • 感谢您的评论和提示,我会记住不要太快打扰社区。​​span>

标签: math pascal operator-precedence


【解决方案1】:

这是程序计算的结果。该表在单独的行上分配了b,然后在同一行上分配了ac

 a     b      c
10     0      1    Initialization
       0           10 mod 2 = 0
 5           10
      10            5 mod 2 = 1; 0 + 10 * 1 = 10
 2          100
      10            2 mod 2 = 0
 1         1000
    1010            1 mod 2 = 1; 10 + 1000 * 1 = 1010
 0        10000

【讨论】:

  • 非常感谢。它真的帮了我很多。就像我看到你的帖子一样,我捂着脸,因为我意识到我忽略了代码中的“while”这个小词。在进行数学运算时使用表格会更容易。再次感谢您。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-03
  • 1970-01-01
  • 2018-01-29
  • 1970-01-01
  • 2012-09-06
  • 1970-01-01
  • 2017-10-27
相关资源
最近更新 更多