十进制到二进制自由Pascal

十进制到二进制自由Pascal,pascal,Pascal,我需要一个从十进制数到二进制数的代码,但我的程序显示它们是倒转的,例如:需要显示1011000,但它显示0001101。 +我不能在这个程序中使用体量和数组 var x,y,i:longint; BEGIN readln(y); repeat x:= y mod 2; y:= y div 2; write(x); until y = 0; END. 我认为你可以使用递归函数。例如: procedure dec2

我需要一个从十进制数到二进制数的代码,但我的程序显示它们是倒转的,例如:需要显示1011000,但它显示0001101。 +我不能在这个程序中使用体量和数组

  var
    x,y,i:longint;

  BEGIN
    readln(y);

    repeat
      x:= y mod 2;
      y:= y div 2;
      write(x);
    until y = 0;
  END.

我认为你可以使用递归函数。例如:

procedure dec2bin(y) 
BEGIN
  x := y mod 2;
  y := y mod 2;
  if y > 1 then
    dec2bin(y)
  end
  write(x)
END
BEGIN
readln(y);
dec2bin(y)
END.

我不确定语法是否正确,因为我很久以前就在使用Pascal了。但我想你能理解我的想法,并做出这样的决定。

这应该能满足你的需求

function decimalToBinary(a:LongInt):String;
var d:Integer;
str:String;
Begin
  str:='';
  while a>0 do begin
    d:=a mod 2;
    str:=concat(IntToStr(d),str);
    a:=a div 2;
  end;
  decimalToBinary:=str;
End;

也不能使用字符串!这就排除了一个简单的解决方案:可以使用Pascal位运算吗?什么是“大规模”?