zoukankan      html  css  js  c++  java
  • VB循环For的一点启示

    今天在做一道题时,学生在写For上边界时,用了iMin

    iMax = i: iMin = n - i + 1
    For j = i To __________
      If score(j) > score(iMax) Then iMax = j
      If score(j) < score(iMin) Then iMin = j
    Next j
    

     一开始我认为是错的,因为iMin随着循环的进行会变化。

    但答案却是这个。

    为此做了个验证。如下程序, 

    Private Sub Command1_Click()
      Dim i As Integer
      For i = 1 To 3 - i
        Print i
      Next i
    End Sub
    

     思考:该程序循环了几次?一般会认为循环了1次。

    一般分析会是这样的:

    初值i=1

    终值3-i=2

    第1次循环,输出1,接着i=i+1=2,终值3-i=3-2=1,

    2<1为False。

    但实际运行结果是:

    思考,从程序结果来分析,终值3-i应该一开始就赋值了,并且作为了常量。

    但是3-i=3-1=2,应该循环2次啊。

    我们在做一个实验,如下代码:

    Private Sub Command1_Click()
      Dim i As Integer
      i = 1
      For i = 1 To 3 - i
        Print i
      Next i
    End Sub

    从运行结果来看,在for循环外面现将i初始化为1后,3-i=3-1=2,

    而拿掉i的初始化语句后,就变成循环3次。

    原因分析如下:

    1、dim i as integer定义了i变量,它的初值即为i=0;

    2、for i=1 to 3-i ,在循环开始时,编译器就将循环的初值和终值同时计算好了,计算的时候终值是不会马上用到初值的。

  • 相关阅读:
    POJ 2255. Tree Recovery
    Ural 1011. Conductors
    Ural 1010. Discrete Function
    算法导论学习 之 解递归式
    算法导论学习 之 渐进符号
    kubernetes-集群构建
    kubernetes-集群备份和恢复
    kubernetes-概念
    Kubernetes-常用命令
    kubernetes-单机实验(入门)
  • 原文地址:https://www.cnblogs.com/daveylin/p/9138743.html
Copyright © 2011-2022 走看看