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追问谢谢,试试

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com