主题:数组参数问题请教!!!
数组参数问题请教!!!
program ex_2;
procedure BandConversion(n : double; m : integer; var a : array of char; var l : integer);
var
i, j, t : integer;
tch : char;
begin
if n < 0 then
n := -n;
i := 0;
t := trunc(n);
repeat
i := i+1;
if (m > 10) and (t mod m >= 10) then
a[i] := chr((t mod m) - 10 + ord('a'))
else
a[i] := chr((t mod m) + ord('0'));
t := t div m;
until t <= 0;
for j := 1 to i div 2 do
begin
tch := a[j];
a[j] := a[i-j+1];
a[i-j+1] := tch;
end;
if n <> trunc(n) then
begin
i := i+1;
a[i] := '.';
while i <= 98 do // 为什么输出结果没有 98 位,只有 16 位?
begin
i := i+1;
n := n-trunc(n);
n := n*m;
if (m > 10) and (n >= 10) then
a[i] := chr(trunc(n) - 10 + ord('a'))
else
a[i] := chr(trunc(n) + ord('0'));
if n < 1E-32 then
break;
end;
end;
l := i;
end;
var
a : array [1..98] of char;
n : double;
i, m, l : integer;
begin
readln(n, m);
BandConversion(n, m, a, l);
for i := 2 to l+1 do // i 为什么 要 从 2 开始,而不是从 1 开始
write(a[i]);
readln;
end.
上面是进制转换的程序,可以将十进制数转换成 M 进制。
请问:
1. i 为什么要从 2 开始,而不是从 1 开始
2. 为什么输出结果没有 98 位,只有 16 位?
编程环境为 Lazarus 0.9.28.2
program ex_2;
procedure BandConversion(n : double; m : integer; var a : array of char; var l : integer);
var
i, j, t : integer;
tch : char;
begin
if n < 0 then
n := -n;
i := 0;
t := trunc(n);
repeat
i := i+1;
if (m > 10) and (t mod m >= 10) then
a[i] := chr((t mod m) - 10 + ord('a'))
else
a[i] := chr((t mod m) + ord('0'));
t := t div m;
until t <= 0;
for j := 1 to i div 2 do
begin
tch := a[j];
a[j] := a[i-j+1];
a[i-j+1] := tch;
end;
if n <> trunc(n) then
begin
i := i+1;
a[i] := '.';
while i <= 98 do // 为什么输出结果没有 98 位,只有 16 位?
begin
i := i+1;
n := n-trunc(n);
n := n*m;
if (m > 10) and (n >= 10) then
a[i] := chr(trunc(n) - 10 + ord('a'))
else
a[i] := chr(trunc(n) + ord('0'));
if n < 1E-32 then
break;
end;
end;
l := i;
end;
var
a : array [1..98] of char;
n : double;
i, m, l : integer;
begin
readln(n, m);
BandConversion(n, m, a, l);
for i := 2 to l+1 do // i 为什么 要 从 2 开始,而不是从 1 开始
write(a[i]);
readln;
end.
上面是进制转换的程序,可以将十进制数转换成 M 进制。
请问:
1. i 为什么要从 2 开始,而不是从 1 开始
2. 为什么输出结果没有 98 位,只有 16 位?
编程环境为 Lazarus 0.9.28.2