在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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP