3 番目の変数を使用せずに 2 つの整数を交換する必要がある割り当てがあります。これを行う方法がわかりません。これをどのようにコーディングしますか?
質問する
19580 次
9 に答える
19
はい、可能です:
Dim var1 = 1
Dim var2 = 2
var1 = var1 + var2
var2 = var1 - var2
var1 = var1 - var2
しかし、なぜそれが必要なのですか?コードが難解になります。
于 2012-04-27T11:58:19.190 に答える
7
仮定しましょう
a = 10;
b = 20;
a = a + b; // a = 30
b = a - b; // b = 10
a = a - b; // a = 20
値が交換されました。
于 2012-04-27T11:56:53.960 に答える
5
「 xor スワップ アルゴリズム」を読んでください。
ここで答えを見つけることができます:
http://www.java2s.com/Tutorial/VB/0040__Data-Type/Swaptwointegerswithoutusingathird.htm
firstValue = firstValue Xor secondValue
secondValue = firstValue Xor secondValue
firstValue = firstValue Xor secondValue
于 2012-04-27T11:57:59.067 に答える
3
Dim a As Integer
Dim b As Integer
a= 1
b= 2
a = a Xor b
b = a Xor b
a = a Xor b
于 2012-04-27T12:04:09.720 に答える
2
2 つの数値変数を交換するには、次のようにします。
a = a + b;
b = a - b;
a = a - b;
また
a = a xor b;
b = a xor b;
a = a xor b;
ここで、a と b は交換する変数です
于 2012-04-27T11:57:59.283 に答える
0
上記の Xor または a+b アルゴリズムは機能し、これを行うための最良の方法ですが、奇妙な方法の例にすぎません。なぜこれをやりたいのかはまだわかりません。ByRef という 2 つの値を指定して、標準の swap メソッドを実行させる関数を作成するだけです。
Dim newList as New List(Of Integer)
newList.Add firstvalue
newList.Add secondValue
newList.Reverse
secondValue = newList.Item(0)
firstValue = newList.Item(1)
于 2012-04-27T12:31:58.357 に答える
0
アプローチ#1。
足し算と引き算の方法
Integer a, b
read a and b
a= a+b;
b=a-b;
a=a-b;
問題:
数値の合計が整数の範囲を超えると、誤った結果になります。
アプローチ#2。
乗除法
Integer a, b
read a and b
a=a*b;
b=a/b;
a=a/b;
問題:
- a*b の値が整数の範囲を超える場合。
- a または b の値がゼロの場合、間違った結果が返されます。
アプローチ#3。
XOR法
Integer a , b
read a and b
a=a^b;
b=a^b;
a=a^b;
落とし穴なしでこの問題を解決するための最良のアプローチ。
于 2016-02-27T03:07:53.697 に答える