VB题。将用户输入的三个数字按照从小到大获从大到小的顺序排序,排序方式可由用户设置。 程序怎么写呢

2012-10-30 14:58_毛线线 | 分类:VB | 浏览19次
数学的解答思路:要对a、b、c这三个数排序(依顺序为例),先比较前两个数,使得a≤b,再比较b与c,若b≤c,则排序已完成,否则需要交换b与c的值,之后再继续比较a与交换后的b,使得a小于等于b,排序结束。

求高手帮忙写下这个程序。

这里有两种方法。第一种,直接交换,代码比较多,容易出错。

第二种,把交换部分写成一个独立过程,中间调用。便于阅读,书写方便,不易出错。

用户的关于从大到小和从小到大排序选择,使用Option控件()如图。

Private Sub Command1_Click()
    Dim a As Integer
    Dim b As Integer
    Dim c As Integer
    Dim tmp As Integer
    a = Val(Text1.Text)
    b = Val(Text2.Text)
    c = Val(Text3.Text)
    If Option1.Value = True Then
        If a < b Then
            tmp = a
            a = b
            b = tmp
        End If
        If c > a Then
            tmp = b
            b = c
            c = tmp
            tmp = a
            a = b
            b = tmp
        ElseIf c > b Then
            tmp = b
            b = c
            c = tmp
        End If
    Else
        If a > b Then
            tmp = a
            a = b
            b = tmp
        End If
        If c < a Then
            tmp = b
            b = c
            c = tmp
            tmp = a
            a = b
            b = tmp
        ElseIf c < b Then
            tmp = b
            b = c
            c = tmp
        End If
    End If
    Text1.Text = CStr(a)
    Text2.Text = CStr(b)
    Text3.Text = CStr(c)
   
End Sub

Sub swap(x, y)
    Dim tmp
    tmp = x
    x = y
    y = tmp
End Sub

Private Sub Command2_Click()
    Dim a As Integer
    Dim b As Integer
    Dim c As Integer
    Dim tmp As Integer
    a = Val(Text1.Text)
    b = Val(Text2.Text)
    c = Val(Text3.Text)
    If Option1.Value = True Then
        If a < b Then
        End If
        If c > a Then
            swap b, c
            swap a, b
        ElseIf c > b Then
            swap b, c
        End If
    Else
        If a > b Then
            swap a, b
        End If
        If c < a Then
            swap b, c
            swap a, b
        ElseIf c < b Then
            swap b, c
        End If
    End If
    Text1.Text = CStr(a)
    Text2.Text = CStr(b)
    Text3.Text = CStr(c)
   
End Sub

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-04
Dim a As Double, b As Double, c As Double, t As Double 
a = Val(InputBox("输入a:"))
b = Val(InputBox("输入b:"))
c = Val(InputBox("输入c:"))
If a > b Then
    t = a
    a = b
    b = t
End If
If b > c Then
    t = b
    b = c
    c = t
End If
Msgbox "排序后:" & a & " " & b " " & c

第2个回答  2013-11-04

你看看例子:

VB编程题 输入xyz三个数,按从小到大的次序显示
源程序如下:1. 利用InputBoxb函数输入3个数,存放到数值型变量中,然后对其进行比较。2. 对三个数进行排序,只能通过两两对比,一般可用三条单分支IF语句来实现。3 .要显示多个数据,可以用“;”逐一显示,也可利用“&”字符串连接将多个变量连接显示。解题:先在窗体上画一个按钮,代码如下:Priva...

VB的:输入三个数X、Y、Z,按从小到大的顺序输出这三个数
THEN 后面直接换行!(或加冒号 : )你的程序太乱!题目中是X、Y、Z,程序中是a、b、c,一会儿又有m、n 这样写:Private Sub Command1_Click()X = Text1.Text: Y = Text2.Text: Z = Text3.Text If X>Y Then m = X : X = Y : Y = m If X>Z Then m = X : X = Z :...

VB 三个数如何排序
Dim i%, j%, d Print "原先的3个数是:"For i = 1 To 3 a(i) = Val(InputBox("请输入第" & i & "个数的值:"))Print a(i),Next i Print '打印完换行 Print "从大到小排序为:"For i = 1 To 2 For j = 2 To 3 If a(j) > a(i) Then d = a(i)a(i) = ...

VB6.0三个数排序完全代码
s = "输入的三个数为:" & a & ", " & b & ", " & c & vbCrLf If a > b Then t = a: a = b: b = t If a > c Then t = a: a = c: c = t If b > c Then t = b: b = c: c = t MsgBox s & "三个数从小到大为:" & a & ", " & b & ",...

一道VB程序填空题(判断三个数中最小的数)
编写程序以解决以下问题:获取三个数并找出其中最小的那个数。定义四个变量,分别用于存储输入的三个数以及比较结果:使用 InputBox 函数从用户接收输入,将输入转换为单精度浮点数并存储到变量 a, b 和 c 中。创建一个字符串变量 strtemp,用于存储最终输出结果。初始化为三个数的值,以逗号分隔。在...

用VB排列列表框的数组(从小到大排列)
lstUnsorted.Clear ' 将列表框置空 Randomize ' 随机生成MAXPLAYER 个无序元素 For i = 1 To MAXPLAYER ' 产生随机数,乘以10 后进行四舍五入,结果保留2 位小数 sngElement = Round((Rnd() * 10), 2)' 将产生的随机数添加到列表框中 lstUnsorted.AddItem sngElement Next ' 设置插入排序...

VB排序问题
排序有很多种方法 1.冒泡法;2.定位交换法;3.直接插入排序法;4.选择法;这是常见的。第一趟将每相邻两个数比较,小的调到前头,经n-1次两两相邻比较后,最大的数已“沉底”,放在最后一个位置,小数上升“浮起”;第二趟对余下的n-1个数(最大的数已“沉底”)按上法比较,经n-2次两...

VB数组从小到大排序
这排序没有什么大的问题。如果b()数组中已有n个元素的话,可以成功完成升序的排序。只是程序的效率不够高。当n很大时花时太多。For i = 0 To n - 2 For j = i + 1 To n - 1 '这里可以从 i + 1 开始 If b(i) > b(j) Then t = b(i)b(i) = b(j)b(j) = t End ...

VB中,随机产生10个0~100之间的随机数,按从小到大的顺序排列怎么做...
可用冒泡排序法:代码如下:'不重复随机数排序'添加 Command1 Command2 Command3Option Explicit Dim i&, j&, k&, t&, Trec&, Arr&(), RndVal&, TmpVal&, S Private Sub Form_Load()Command1.Caption = "选随机数"Command2.Caption = "小到大排序"Command3.Caption = "大到小排序"'*...

...输入框输入10个不同的整数,将它们从小到大排序,并打印输出
给你思路!利用数组存储这10个数!然后用冒泡排序 、选择排序等进行排序!最后print 一下!

相似回答