codescracker
c

C Program to Interchange the Digits of a Number



« Previous Program Next Program »

In this article, you will learn and get code about interchanging digits of a number given by user at run-time. Interchanging digits of a number has been created in following ways:

Interchange First and Last Digit of a Number

Let's first create a program in C that interchanges first and last digit of a given number.

// Interchange First and Last digit of a Number
// ----codescracker.com----

#include<stdio.h>
#include<conio.h>
int main()
{
    int num, rem, temp, rev=0, noOfDigit=0, noOfDigitTemp, revNum, remTemp;
    printf("Enter the Number: ");
    scanf("%d", &num);
    temp = num;
    while(temp>0)
    {
        temp = temp/10;
        noOfDigit++;
    }
    if(noOfDigit<2)
    {
        printf("\nIt's a single-digit number.");
        printf("\nTo interchange the digit, enter a two or more digit number");
    }
    else if(noOfDigit==2)
    {
        temp = num;
        while(temp>0)
        {
            rem = temp%10;
            rev = (rev*10)+rem;
            temp = temp/10;
        }
        printf("\nFirst and Last Digit Interchanged Successfully!");
        printf("\n\nNew Number = %d", rev);
    }
    else
    {
        temp = num;
        while(temp>0)
        {
            rem = temp%10;
            rev = (rev*10)+rem;
            temp = temp/10;
        }
        revNum = rev;
        rev = 0;
        temp = num;
        noOfDigitTemp = noOfDigit;
        while(temp>0)
        {
            remTemp = revNum%10;
            if(noOfDigitTemp==noOfDigit)
            {
                rem = temp%10;
                rev = (rev*10)+rem;
            }
            else if(noOfDigitTemp==1)
            {
                rem = temp%10;
                rev = (rev*10)+rem;
            }
            else
            {
                rev = (rev*10)+remTemp;
            }
            temp = temp/10;
            revNum = revNum/10;
            noOfDigitTemp--;
        }
        printf("\nFirst and Last Digit Interchanged Successfully!");
        printf("\n\nNew Number = %d", rev);
    }
    getch();
    return 0;
}

This program was build and run under Code::Blocks IDE. Here is its sample run:

c program interchange two numbers

Now supply any number say 12345 and press ENTER key to see the following output:

interchange digit of number c

The following block of code:

while(temp>0)
{
    temp = temp/10;
    noOfDigit++;
}

is used to count total number of digits available in given number. For example, if user enters 12345 as number, then total number of digit is 5. If total digit will be less than 2, then program will print a message like, single digit number can not be interchanged. That is, to interchange, it must be a two-digit or more than two-digit number. If the given number is a two-digit number, then simply reverse the number. For example, if the number is 12 then after reversing, it will become 21. See, its digit (first and last) gets interchanged.

If there are more than 2 digit available in given number, then program flow goes inside the else block. There, the main logic is:

The dry run of previous program with user input 12345 goes like:

Note - Previous program has a limitation that, if user enters a number that starts or ends with 0. So to overcome this problem. We have created another program using array. That will be the complete solution of interchanging the digits of a number.

Using Array

Here is another program that does the same job but using array. Using array, the program becomes easier to create and understand. Just reverse the number first. And one by one, initialize all the digit to array. Then interchange the number at 0th index with number at last index. Reverse of a number is requred, because to get digit, one by one using rem=num%10, we will get the last digit of a number. But after reversing the number, we will get last digit of reversed number (but first digit of original number).

// Interchange First and Last digit of a Number using Array
// ----codescracker.com----

#include<stdio.h>
#include<conio.h>
int main()
{
    int num, rem, temp, rev=0, noOfDigit=0, arr[10], i;
    printf("Enter the Number: ");
    scanf("%d", &num);
    temp = num;
    while(temp>0)
    {
        temp = temp/10;
        noOfDigit++;
    }
    temp = num;
    while(temp>0)
    {
        rem = temp%10;
        rev = (rev*10)+rem;
        temp = temp/10;
    }
    for(i=0; i<noOfDigit; i++)
    {
        rem = rev%10;
        arr[i] = rem;
        rev = rev/10;
    }
    if(noOfDigit==1)
    {
        printf("\nIt's a single-digit number.");
        printf("\nTo interchange the digit, enter a two or more digit number");
    }
    else if(noOfDigit==2)
    {
        temp = arr[0];
        arr[0] = arr[1];
        arr[1] = temp;
        printf("\nFirst and Last Digit Interchanged Successfully!");
        printf("\n\nNew Number = %d%d", arr[0], arr[1]);
    }
    else
    {
        i=0;
        temp = arr[i];
        arr[i] = arr[noOfDigit-1];
        arr[noOfDigit-1] = temp;
        printf("\nFirst and Last Digit Interchanged Successfully!");
        printf("\n\nNew Number = ");
        for(i=0; i<noOfDigit; i++)
            printf("%d", arr[i]);
    }
    getch();
    return 0;
}

It will produce the same output as of previous program.

Interchange any Two Digit of a Number

This program is created to interchange the two digit of a number present at any position. The number and positions entered by user.

// Interchange Required Digit of a Number using Array
// ----codescracker.com----

#include<stdio.h>
#include<conio.h>
int main()
{
    int num, posFirst, posSecond;
    int rem, temp, rev=0, noOfDigit=0, arr[10], i;
    printf("Enter the Number: ");
    scanf("%d", &num);
    temp = num;
    while(temp>0)
    {
        temp = temp/10;
        noOfDigit++;
    }
    if(noOfDigit==1)
    {
        printf("\nIt's a single-digit number.");
        printf("\nTo interchange the digit, enter a two or more digit number");
        getch();
        return 0;
    }
    else
    {
        printf("\nInterchange the Digit at Position: ");
        scanf("%d", &posFirst);
        printf("With Digit at Position: ");
        scanf("%d", &posSecond);
    }
    if(posFirst>noOfDigit || posSecond>noOfDigit)
        printf("\nInvalid Position!");
    else
    {
        temp = num;
        while(temp>0)
        {
            rem = temp%10;
            rev = (rev*10)+rem;
            temp = temp/10;
        }
        for(i=0; i<noOfDigit; i++)
        {
            rem = rev%10;
            arr[i] = rem;
            rev = rev/10;
        }
        i=0;
        temp = arr[posFirst-1];
        arr[posFirst-1] = arr[posSecond-1];
        arr[posSecond-1] = temp;
        printf("\nDigits Interchanged Successfully!");
        printf("\n\nNew Number = ");
        for(i=0; i<noOfDigit; i++)
            printf("%d", arr[i]);
    }
    getch();
    return 0;
}

Here is its sample run:

c interchange any digit in number

Now supply any number say 12345. Because it is a number that has more than one digit. Therefore program further asks to enter the position of digit to be exchange or interchange. For example, if user wants to interchange the the number at second position with number at fourth position. Then program just interchange the digit 2 with the digit 4 and the new number become 14325 as shown in the following output:

c interchange digit of number

Here is another sample run, with an input number as 9871 and digit at position first (that is 9) gets interchanged with digit at position third (that is 7):

interchange any digits of number c

C Online Test


« Previous Program Next Program »



© Copyright 2021. All Rights Reserved.

CodesCracker