📜  C / C++棘手程序

📅  最后修改于: 2021-05-25 21:49:33             🧑  作者: Mango

在我们的日常生活中,我们可能会遇到各种棘手的程序。可能在技术面试,编码测试中,或在C / C++教室中。
这是此类程序的列表:

  1. 在双引号(“”)中打印文本。
    这似乎很容易,但是初学者在打印双引号内的文本时可能会感到困惑。
    // CPP program to print double quotes
    #include
      
    int main()
    {
       std::cout << "\"geeksforgeeks\"";
       return 0;
    } 
    

    输出:

    "geeksforgeeks"
    
  2. 要检查两个数字是不使用算术运算运算符或运算符相等。
    最简单的解决方案是使用按位XOR运算符(^)。我们知道,对于两个相等的数字,XOR运算符将返回0。我们将使用此技巧来解决此问题。
    // C program to check if two numbers are equal 
    // without using arithmetic operators or 
    // comparison operators
    #include
      
    int main()
    {
       int x = 10;
       int y = 10;
       if ( !(x ^ y) )
          printf(" x is equal to y ");
       else 
          printf(" x is not equal to y ");
       return 0;
    }
    

    输出:

    x is equal to y
    
  3. 不使用分号将所有自然数打印到N。
    我们使用递归调用main函数的想法。
    // CPP program to print all natural numbers upto 
    // N without using semi-colon
    #include
      
    using namespace std;
    int N = 10;
      
    int main()
    {
      static int x = 1;
      if (cout << x << " " && x++ < N && main())
      { }
      return 0;
    }
    

    输出:

    1 2 3 4 5 6 7 8 9 10 
    
  4. 交换两个变量的值,而无需使用任何其他变量。
    // C++ program to check if two numbers are equal 
    #include
      
    int main()
    {
       int x = 10;
       int y = 70;
      
       x = x + y;
       y = x - y;
       x = x - y;
      
       cout << "X : " << x << "\n";
       cout << "Y : " << y << "\n"; 
         
       return 0;
    }
    

    输出:

    X : 70
    Y : 10
    
  5. 程序无需使用任何循环或条件即可查找两个数字的最大值和最小值。
    最简单的把戏是-
    // CPP program to find maximum and minimum of
    // two numbers without using loop and any
    // condition.
    #include
      
    int main ()
    {
       int a = 15, b = 20;
       printf("max = %d\n", ((a + b) + abs(a - b)) / 2);
       printf("min = %d", ((a + b) - abs(a - b)) / 2);
       return 0;
    }
    

    输出:

    max = 20
    min = 15
    
  6. 使用C语言中的一个Compliment(〜)运算符打印无符号int的最大值。
    这是一个使用补余运算符查找无符号int最大值的技巧:
    // C program to print maximum value of
    // unsigned int.
    #include
      
    int main()
    {
       unsigned int max;
       max = 0;
       max = ~max;
       printf("Max value : %u ",  max);
      return 0;
    }    
    
  7. 查找两个整数之和而不使用’+’运算符。
    这是一个非常简单的数学技巧。
    我们知道a + b = –(-ab)。因此,这将对我们有用。
    // CPP program to print sum of two integers
    // withtout +
    #include
      
    using namespace std;
    int main()
    {
      int a = 5;
      int b = 5;
      int sum = -( -a-b );
      cout << sum;
      return 0;
    }
    

    输出:

    10
    
  8. 程序验证if块中的条件。
    // CPP program to verifies the condition inside if block
    // It just verifies the condition inside if block, 
    // i.e., cout << "geeks" which returns a non-zero value, 
    // !(non-zero value) is false, hence it executes else
    // Hence technically it only executes else block 
    #include
      
    using namespace std;
    int main()
    {
        if (!(cout << "geeks")) 
        cout <<" geeks "; 
        else
        cout << "forgeeks ";
          
        return 0;
    }
    

    输出:

    geeksforgeeks
    
  9. 程序不使用’/’运算符将整数除以4。
    将整数除以4的最有效方法之一是使用右移运算符(“ >>”)。
    // CPP program to divide a number by 4
    // without using '/'
    #include
      
    using namespace std;
    int main()
    {
       int n = 4;
       n = n >> 2;
       cout << n;
       return 0;
    }  
    

    输出:

    1
    
  10. 检查计算机字节序的程序。
    // C program to find if machine is little
    // endian or big endian.
    #include 
      
    int main() 
    {
       unsigned int n = 1;
       char *c = (char*)&n;
       if (*c)    
           printf("LITTLE ENDIAN");
       else
           printf("BIG ENDIAN");
       return 0;
    }
    
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。