输入一个数,比如24,输出这个数的2+4的和即6,如果和大于10,比如输入99,9+9和为18>10则再1+8=9,输出9我设计的算法到7位数的时候就死了``求助
procedure TForm1.Button1Click(Sender: TObject);
var
  i,j,k,m,n,h:integer;
begin
  if(StrToInt(Edit1.text)<10)
  then
    begin
       label3.caption :=Edit1.text;
    end;
  if(StrToInt(Edit1.text)>=10)
  then
  begin
    k:=length(edit1.Text);
 for i:=1 to k do
  begin
    a[i]:=StrToInt(Edit1.Text[i]);
    j:=j+a[i];
  end;
   label3.caption:=IntToStr(j);
  end;
  while(StrToInt(label3.caption)>9) do
  begin
  n:=length(label3.caption);
  for m:=1 to n do
  begin
  a[m]:=StrToInt(label3.caption[m]);
  h:=h+a[m];
  end;
  label3.caption:=IntToStr(h);
end;

解决方案 »

  1.   

    function AddTest(InPut: Integer): Integer;
    var
      I,J: Integer;
    begin
      J := 0;
      for I:= 1 to Length(IntToStr(InPut)) do
      begin
        J := J+StrToInt(IntToStr(InPut)[I]);
      end;
      Result := J;
      if Result>10 then
        Result:=AddTest(Result)
      else
        Result:=Result;
    end;
      

  2.   

    用标签:
    function AddTest(InPut: Integer): Integer;
    var
      I,J,K: Integer;
      Label Lab;
    begin
      K := InPut;
      Lab:
      J := 0;
      for I:= 1 to Length(IntToStr(K)) do
      begin
        J := J+StrToInt(IntToStr(K)[I]);
      end;
      K := J;
      if K>10 then
        goto Lab;
      Result:=K;
    end;
      

  3.   

    string只能存放256个字符,int是32位整数,是否是这个问题。
      

  4.   

    那是因为你的INTEGER类型溢出了。
    用用这个试试。
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Str:string;
      i,k:longint;
    begin
      k:=Strtoint(edit1.Text);
      while k>=10 do
      begin
        Str:=inttoStr(k);
        k:=0;
        for i:=1 to length(Str) do
          k:=k+Strtoint(str[i]) ;
      end;
      label1.Caption:=inttostr(k);
    end;
      

  5.   

    function Test(m:integer):integer;
    begin
      result:=m;
       while  result>=10 do
       begin
        result:=(result div 10 )+(result mod 10);
       end;
    end;--------------------------------------------------->这个算法简单啊,你们考虑复杂了
      

  6.   

    回复人: xdf221(xdf221) ( ) 信誉:100  2004-04-29 14:05:00  得分:0 
     
     
      楼上的有误,如果是个3位数那楼上的就错了
      
     
    那里错了????你举个例子