我有一个简单但令人讨厌的问题。
当我执行以下代码并为“ 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.
答案 0 :(得分:1)
这是程序计算的内容。该表在单独的行上分配了b
,在同一行上分配了a
和c
:
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