我可以使用IF-THEN-ELSE结构在Visual Basic 2008中编写以下问题。但我想知道如何使用Visual Basic 2008中的IF运算符对其进行编码。
编写一个请求3个数字作为输入的程序,并显示两个最高数字的总和。
由于
答案 0 :(得分:0)
除了标准答案("选择一本不错的通用编程书"):如果你已经说出了任务 - 也就是说,没有任何限制或指导方针 - 你不要完全需要IF。可以使用LINQ在一行中完成:
Dim numbers As List(Of Integer)
numbers = New List(Of Integer)
numbers.Add(9)
numbers.Add(-4)
numbers.Add(1)
Console.WriteLine(numbers.OrderByDescending(Function(n) n).Take(2).Sum())
您可以使用for循环(从1到3)读取数字。
以下编辑
如果您要专门使用IF语句,而不是ELSE语句(这是我理解您的问题/评论的方式),它基本上是一般的计算机科学,而不是编程问题;)但是无论如何(我会使用C语法,因为它对我来说更容易写,对不起):
你有3个数字,(x,y,z)。使用关系> =(大于或等于),它们可以以6(3!,3个阶乘)的方式排列:
x, y, z
x, z, y
y, x, z
y, z, x
z, x, y
z, y, x
现在,在大多数语言中,您不能使用如下语句:
if(x >= y >= z)
但您可以将其拆分为
if(x >= y && y >= z)
这为您提供了在每种可能情况下仅执行特定代码块的方法:
if(x >= y && y >= z){
// biggest numbers: x, y
return x + y;
}
if(x >= z && z >= y){
...and so on, 6 times total
请注意,这是一种天真的方法,并不是最好的解决方案。如果你赶时间,它会做的。如果你有空闲时间,你可以考虑更优化的解决方案 - 作为练习;)
答案 1 :(得分:0)
如果你真的必须使用If
,你可以适应@David或@Gerino的想法:
Dim inputs(2) As Integer
For index = 0 To 2
inputs(index) = Int32.Parse(Console.ReadLine)
Next
If True Then
Console.Write(inputs.OrderByDescending(Function(f) f).Take(2).Sum())
End If
Console.ReadLine()
或者如果您想展示短路If
语法的知识:
Dim inputs(2) As Integer
For index = 0 To 2
inputs(index) = Int32.Parse(Console.ReadLine)
Next
Dim totalSum As Integer = inputs.OrderByDescending(Function(f) f).Take(2).Sum()
Dim output As String = If(totalSum > 0, "Positive: " & totalSum, "Negative:" & totalSum)
Console.Write(output)
Console.ReadLine()