问题如下:1,2,3 三个数字需要写一个函数得到最后的结果为27种情况,即111,112,113,121,122,123,131,132,133,211,212,213,221,222,223,231,232,233,311,312,313,321,322,323,331,332,333.希望有人能帮个忙啊!

解决方案 »

  1.   

    #include<stdio.h>
    main()
    {
     int a[3]={1,2,3};
     int i1,i2,i3;
     for(i1=0;i1<3;i1++)
      {
      for(i2=0;i2<3;i2++)
       {
       for(i3=0;i3<3;i3++)
        if( (a[i1]==3) && (a[i2]==3) && (a[i3]==3) )
        printf("%d%d%d.",a[i1],a[i2],a[i3]);
        else
        printf("%d%d%d,",a[i1],a[i2],a[i3]);
       }
      }
    }
    呵呵,帮你吧最后一个333后的原点也写上了。嘻嘻。c语言的,希望你会喜欢呵呵。
      

  2.   

    for i:=1 to 3 do
      for j:=1 to 3 do
        for k:=1 to 3 do
     begin
      m:=i*100+j*10+k;
      memo1.lines.add(inttostr(m));
     end;
      

  3.   

    根据上述要求,可以进行代码优化
    procedure TForm1.Button2Click(Sender: TObject);
    var
      i,j:Integer;
      v :Integer;
    begin
      for i:=1 to 3 do
      begin
          for j:=1 to 3 do
          begin
             v := i*100+j*10;
             memo1.Lines.Add(IntToStr(v+1))          ;
             memo1.Lines.Add(IntToStr(v+2));
             memo1.Lines.Add(IntToStr(v+3));
          end;
      end;
    end;
      

  4.   

    视这3个不同的数字为某三进制系统下的数字,则该问题可以变成从0~ 3^3 -1范围内数字的3进制解码过程,这样在具备decode解码过程的情况下,主程序只需要1次循环即可。//value:传入的数字,
    //minLen: 解码后最短的长度,若不足该长度则前补elementSet[0]。
    //elementSet:解码空间,在这里是数组[1,2,3]
    function decode(value: Integer;minLen: Integer; elementSet: array of Integer): String;
    var
        i,j: Integer;
        n: Integer; //码制
    begin
        Result:= "";
        n:= Length(elementSet);
        While value<>0 do
        begin
            j:= value mod n;
            Result:= IntToStr(elementSet[j])+Result;
            value:= value div n;
        end ;
        while Length(Result)<minLen do
          Result:= IntToStr(elementSet[j])+Result;
    end ;//然后是主程序:
    procedure main()
    var
        i: Integer;
        elementSet: Array of Integer;
        minLen: Integer;  //返回的数字长度
    begin
      setLength(elementSet,3);
      elementSet[0]:=1;
      elementSet[1]:=2;
      elementSet[2]:=3;
      minLen:= 3;
      for i:= 0 to power(Length(elementSet),minLen)-1 do
        showMessage(decode(i,minLen,elementSet));
    end ;