字符串可以使用下标来访问到每个字符,你可以直接从第0个元素开始挨个相加,例如你的字符串是str='8471239641321'
那么str[0] = '8',你用一个StrToInt(str[i])来循环就可以了啊,很简单的。

解决方案 »

  1.   

    '8471239641321'这个字符串,怎么样做加法啊?s='8471239641321';
    m:=0;
    for i:=0 to 12 do 
       m:=m+s[i];
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      Num: Array[0..30] of Integer;
      Sum,SumT,Range,I,K: Integer;
    begin
      SumT := 0;
      I := 0;
      Sum := 31;
      Range := Sum;
      Randomize;
      Edit1.Text := '';
      while SumT<Sum do
      begin
        K := Trunc(Random(Range));
        Num[I] := K;
        Inc(SumT,K);
        Range := Sum - SumT + 1;
        Inc(I);
      end;
      ShowMessage(IntToStr(SumT));
      //Num的0..I就是所求的数
    end;—————————————————————————————————
    MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
                 毁誉由人,望天上云卷云舒,聚散任风。';
    if Not Assigned(I) then
      I := TI.Create(Nil);
    I.Maxim := MaximStr;
    I.Explain := '假如上述代码中出现“OA”、“3D”等字样,改为“=”或者去掉';
    I.Desire := '加不加分随你';
    —————————————————————————————————
        
      

  3.   

    你可以这样做:
     1  用时间或随机函数生成随机数,scrand()  time()
     2  将生成的随机数转换成字符串,存放在字符数组中。
     3  对于每一个数组元素,再转换成数字相加。
       .......................
       .......................
       DWORD iS=scrand(time());
       char szStr[128];
       int nResult;
       sprintf(szStr,"%d",iS);
       for(int i=0;i<strlen(szStr);i++)
           nResult+=*(szStr+i)-'0';
       if(nResult==32)
           //你要的数,也可自调整一下。