FreePascal高手看看问题出在哪里?显示错误201
发布网友
发布时间:2024-10-28 13:49
我来回答
共1个回答
热心网友
时间:2024-10-28 14:07
很显然这是十进制转二进制的程序:
1、首先,你的‘ch'与'kh'数组的下限不是1,而是0
2、while gao<>1 do 这句话是错误的,二进制的1并非只有末尾有
3、 i:=i+1; gao:=kh[i]; 此时i在循环前的初值是32767,应为’i:=i-1‘
那么,这是我改进的程序:
var
ch,kh:array[0..32767] of longint;i:longint;num,gao,s,yu:longint;
begin read(num);
if ((num>=1) and (num<=32767)) then begin
i:=1;
while num<>0 do begin
yu:=num mod 2;
ch[i]:=yu ;
num:=num div 2;
i:=i+1;
end;
for s:=i-1 downto 1 do write(ch[s]);
readln;
readln;
end;
end.
注意:for s:=i-1 downto 1 是将循环变量s从i-1递减至1追问谢谢,试试