列举出10到1000中所有能被3整除的
最后一位带4的数  //这里都会
然后所有的数字累乘//这里输出到label总是出错,得出的不是所有的乘积,而是最后一个数
结果除以255
var i,k:integer;
begin
for i:=10 to 1000 do
if (i mod 3=10) and (rightstr(inttostr(i),1)='4') then
begin
k:=1;
k:=i*k;
end;
label1.Caption:=inttostr(k);看看,好奇怪啊

解决方案 »

  1.   

    var i,k:integer;
    begin
    k:=1;//此句应该放在循环外
    for i:=10 to 1000 do
    if (i mod 3=10) and (rightstr(inttostr(i),1)='4') then
    begin
    k:=i*k;
    end;
    label1.Caption:=inttostr(k);
      

  2.   

    这些数的累乘结果非常之大, 用Integer是根本无法保存的(Int64也不行), 只能换成浮点数类型了。var
      i: Integer;
      k: Double;
    begin
      k := 1;
      for i := 10 to 1000 do
        if (i mod 3 = 0) and (i mod 10 = 4) then k := i * k;
      label1.Caption := FloatToStr(k);
    end;
      

  3.   

    delphi72() and  jadeluo(秀峰) =答案
      

  4.   

    用Haskell计算结果:
    Prelude> foldr (*) 1 [x|x <- [10..1000], x `mod` 3 == 0, x `mod` 10 ==4]
    20553983621604168089736592814705526241000556016485632299306672719850972361445672484864
      

  5.   

    这些数的累乘结果非常之大, 用Integer是根本无法保存的(Int64也不行), 只能换成浮点数类型了。var
      i: Integer;
      k: Double;
    begin
      k := 1;
      for i := 10 to 1000 do
        if (i mod 3 = 0) and (i mod 10 = 4) then k := i * k;
      label1.Caption := FloatToStr(k);
    end;
    ==========================