注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

任焱-廊坊师范学院信息技术提高班十期

改变是痛苦的,可是不改变就不会有改变!

 
 
 

日志

 
 

我们真的会了吗?  

2013-06-02 21:11:31|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

这个例子,在VB书上的145页,以前也做过,也成功实现过,可是当米老师当着九期、十期那么多人问有谁知道没的时候,真的是想不起来了!只能记得一个大概,但是就是记不起关键的眼!所以,尽管我们做过,尽管我们成功过,我们对它的印象也不是那么深刻!

以前做的时候是用的一般的方法,没有用过自定义函数!看了米老师的源码以后,自己也尝试着用函数做做!以下是我自己用自定义函数写的代码,其中包含了对K值的判断、上下界大小的判断和上下界之间的范围小于k值(因为这里生成的不重复的随机整数,如果上下界的范围小于k值就会出现问题!)

里面一共写了三个自定义函数,分别的功能是:生成不重复的随机数并显示、将数列中的数从大到小排列、找出数列中的最大值。


Option Explicit

Private Sub Form_Click()
    Dim a() As Integer
    Dim k As Integer
    Dim m As Integer
    Dim n As Integer
    Dim max As Integer
    
    k = Val(InputBox("请输入需要产生多少个数", "输入"))
    If k < 1 Then
        MsgBox "请输入大于零的整数!"
        Form_Click
    End If
    
    m = Val(InputBox("请输入产生数的下界", "输入"))
    n = Val(InputBox("请输入产生数的上界", "输入"))
    If m > n Then
        MsgBox "请输入正确的上界、下界"
        Form_Click
    End If
    
    If n - m < k Then
        MsgBox "请输入正确的上界、下界"
        Form_Click
    End If
    
    ReDim a(1 To k)
    
    Call RndInteger(a(), m, n)
    Call Arrange(a())
    
    max = CalcMax(a())
    Print "这些数中最大的数是:" & max
End Sub

Public Function RndInteger(a() As Integer, ByVal m As Integer, ByVal n As Integer)
    
    Dim c As Integer
    Dim Flag As Boolean
    Dim i As Integer, j As Integer, l As Integer
    
    a(1) = Int(Rnd() * (n - m + 1) + m)
   
    
    For i = 2 To UBound(a)
        c = Int(Rnd() * (n - m + 1) + m)
         Flag = True
        
        For j = 1 To i - 1
            If c = a(j) Then
                Flag = False
                i = i - 1
                Exit For
            End If
        Next j
        
        If Flag = True Then
            a(i) = c
        End If
    Next i
    
    For l = 1 To UBound(a)
        Print a(l);
    Next l
    
    Print Tab
    

End Function

Public Function CalcMax(a() As Integer) As Integer
    
    Dim max As Integer
    Dim t As Integer
    max = a(1)
    
    For t = 2 To UBound(a)
        If max < a(t) Then
            max = a(t)
        End If
    Next
    
    CalcMax = max
    
End Function



Public Function Arrange(a() As Integer)
    
    Dim i As Integer, j As Integer
    Dim num As Integer
    
    For i = 1 To UBound(a)
        For j = i + 1 To UBound(a)
            If a(i) < a(j) Then
                num = a(i)
                a(i) = a(j)
                a(j) = num
            End If
        Next
    Next
    
    For i = 1 To UBound(a)
        Print a(i);
    Next
    
    Print Tab
    
End Function



或许我们就像米老师说的那样,老师说我们会了,我们觉得自己会了,然后我们真的会了吗?
我们真的会了吗?
  评论这张
 
阅读(109)| 评论(15)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017