C Programs | IT Developer
IT Developer

C Programs



Share with a Friend

Loop Programs in C

Print reverse of a negative number

Introduction

Reversing a number with possible negative input means the sign is preserved after reversing the digits.

Example:

  • Input: 12345 → Output: 54321
  • Input: -123 → Output: -321

We’ll handle the sign separately and then reverse the absolute value.

 

C Program: Print Reverse of a Negative Number

NOTE: The Program is written using for, while and do..while loop.
Method 1 is for loop, Method 2 is while loop and Method 3 is do..while loop

Method 1: Using for loop


C

#include <stdio.h>

 

int main() {

    int num, original, digit, reversed = 0;

    int isNegative = 0;

 

    // Input

    printf("Enter an integer: ");

    scanf("%d", &num);

 

    original = num; // store original number

 

    // Check if the number is negative

    if (num < 0) {

        isNegative = 1;

        num = -num; // make it positive for reversal

    }

 

    // Reverse the number using for loop

    for (; num != 0; num /= 10) {

        digit = num % 10;

        reversed = reversed * 10 + digit;

    }

 

    // Restore negative sign if needed

    if (isNegative) {

        reversed = -reversed;

    }

 

    // Display result

    printf("Reverse of %d = %d\n", original, reversed);

 

    return 0;

}

Output

 
OUTPUT 1 :
Enter an integer: 12345
Reverse of 12345 = 54321

OUTPUT 2 :
Enter an integer: -9876
Reverse of -9876 = -6789

OUTPUT 3 :
Enter an integer: 400
Reverse of 400 = 4


Explanation

  1. Read the number num and store it in original.
  2. Check if num is negative:
    • Set isNegative = 1 and convert num to positive.
  3. Use a for loop to reverse the digits of num:
    • Extract last digit using digit = num % 10.
    • Append it to reversed using reversed = reversed * 10 + digit.
    • Remove the last digit using num /= 10.
  4. If the number was negative, restore the negative sign.
  5. Print the reversed number.

 

C Program: Print Reverse of a Negative Number

Method 2: Using while loop


C

#include <stdio.h>

 

int main() {

    int num, original, digit, reversed = 0;

    int isNegative = 0;

 

    // Input

    printf("Enter an integer: ");

    scanf("%d", &num);

 

    original = num; // store original number

 

    // Check if the number is negative

    if (num < 0) {

        isNegative = 1;

        num = -num; // make it positive

    }

 

    // Reverse the number using while loop

    while (num != 0) {

        digit = num % 10;             // extract last digit

        reversed = reversed * 10 + digit; // append digit

        num = num / 10;               // remove last digit

    }

 

    // Restore negative sign if needed

    if (isNegative) {

        reversed = -reversed;

    }

 

    // Display result

    printf("Reverse of %d = %d\n", original, reversed);

 

    return 0;

}

Output

 
OUTPUT 1 :
Enter an integer: 12345
Reverse of 12345 = 54321


OUTPUT 2 :
Enter an integer: -9876
Reverse of -9876 = -6789


OUTPUT 3 :
Enter an integer: 400
Reverse of 400 = 4


Explanation

  1. Read the number num and store it in original.
  2. Check if num is negative:
    • Set isNegative = 1
    • Convert num to positive for reversal
  3. Use a while loop:
    • Extract the last digit with digit = num % 10
    • Append it to reversed using reversed = reversed * 10 + digit
    • Remove the last digit using num = num / 10
  4. Restore negative sign if the original number was negative.
  5. Print the reversed number.

 

C Program: Print Reverse of a Negative Number

Method 3: Using do..while loop


C

#include <stdio.h>

 

int main() {

    int num, original, digit, reversed = 0;

    int isNegative = 0;

 

    // Input

    printf("Enter an integer: ");

    scanf("%d", &num);

 

    original = num; // store original number

 

    // Check if number is negative

    if (num < 0) {

        isNegative = 1;

        num = -num; // make positive

    }

 

    // Reverse the number using do-while loop

    if (num == 0) {

        reversed = 0;

    } else {

        do {

            digit = num % 10;               // get last digit

            reversed = reversed * 10 + digit; // append digit

            num = num / 10;                 // remove last digit

        } while (num != 0);

    }

 

    // Restore negative sign if needed

    if (isNegative) {

        reversed = -reversed;

    }

 

    // Display result

    printf("Reverse of %d = %d\n", original, reversed);

 

    return 0;

}

Output

 
OUTPUT 1 :
Enter an integer: 12345
Reverse of 12345 = 54321


OUTPUT 2 :
Enter an integer: -9876
Reverse of -9876 = -6789


OUTPUT 3 :
Enter an integer: 0
Reverse of 0 = 0




Explanation

  1. Store the original number in original.
  2. Check if the number is negative:
    • Set isNegative = 1
    • Convert num to positive
  3. Use a ..while loop to reverse digits:
    • Extract last digit using digit = num % 10
    • Append to reversed using reversed = reversed * 10 + digit
    • Remove last digit using num / 10
  4. Restore negative sign if needed.
  5. Print the reversed number.