C/C++棘手程序

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

以下是此类程序的列表:

1.在双引号(””)中打印文本。

这似乎很容易,但是初学者在打印双引号内的文本时可能会感到困惑。

// CPP program to print double quotes 
#include<iostream> 
  
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<stdio.h> 
  
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<iostream> 
  
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<iostream> 
  
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<bits/stdc++.h> 
  
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语言中使用One的补数(〜)运算符输出无符号int的最大值。

这是一个使用补码运算符查找无符号int最大值的技巧:

// C program to print maximum value of 
// unsigned int. 
#include<stdio.h> 
  
int main() 
{ 
   unsigned int max; 
   max = 0; 
   max = ~max; 
   printf("Max value : %u ",  max); 
  return 0; 
}     

7)查找两个整数的和而不使用“ +”运算符。

这是一个非常简单的数学技巧。我们知道a + b = –(-a-b)。因此,这将对我们有用。

// CPP program to print sum of two integers 
// withtout + 
#include<iostream> 
  
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<iostream> 
  
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<iostream> 
  
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 <stdio.h> 
  
int main()  
{ 
   unsigned int n = 1; 
   char *c = (char*)&n; 
   if (*c)     
       printf("LITTLE ENDIAN"); 
   else
       printf("BIG ENDIAN"); 
   return 0; 
} 

六一编程网

发表评论

Next Post

使用Python登录Facebook

周四 5月 14 , 2020
在学习Python时,Python脚本是最有趣、最吸引人的事情之一。自动化和控制浏览器就是其中之一。 […]