var N,k:integer;
B:array[1..1000] of integer;
Procedure chg10(N,x:integer); {将十进制数N转换成x进制数}
Begin k:=0; {转换后的x进制数位的长度}
while N<>0 do {N不为0时}
begin B[k]:=N mod x; {除以x取余数}
N:=N Div x; {取最大商N}
k:=k+1; {x进制数位加1}
end;
end;{chg10}
Procedure Sput(N,x:integer);{进制数输出}
VAR i:integer; A:string;
Begin A:='0123456789ABCDEF'; {表示x进制数的位数串}
write(N:6,' Turn into ',x:2,':');
for i:=k-1 downto 0 do write(copy(A,B+1,1));{逆序输出x进制数}
writeln;
end; {Sput}
begin {MAIN}
write('Input N(-32767 to 32767):');readln(N);
if (N<=-32767)or(N>32767) then
begin writeln('Input error!');halt;end;
chg10(N,2);Sput(N,2); {十进制数转换成2进制数,并输出}
chg10(N,8);Sput(N,8); {十进制数转换成8进制数,并输出}
chg10(N,16);Sput(N,16); {十进制数转换成16进制数,并输出}
end.
思路我觉着对着哪。
为什么会出现如下:
input 69
69 turn into 2:10001008
69 turn into 8:10001008
69turn into 16:4001007
按理来说,69 turn into 2:10001008是不正确的呀!