输入一个数,比如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;
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;
解决方案 »
- 关于edit显示的问题
- 哪里有delphi2006的电子教程下?
- 急!!!!!!!一个WEBSERVICE发布的问题
- 如何把一个文件以255字节大小分成若干个文件快??
- 好高深的技术难题呀!
- 高分请教:采用MS SQL Server的系统向Oracle系统转,方便码?
- 我想编一个程序,主要运用到servers里的组件,主要是excel部分的,希望能得到一些相关的资料。
- FireMonkey HD窗体没有DBgrid功能,用TStringGrid的话无DrawColumnCell,怎么改变单元格颜色呢?
- 新手上路,送分题。。。。
- 向各位大虾请教
- 请教一个问题:急等,在线等!
- registerclass的问题
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;
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;
用用这个试试。
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;
begin
result:=m;
while result>=10 do
begin
result:=(result div 10 )+(result mod 10);
end;
end;--------------------------------------------------->这个算法简单啊,你们考虑复杂了
楼上的有误,如果是个3位数那楼上的就错了
那里错了????你举个例子