none
如何计算for循环的循环次数 RRS feed

  • 常规讨论

  • 如下:

    for i=1 to 5

       [循环体]

    next i

    像上面的是一层for循环就可以套用公式得到:int((5-1)/1+1)=5,从而可以得出这个for循环总共循环了5次。

    那么,如果是二重循环或者三重循环呢,又该如何计算它的循环次数?又或者说有什么办法可以快速口算出来?

    比如下面的几种典型多重循环:

    典型一:

    for i=1 to 4

         for j=1 to i

           [循环体]

         next j

    next i

    典型二:

    for i=1 to 5

         for j=0 to 3

           [循环体]

         next j

    next i

     

    典型三:

    for i=1 to 5

         for j=0 to i

              for k=0 to j

           [循环体]

              next k 

        next j

    next i

    就上面的三种典型例子请高手给予详细的解答,Thanks

    2011年1月17日 8:17

全部回复

  • 正如你所写的那个简单的表达式一样,嵌套循环只是每一层和每一层做个乘法:

    典型二:

    for i=1 to 5

         for j=0 to 3

           [循环体]

         next j

    next i

    ((5-1)/1+1)*((3-1)/1+1)即可

     

    不过其他类型,内嵌的循环次数随着外套的再改变,所以不一个简单的乘积。而是一个 ∑.

    例子一:每次加上 ((4-1)/1+1)*∑(1-i)

    三类似二

     


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年1月17日 18:02
    版主
  • 例子一:每次加上 ((4-1)/1+1)*∑(1-i) 这里还不是很明白。乘于西格玛(1-i)是什么意思?∑(1-i)这个怎么计算的?我只知道西格玛是用来求和的。 Thanks! 
    2011年1月18日 2:24
  • 这里很难表达西格玛,  ∑(1-i) 就是从 1累加到i


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年1月18日 2:30
    版主
  • 尊敬的版主

           您好!

          再请教你一个问题,如何记录用户退出程序时在程序里所做的操作,并将它写入ini或txt格式文件里,当用户再次启动程序时就把上一次退出程序时所

    做的操作加载进来。比如我们登录QQ时所选的状态是隐身的,那么当你下次再登录QQ时也是(保留了上次的隐身)隐身的。
    为了把上述的描述更清晰地表达出来,我再举个简单的例子:
    form1有三个check复选框(分别是check1,check2,check3),缺省状态是没有被选中的,当用户正常退出程序前check1和

    check2是被选中的,那么,用户下次再登录程序时就把上次的操作给加载进来(即check1和check2是处于选中状态)

    2011年1月19日 0:55
  • 在退出的时候是用配置文件或者Application.Setting 去保存用户状态,比如比较原始的 inc 文件,或者xml文件取保存状态。还有可以使用Application.Setting去保存。你可以找下相关资料 。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年1月19日 1:59
    版主
  • 我找过了,都没有相关的资料,版主,你能给我写写吗。就写在ini或txt文件吧,不要用xml那些复杂的。
    2011年1月19日 2:36
  • 嗯,这个很简单,我来给你解答吧。

    例如说呢,储存一个值,是文本。

    我们新建一个窗体,在里面放一个Textbox1,在Form的Closing里面写上如下代码:

     Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
     My.Computer.FileSystem.WriteAllText(Application.StartupPath + "\Text.txt", Me.TextBox1.Text, False)
     End Sub
    

    好了,这样就在退出的时候把Textbox的内容保存起来了。

    再在Form的Load事件里面写上:

     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     Me.TextBox1.Text = My.Computer.FileSystem.ReadAllText(Application.StartupPath + "\Text.txt")
     End Sub
    

    你去试试这些代码,在程序的Textbox1里面写上内容,关掉窗体,内容自动保存。下次打开窗体,内容又在了。

    这是个简单的例子,如果是你说的用户状态之类的,只要对保存的内容加以分析就可以。

    这是不用XML或者INI的,当然不一定要TXT,你可以改成其他格式,不会影响。

     ------------------------------------------------------------------------------------

    至于你说的例子,也很简单

    form1有三个check复选框(分别是check1,check2,check3),缺省状态是没有被选中的,当用户正常退出程序前check1和

    check2是被选中的,那么,用户下次再登录程序时就把上次的操作给加载进来(即check1和check2是处于选中状态)

     

    我们用三个连续数字(这样会很乱,但是数据少时没有问题)表示选中状态,例如第一个和第二个是选中,就是 110 。

    这样,和上一个例子用同样的思路:

    窗体关闭时:

     Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
      My.Computer.FileSystem.WriteAllText(Application.StartupPath + "\Checked.txt", IIf(Me.CheckBox1.Checked, "1", "0") + IIf(Me.CheckBox2.Checked, "1", "0") + IIf(Me.CheckBox3.Checked, "1", "0"), False)
     End Sub

    窗体载入时:

     Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
      Dim Str As String = My.Computer.FileSystem.ReadAllText(Application.StartupPath + "\Checked.txt")
      Me.CheckBox1.Checked = IIf(Mid(Str, 1, 1) = "1", True, False)
      Me.CheckBox2.Checked = IIf(Mid(Str, 2, 1) = "1", True, False)
      Me.CheckBox3.Checked = IIf(Mid(Str, 3, 1) = "1", True, False)
     End Sub

    试试吧,就这么简单。

    希望可以帮到您。

    2011年1月20日 10:01
  • 能不能用VB6.0写,因为我不会.NET。thanks!

    2011年1月21日 3:11
  • (⊙o⊙)...

    额,对VB6文件操作不是太熟悉啊。。

    我研究下,等我。。

    2011年1月21日 12:28
  • 555,太复杂了,还是让V5的斑竹上吧。
    2011年1月21日 12:36
    • 基于 X.TK
    Option Explicit
    
    Private Sub Form_Load()
     If Dir(App.Path & "\Checked.txt") <> "" Then
     Open App.Path & "\Checked.txt" For Input As #1
     Dim strChecked As String
     Input #1, strChecked
     Me.Check1.Value = CInt(Mid(strChecked, 1, 1))
     Me.Check2.Value = CInt(Mid(strChecked, 2, 1))
     Me.Check3.Value = CInt(Mid(strChecked, 3, 1))
     Close #1
     End If
    End Sub
    
    Private Sub Form_Unload(Cancel As Integer)
     Open App.Path & "\Checked.txt" For Output As #1
     Print #1, Me.Check1.Value & Me.Check2.Value & Me.Check3.Value; '0 - UnChecked ,1 - Checked ,2 - Grayed
     Close #1
    End Sub
    
    


    grass...
    • 已编辑 Way.New 2011年1月29日 20:39 作者:X.TK
    2011年1月29日 20:37
  • 创建一个公共变量n=0

    然后最里面的循环加一个n=n+1这样应该也可以啊

    2011年1月30日 1:38
  • OK,可以了,谢谢你Way.New

    如果可以给个注释那就更好了。

    2011年2月10日 8:50
  • 真Lazy,这里只说下过程,窗体加载时,判断是否存在配置文件。

    是则打开,用Mid提取复选框的 状态值,窗体加载完毕。

     

    关闭窗体时用Print将三个复选框的Value值写入,重写整个配置文件。


    grass...
    2011年2月13日 12:03
  • en i know ,thanks.

    2011年2月15日 6:20