C Program to swap first and last digit of a number

In this blog post, we learn how to write a C Program to swap first and last digit of a number?. We will write the C Program to swap first and last digit of a number using the mathematical operation. Here we will see the logic to swap first and last digit of a number in C program. Let see an example,

Input :  12345
           ||
           \/      
Output :  52341

 

Algorithm to swap first and last digit of a number:

 

1. Ask the user to enter an integer number. Suppose n = 12345, where n is an integer variable.

int n = 12345;

 

2. To find the last digit of a number, we use modulo operator %. When modulo divided by 10 returns last digit of the input number.

lastDigit = num % 10

 

3. Find the first digit with the help of mathematical operation.

//Find total number of digit - 1
digit    = (int)log10(n);

//Find first digit
firstDigit = (int) (n / pow(10, digit));

 

4. Use below logic to swap first and the last digit.

swappedNum  = lastDigit;
swappedNum *= (int) round(pow(10, digits));
swappedNum += n % ((int)round(pow(10, digits)));
swappedNum -= lastDigit;
swappedNum += firstDigit;

 

C Program to swap first and last digit of a number:

In the below program I am using three mathematical function pow(), log10(), and round(). I want to give a small introduction about these mathematical functions it helps to understand the code.

  • pow() is used to find the power of a number.
  • log10() is used to find a log base 10 value of the passed parameter.
  • round() is used to round a number to the nearest integer.

 

#include <stdio.h>
#include <math.h>

int main()
{
    int n,firstDigit, lastDigit,digits, swappedNum;

    printf("Enter number = ");
    scanf("%d", &n);

    //Find last digit of a number
    lastDigit = n % 10;

    //Find total number of digits - 1
    digits    = (int)log10(n);

    //Find first digit
    firstDigit = (int) (n / pow(10, digits));


    swappedNum  = lastDigit;
    swappedNum *= (int) round(pow(10, digits));
    swappedNum += n % ((int)round(pow(10, digits)));
    swappedNum -= lastDigit;
    swappedNum += firstDigit;

    printf("Number after swapping first and last digit: %d", swappedNum);

    return 0;
}

Output:

Enter number = 12345
Number after swapping first and last digit: 52341

 

Code Explanation:

From the above Program to Swap First and Last Digit Of a Number example, you can see that the user entered value = 12345

lastDigit = 12345 % 10 => 5

digits = log10(12345) => 4

firstDigit = 12345 / pow (10, 4) => 12345 / 10000 => 1

swappedNum = LastDigit = 5;

swappedNum = swappedNum * (round(pow(10, digits)));
swappedNum = 5 * round(pow(10, 4)) => 5 * 10000 => 50000;

swappedNum = swappedNum + Number % (round(pow(10, digits)))
swappedNum = 50000 + (12345 % 10000) => 50000 + 2345 => 52345

swappedNum = swappedNum – LastDigit
swappedNum = 52345 – 5 => 52340

swappedNum = swappedNum + FirstDigit
swappedNum = 52340 + 1 => 52341