在C++中為變數賦值兩個可能值中的另一個值


問題陳述

我們必須在不使用任何條件運算子的情況下,將一個變數賦值為兩個可能值中的另一個變數的值。

描述

在這個問題中,我們給定一個變數,假設為a,它可以具有兩個變數x和y中的任何一個的值。現在,我們必須建立一個程式來賦值為另一個值,而不是其當前值,而不使用任何條件運算子,即我們不能檢查x的值。

讓我們來看一個例子,以便更好地理解這個問題:

Input : a = 43 ; x = 43 and y = 21
Output : 21

**說明**:變數a的初始值為43,因此我們需要將變數a的最終值返回為另一個值,即21。

由於不允許我們檢查變數的值,即程式碼中任何型別的條件語句都是無效的。因此,我們需要尋找替代的解決方案來交換變數的值。為此,可能有多種解決方案,但這裡我們將討論最可行和最簡單的幾種:

使用算術運算子

交換值的一種簡單方法是使用兩個值的加法/乘法,然後分別進行減法/除法運算,即如果我們進行了加法,則進行減法;如果使用了乘法,則進行除法。

因此,公式變為:

a = x + y - a 或 a = x * y / a

但是,這裡乘法和除法運算成本更高,有時可能會丟擲錯誤。因此,我們使用了加減組合。

示例

即時演示

#include <iostream>
using namespace std;
int main(){
   int x = 45;
   int y = 5;
   int a = x;
   cout<<"Initial value of a is : "<<a;
   a = x+y - a;
   cout<<"\nAfter changing the value of a is : "<<a;
}

輸出

Initial value of a is : 45
After changing the value of a is : 5

使用按位異或運算子

一種更有效的方法是使用按位異或運算子。

因此,值將以以下方式更改:

a = x^y^a;

示例

即時演示

#include <iostream>
using namespace std;
int main(){
   int x = 56;
   int y = 78;
   int a = x;
   cout<<"Initial value of a is : "<< a;
   a = x^y^a;
   cout<<"\nAfter changing the value of a is "<<a;
   return 0;
}

輸出

Initial value of a is : 56
After changing the value of a is 78

更新於:2019年10月24日

452 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.