【问题标题】:Have I done this Sub Procedures task correctly?我是否正确完成了这个子程序任务?
【发布时间】:2013-11-17 14:58:29
【问题描述】:

计划

程序将接受来自用户的三个整数值并将它们按升序排序。该计划还将提供重复该计划的机会。

说明

  • 创建一个名为 sortnumber() 的子过程,它接受 3 个整数参数。
  • 在 main 中创建输入/输出代码以读取 3 个整数值作为参数传递给 sortnumber()
  • 在 sortnumber() 中创建代码,以升序对 3 个整数值进行排序并将结果打印到控制台
  • 创建允许用户重复程序的代码

我的代码:

Module Module1

Sub Main()
    Dim num1, num2, num3 As Integer
    Console.WriteLine("This programme sorts any 3 numbers into ascending order")
    Console.WriteLine("Press enter to continue")
    Do Until Console.ReadLine = "e"
        Console.WriteLine("Enter your first number:")
        num1 = Console.ReadLine
        Console.WriteLine("Enter your second number:")
        num2 = Console.ReadLine
        Console.WriteLine("Enter your third number:")
        num3 = Console.ReadLine
        Console.WriteLine("Sorting into ascending order...")
        sortnumber(num1, num2, num3)
        Console.WriteLine("Press enter to repeat the programme or enter 'e' to exit")
    Loop

End Sub
Sub sortnumber(ByVal n1 As Integer, ByVal n2 As Integer, ByVal n3 As Integer)
    If n1 >= n2 And n2 >= n3 Then
        Console.WriteLine(n3)
        Console.WriteLine(n2)
        Console.WriteLine(n1)
    ElseIf n3 >= n2 And n2 >= n1 Then
        Console.WriteLine(n1)
        Console.WriteLine(n2)
        Console.WriteLine(n3)
    ElseIf n1 >= n3 And n3 >= n2 Then
        Console.WriteLine(n2)
        Console.WriteLine(n3)
        Console.WriteLine(n1)
    ElseIf n3 >= n1 And n1 >= n2 Then
        Console.WriteLine(n2)
        Console.WriteLine(n1)
        Console.WriteLine(n3)
    ElseIf n2 >= n3 And n3 >= n1 Then
        Console.WriteLine(n1)
        Console.WriteLine(n3)
        Console.WriteLine(n2)
    ElseIf n2 >= n1 And n1 >= n3 Then
        Console.WriteLine(n3)
        Console.WriteLine(n1)
        Console.WriteLine(n2) 
    End If
End Sub
End Module

谢谢。

【问题讨论】:

  • 你的sortnumber 程序并没有真正对任何东西进行排序,它只是评估值并相应地打印。第 3 步实际上是 2 个操作:a) 排序,b) 输出。这取决于指令的字面意思。
  • 那么按照任务集,我做对了吗? @Plutonix
  • @Kcode1 我想我昨天已经回答了这个问题?如果您想要更新,我们继续stackoverflow.com/questions/20018838/… 删除点击标签下方的删除

标签: vb.net visual-studio-2010 console-application


【解决方案1】:

就像 Plutonix 所说的那样,实际上并没有发生排序。但最初,是的,您已经以升序方式显示了这三个数字的正确顺序。

我尝试修改您的 sortnumber 函数以便对它们进行排序,但我在这里使用了 list a。

Sub sortnumber(ByVal n1 As Integer, ByVal n2 As Integer, ByVal n3 As Integer)
    Dim numbers As List(Of Integer) = New List(Of Integer)
    numbers.Add(n1)
    numbers.Add(n2)
    numbers.Add(n3)
    numbers.Sort()
    For Each num In numbers
        Console.WriteLine(num.ToString)
    Next
End Sub

通过使用内置的sort函数,代码可以读得更干净。

但如果它要求你使用条件(即 if-else-if 语句),那么我会说你所做的是正确的。

更新:

假设您将此作为练习,您可以尝试使用Bubble Sort

【讨论】:

  • 你克隆了我的答案,没有任何改变stackoverflow.com/questions/20018838/…
  • @K3rnel31 哦不,我没有。我在我的 VS 2010 中手动测试了这个。请查看上面 OP 删除/编辑的代码。我只是按照他的格式。 - 函数名,参数名......我只是将它包含在我的新函数中,这样对他来说就变得容易了。他不应该删除答案,所以你没有误解它。
  • 是的,我看到了函数的名称和参数的名称等等!
  • @K3rnel31 是的,我就是这么说的。巧合?也许 :) 但我的命名约定是函数名称必须以大写字母开头,参数名称必须不少于三个字母,除非用于演示目的;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-13
相关资源
最近更新 更多