Loop Exercises
C program to swap first and last digit of a number
Write a C program to input a number from user and swap first and last digit of the given number. How to swap first and last digits of a number in C programming. Logic to swap first and last digit of a number in C program.
Example
Input
Input any number: 12345
Output
Number after swapping first and last digit: 52341
Required knowledge
Basic C programming, Basic Mathematics
Logic to swap first and last digit of a number
Logic to swap first and last digit of a number
Begin:
read(num)
lastDigit ← num % 10;
digits ← log10(num);
firstDigit ← num / pow(10, digits);
swappedNum ← lastDigit * pow(10, digits);
swappedNum ← swappedNum + num % pow(10, digits);
swappedNum ← swappedNum - lastDigit;
swappedNum ← swappedNum + firstDigit;
End
Let us do a dry run of the algorithm to get grip on the logic.
Suppose num = 12345
--------------------
lastDigit = 12345 % 10 => 5
digits = log10(12345) => 4
firstDigit = 12345 / pow (10, 4) => 12345 / 10000 => 1
swappedNum = 5 * pow(10, 4) => 5 * 10000 => 50000
swappedNum = 50000 + (12345 % 10000) => 50000 + 2345 => 52345
swappedNum = 52345 - 5 => 52340
swappedNum = 52340 + 1 => 52341
Program to swap first and last digit of a number
/** * C program to swap first and last digit of a number */ #include <stdio.h> #include <math.h> int main() { int num, swappedNum; int firstDigit, lastDigit, digits; /* Input number from user */ printf("Enter any number: "); scanf("%d", &num); /* Find last digit */ lastDigit = num % 10; /* Find total number of digit - 1 */ digits = (int)log10(num); /* Find first digit */ firstDigit = (int)(num / pow(10, digits)); swappedNum = lastDigit; swappedNum *= (int) pow(10, digits); swappedNum += num % ((int) pow(10, digits)); swappedNum -= lastDigit; swappedNum += firstDigit; printf("Original number = %d", num); printf("Number after swapping first and last digit: %d", swappedNum); return 0; }
Note: In some compiler the above program may not produce valid results for some inputs. You may use the below program with similar logic with a little change in the code.
Program to swap first and last digit of a number
/** * C program to swap first and last digit of a number */ #include <stdio.h> #include <math.h> int main() { int num, swappedNum; int firstDigit, lastDigit, digits; /* Input a number from user */ printf("Enter any number: "); scanf("%d", &num); /* Find last digit */ lastDigit = num % 10; /* Total number of digit - 1 */ digits = (int) log10(num); /* Find first digit */ firstDigit = (int) (num / pow(10, digits)); swappedNum = lastDigit; swappedNum *= (int) round(pow(10, digits)); swappedNum += num % ((int)round(pow(10, digits))); swappedNum -= lastDigit; swappedNum += firstDigit; printf("Original number = %d", num); printf("Number after swapping first and last digit: %d", swappedNum); return 0; }
Note: In the above program I have used three mathematical function pow(), log10() and round().
pow() is used to find power of a number.
log10() is used to find log base 10 value of the passed parameter.
round() function is used to round a number to nearest integer.
Output
Enter any number: 1234
Original number = 1234
Number after swapping first and last digit: 4231