Open In App

C/C++ Tricky Programs

Last Updated : 14 Mar, 2024
Comments
Improve
Suggest changes
Like Article
Like
Report

We may come across various tricky programs in our day-to-day life. Maybe in technical interviews, coding tests, or C/C++ classrooms. 

Here is a list of such programs:- 

  • Print text within double quotes (" "). 
    This may seem easy, but beginners may get puzzled while printing text within double quotes.
C
#include <stdio.h>

int main()
{
  printf("\"geeksforgeeks\"");
   return 0;
} 
C++
// CPP program to print double quotes
#include<iostream>

int main()
{
   std::cout << "\"geeksforgeeks\"";
   return 0;
} 

Output
"geeksforgeeks"

Time Complexity: O(1)
Auxiliary Space: O(1)

  • To check if two numbers are equal without using arithmetic operators or comparison operators. 
    The simplest solution for this is using the Bitwise XOR operator (^). We know that for two equal numbers XOR operator returns 0. We will use the XOR operator to solve this problem.
C
// 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;
}
C++
// C++ program to check if two numbers are equal 
// without using arithmetic operators or 
// comparison operators
#include <iostream>
using namespace std;

int main()
{
   int x = 10;
   int y = 10;
   
   if (!(x ^ y))
      cout << " x is equal to y ";
   else 
      cout << " x is not equal to y ";
      
   return 0;
}

// This code is contributed by shivani

Output
 x is equal to y 

Time Complexity: O(1)
Auxiliary Space: O(1)

  • Print all natural numbers up to N without using a semi-colon. 
    We use the idea of recursively calling the main function.
C
#include<stdio.h>

int N = 10;

int main()
{
    static int x = 1;
    if (printf("%d ", x) && x++ < N && main())
    { }
    return 0;
}
C++
// C++ 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;
}

Output
1 2 3 4 5 6 7 8 9 10 

Time Complexity: O(1)
Auxiliary Space: O(1)

  • To Swap the values of two variables without using any extra variable.
C
#include<stdio.h>

int main()
{
   int x = 10;
   int y = 70;

   x = x + y;
   y = x - y;
   x = x - y;

   printf("X : %d\n", x);
   printf("Y : %d\n", y);

   return 0;
}
C++
// C++ program to check if two numbers are equal 
#include<bits/stdc++.h>
using namespace std;

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;
}

Output
X : 70
Y : 10

Time Complexity: O(1)
Auxiliary Space: O(1)

  • Program to find the Maximum and minimum of two numbers without using any loop or condition. 
    The simplest trick is-
C
#include<stdio.h>
#include<stdlib.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;
}
C++
// C++ 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;
}

Output
max = 20
min = 15

Time Complexity: O(1)
Auxiliary Space: O(1)

  • Print the maximum value of an unsigned int using One's Complement (~) Operator in C. 
    Here is a trick to find the maximum value of an unsigned int using one's complement operator:
C
// 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;
}    
C++
// C++ program to print maximum value of
// unsigned int.

#include <iostream>

int main()
{
   unsigned int max;
   max = 0;
   max = ~max;
  
   std::cout << "Max value : " << max;
  
   return 0;
}    

// This code is contributed by sarajadhav12052009

Output
Max value : 4294967295

Time Complexity: O(1)
Auxiliary Space: O(1)

  • To find the sum of two integers without using '+' operator. 
    This is a very easy mathematics trick. 
    We know that a + b = - (-a-b). So this will work as a trick for us.
C
#include <stdio.h>
int main()
{
  int a = 5;
  int b = 5;
  int sum = -( -a-b );
  printf("%d",sum);
  return 0;
}
C++
// CPP program to print sum of two integers
// without +
#include<iostream>

using namespace std;
int main()
{
  int a = 5;
  int b = 5;
  int sum = -( -a-b );
  cout << sum;
  return 0;
}

Output
10

Time Complexity: O(1)
Auxiliary Space: O(1)

  • Program to verify the condition inside if block.
C
#include <stdio.h>

int main()
{
    if (!(printf("geeks")))
        printf(" geeks ");
    else
        printf("forgeeks ");

    return 0;
}
C++
// 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;
}

Output
geeksforgeeks 

Time Complexity: O(1)
Auxiliary Space: O(1)

  • Program to divide an integer by 4 without using '/' operator. 
    One of the most efficient ways to divide an integer by 4 is to use right shift operator (">>").
C++
// 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;
}  
C
#include <stdio.h>

int main()
{
   int n = 4;
   n = n >> 2;
   printf(" %d ",n);
   return 0;
}  

Output
1

Time Complexity: O(1)
Auxiliary Space: O(1)

  • Program to check endianness of the computer.
C
// 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;
}
C++
// C++ program to find if machine is little
// endian or big endian.

#include <iostream>

int main() 
{
   unsigned int n = 1;
   char *c = (char*)&n;
  
   if (*c)    
       std::cout << "LITTLE ENDIAN";
   else
       std::cout << "BIG ENDIAN";
  
   return 0;
}

// This code is contributed by sarajadhav12052009

Output
LITTLE ENDIAN

Time Complexity: O(1)
Auxiliary Space: O(1)


 


Next Article
Article Tags :
Practice Tags :

Similar Reads