📜  在不使用算术,关系或条件运算符的情况下设置变量

📅  最后修改于: 2021-05-30 05:05:19             🧑  作者: Mango

给定三个整数a,b和c,其中c可以为0或1。在不使用任何算术运算的情况下,关系和条件运算符根据以下规则设置变量x的值–

If c = 0
    x = a
Else // Note c is binary
    x = b.

例子:

Input: a = 5, b = 10, c = 0;
Output: x = 5

Input: a = 5, b = 10, c = 1;
Output: x = 10

解决方案1:使用算术运算运算符
如果允许使用算术运算运算符,则可以使用以下任一表达式轻松地计算x –

x = ((1 - c) * a) + (c * b)

OR

x = (a + b) - (!c * b) - (c * a);

OR

x = (a * !c) | (b * c);
#include 
using namespace std;
  
int calculate(int a, int b, int c)
{
    return ((1 - c) * a) + (c * b); 
}
  
int main()
{
   int a = 5, b = 10, c = 0;
      
   int x = calculate(a, b, c);
   cout << x << endl;
      
   return 0;
}

输出:

5

解决方案2:不使用算术运算运算符
想法是构造一个大小为2的数组,以使数组的索引0存储变量’a’的值和变量b的索引1值。现在,我们根据变量c的值返回数组的索引0或索引1处的值。

#include 
using namespace std;
  
int calculate(int a, int b, int c)
{
   int arr[] = {a, b};
   return *(arr + c);
}
  
int main()
{
   int a = 5, b = 10, c = 1;
      
   int x = calculate(a, b, c);
   cout << x << endl;
      
   return 0;
}

输出:

10
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”