以下的一段程序在 VB 和 VFP 环境下均能运行,结果在屏幕上打印出一个由“*”号组成的三角形。 
numLine = 10                                    *
For i = 1 To numLine                           ***
  theStr = ""                                 *****
  For j = 1 To 2 * i - 1                     *******
    theStr = theStr + "*"                   *********
  Next                                     ***********
 print Space(numLine - i) + theStr        *************
Next                                     ***************
                                        *****************
                                       *******************
侧出先一个 实心三角形     当中空出个小一点的三角形改怎么写啊~ 求算法啊~
                                     *
                                    * *
                                   *   *
                                  *     *
                                 *       *
                                *         *
                               *           *
                              *             *
                             *               *
                            *******************
或                                              *
                                               ***
                                              *****
                                             *** ***
                                            ***   ***
                                           ***     ***
                                          ***       ***
                                         ***         ***
                                        *****************
                                       *******************

解决方案 »

  1.   

    Dim iBigRow, iSmallBeginRow, i As Integer
    '输出20行的三角形图案,其中,中空小三解形从第三行开始
    iBigRow = 20
    iSmallBeginRow = 2
    '输出前 iBigRow-iSmallBeginRow行
    For i = 1 To iBigRow - iSmallBeginRow
        If i > iSmallBeginRow Then
           Me.Print String(iBigRow - i, " ") & String(iSmallBeginRow, "*") & String(2 * (i - iSmallBeginRow) - 1, " ") & String(iSmallBeginRow, "*")
        Else
            Me.Print String(iBigRow - i, " ") & String(2 * i - 1, "*")
        End If
    Next i
    '补足后 iSmallBeginRow 行
    For i = 1 To iSmallBeginRow
        Me.Print String(iSmallBeginRow - i, " ") & String(2 * (iBigRow - iSmallBeginRow + i) - 1, "*")
    Next i
      

  2.   

    这个简单一点
    Private Sub Command1_Click()
    numLine = 10
    For i = 1 To numLine - 1
      theStr = ""
      For j = 1 To 2 * i - 1
        theStr = theStr + IIf(j = 1 Or j = 2 * i - 1, "*", " ")
      Next
     Print Space(numLine - i) + theStr
    Next i
     Print "*******************"
    End Sub