procedure substract(a,b:hp;var c:hp); {a,b,c为字符串,a,b中的字符是数字倒过来排的;如123则存入为'321'}
var i,len:integer;
begin
fillchar(c,sizeof(c),0);{把a,b字符串中数想减,并存入C中,这时是把C全置0}
if a[0]>b[0] then len:=a[0] else len:=b[0];{len大小为字符串中,a 或b 中较长的,即数较大的长度}
for i:=1 to len do begin
inc(c,a-b);{第i位相减,存入c,后面的就是在i位置时a小于b时向后一位借一.}
if c<0 then begin inc(c,10);dec(c[i+1]); end;
while (len>1) and (c[len]=0) do dec(len);{当len>1即长的那一位还有数位,c[len]=0即c[len]处还未得数}
c[0]:=len;{最后所得数的长度c[0]}
end;