Проверка палиндрома в C: методы определения того, является ли число палиндромом

Чтобы проверить, является ли число палиндромом в C, вы можете использовать различные методы. Вот несколько подходов:

  1. Использование перевернутого числа: переверните заданное число и сравните его с исходным числом. Если они одинаковы, то число является палиндромом.
#include <stdio.h>
int isPalindrome(int number)
{
    int reversedNumber = 0;
    int originalNumber = number;

    while (number != 0)
    {
        int remainder = number % 10;
        reversedNumber = reversedNumber * 10 + remainder;
        number /= 10;
    }

    if (originalNumber == reversedNumber)
        return 1;
    else
        return 0;
}
int main()
{
    int number;
    printf("Enter a number: ");
    scanf("%d", &number);

    if (isPalindrome(number))
        printf("%d is a palindrome.\n", number);
    else
        printf("%d is not a palindrome.\n", number);

    return 0;
}
  1. Использование массива: преобразуйте число в массив цифр. Затем сравните цифры начала и конца массива. Если они совпадают для всех пар, то число является палиндромом.
#include <stdio.h>
int isPalindrome(int number)
{
    int digits[10];
    int count = 0;
    int temp = number;

    while (temp != 0)
    {
        digits[count] = temp % 10;
        temp /= 10;
        count++;
    }

    int i, j;
    for (i = 0, j = count - 1; i < count / 2; i++, j--)
    {
        if (digits[i] != digits[j])
            return 0;
    }

    return 1;
}
int main()
{
    int number;
    printf("Enter a number: ");
    scanf("%d", &number);

    if (isPalindrome(number))
        printf("%d is a palindrome.\n", number);
    else
        printf("%d is not a palindrome.\n", number);

    return 0;
}
  1. Использование строки: преобразуйте число в строку, а затем проверьте, является ли строка палиндромом, сравнивая символы с начала и конца.
#include <stdio.h>
#include <string.h>
int isPalindrome(int number)
{
    char numString[20];
    sprintf(numString, "%d", number);

    int length = strlen(numString);
    int i, j;

    for (i = 0, j = length - 1; i < length / 2; i++, j--)
    {
        if (numString[i] != numString[j])
            return 0;
    }

    return 1;
}
int main()
{
    int number;
    printf("Enter a number: ");
    scanf("%d", &number);

    if (isPalindrome(number))
        printf("%d is a palindrome.\n", number);
    else
        printf("%d is not a palindrome.\n", number);

    return 0;
}