Читать число задом наперед и оперировать им в C? - PullRequest
0 голосов
/ 20 марта 2012

Существует ли библиотечная функция или простой способ считывания числа в обратном направлении и работы с ним?Под операциями я имею в виду операции с новым номером.

Например:

2845
would become
5482

Как этого добиться?У меня была идея, где можно сделать массив digit [i], по умолчанию нулевой, и получить столько значений, сколько имеет число.Например, 452 даст цифру [3]: цифра [1] будет 4, цифра [2] будет 5, а цифра [3] будет 2. Но это звучит ужасно сложно, и печать звучит как боль в задницене говоря уже о том, что я не мог оперировать новой цифрой.Мне нужно проверить, является ли число, прочитанное в обратном направлении, четным.

Есть идеи?Я долго думал об этом, но не могу найти правильного решения.Также, если это имеет значение, я использую Eclipse IDE на языке C.

Ответы [ 3 ]

3 голосов
/ 20 марта 2012

Простое решение будет:

/* only for x>0 */
int reverse(int x)
{
    int r = 0;
    while(x) {
        r = r*10 + (x%10);
        x = x/10;
    }

    return r;
}
0 голосов
/ 20 марта 2012

Я бы использовал sprintf () , чтобы преобразовать его в символ *, повернуть его с помощью простой арифметики, а затем использовать strtol () , чтобы преобразовать его обратно.

0 голосов
/ 20 марта 2012

Если вы имеете дело с достаточно маленькими числами, возможно, просто прочитайте их в строку C, используйте strrev() и затем конвертируйте в целое число?Хотя, если все, что вам нужно сделать, это «проверить, является ли число, прочитанное в обратном направлении, четным», все, что вам действительно нужно сделать, это проверить, является ли первый символ '0', '2', '4', '6', or '8'.

...