C Programs | IT Developer
IT Developer

C Programs



Share with a Friend

Loop Programs in C

Print all palindrome numbers in a given range

Introduction

A Palindrome number is a number that remains the same when its digits are reversed.

 Examples:

  • 121 → palindrome
  • 12321 → palindrome
  • 123 → not a palindrome

This program prints all palindrome numbers in a given range using a for, while and do..while loop.

 

C Program: Print all palindrome numbers in a given range

Method 1: Using for loop

C

#include <stdio.h>

 

int main() {

    int start, end, num, reversed, remainder, original;

 

    // Input

    printf("Enter the starting number of the range: ");

    scanf("%d", &start);

    printf("Enter the ending number of the range: ");

    scanf("%d", &end);

 

    // Validate input

    if (start > end || start < 0) {

        printf("Invalid range!\n");

        return 1;

    }

 

    printf("Palindrome numbers between %d and %d are:\n", start, end);

 

    // Loop through the range

    for (num = start; num <= end; num++) {

        original = num;

        reversed = 0;

 

        // Reverse the number

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

            remainder = temp % 10;

            reversed = reversed * 10 + remainder;

        }

 

        // Check if palindrome

        if (reversed == original)

            printf("%d ", num);

    }

 

    printf("\n");

    return 0;

}

Output

 
OUTPUT 1 :
Enter the starting number of the range: 100
Enter the ending number of the range: 150
Palindrome numbers between 100 and 150 are:
101 111 121 131 141

OUTPUT 2 :
Enter the starting number of the range: 1
Enter the ending number of the range: 20
Palindrome numbers between 1 and 20 are:
1 2 3 4 5 6 7 8 9 11


Explanation

  1. User inputs the start and end of the range.
  2. Outer for loop iterates each number in the range.
  3. For each number:
    • Reverse the number using another for
    • Compare the reversed number with the original.
  4. If equal → print the number as palindrome.

 

C Program: Print all palindrome numbers in a given range

Method 2: Using while loop

C

#include <stdio.h>

 

int main() {

    int start, end, num, original, reversed, remainder, temp;

 

    // Input

    printf("Enter the starting number of the range: ");

    scanf("%d", &start);

    printf("Enter the ending number of the range: ");

    scanf("%d", &end);

 

    // Validate input

    if (start > end || start < 0) {

        printf("Invalid range!\n");

        return 1;

    }

 

    printf("Palindrome numbers between %d and %d are:\n", start, end);

 

    num = start;

    while (num <= end) {

        original = num;

        reversed = 0;

        temp = num;

 

        // Reverse the number

        while (temp != 0) {

            remainder = temp % 10;

            reversed = reversed * 10 + remainder;

            temp /= 10;

        }

 

        // Check if palindrome

        if (reversed == original)

            printf("%d ", num);

 

        num++;

    }

 

    printf("\n");

    return 0;

}

Output

 
OUTPUT 1 :
Enter the starting number of the range: 100
Enter the ending number of the range: 150
Palindrome numbers between 100 and 150 are:
101 111 121 131 141

OUTPUT 2 :
Enter the starting number of the range: 1
Enter the ending number of the range: 20
Palindrome numbers between 1 and 20 are:
1 2 3 4 5 6 7 8 9 11


Explanation

  1. User enters the start and end of the range.
  2. Outer while loop iterates each number from start to end.
  3. For each number:
    • Reverse the number using an inner while
    • Compare the reversed number with the original.
  4. If equal → print the number as palindrome.

 

C Program: Print all palindrome numbers in a given range

Method 3: Using do..while loop

C

#include <stdio.h>

 

int main() {

    int start, end, num, original, reversed, remainder, temp;

 

    // Input

    printf("Enter the starting number of the range: ");

    scanf("%d", &start);

    printf("Enter the ending number of the range: ");

    scanf("%d", &end);

 

    // Validate input

    if (start > end || start < 0) {

        printf("Invalid range!\n");

        return 1;

    }

 

    printf("Palindrome numbers between %d and %d are:\n", start, end);

 

    num = start;

    if (num <= end) {

        do {

            original = num;

            reversed = 0;

            temp = num;

 

            // Reverse the number using do...while

            if (temp == 0)

                reversed = 0; // special case for 0

            else

                do {

                    remainder = temp % 10;

                    reversed = reversed * 10 + remainder;

                    temp /= 10;

                } while (temp != 0);

 

            // Check if palindrome

            if (reversed == original)

                printf("%d ", num);

 

            num++;

        } while (num <= end);

    }

 

    printf("\n");

    return 0;

}

Output

 
OUTPUT 1 :
Enter the starting number of the range: 100
Enter the ending number of the range: 150
Palindrome numbers between 100 and 150 are:
101 111 121 131 141

OUTPUT 2 :
Enter the starting number of the range: 1
Enter the ending number of the range: 20
Palindrome numbers between 1 and 20 are:
1 2 3 4 5 6 7 8 9 11


Explanation

  1. User enters the start and end of the range.
  2. Outer do..while loop iterates num from start to end.
  3. For each number:
    • Inner do..while loop reverses the number.
    • Compare reversed number with the original.
  4. If equal → print the number as palindrome.
  5. Ensures that even the first number in the range is checked at least once.