说下思想吧,无非就是用整数n对进制数取余,取余一次,除一次。
比如说求二进进制,就是n对2取余,保存余数,然后n div 2,然后再取余,直到n变成0,把所有余数连在一起,就是结果了。
8进制就是对8取余,然后除以8
16进制就是对16取余,然后除以16,不过得到的余数要做一下处理,余数为10,就改成a,余数为11就改成b。。。。
program number;
var
n:longint;
function change(x,k:longint):qword;
var
num:longint;
p:qword;
begin
num:=x;change:=0;p:=1;
while num<>0 do
begin
inc(change,num mod k*p);
num:=num div k;
p:=p*10;
end;
end;
begin
read(n);
writeln(change(n,2),' ',change(n,8),' ',change(n,16));
end.
这个我试过了,应该是正确的
如果n是更大的数可以用数组
如果需要的话,可以继续追问
望采纳!!!