У этой задачи существует два решения.
1) Честно получить на входе одно целое число, и написать программу, получающую число-перевертыш.
2) Последовательно выводить на экран остатки от деления числа на 10, соответственно уменьшая число на каждом шаге в 10 раз.
Рассмотрим более подробно решение обеих задач:
1) Пусть на входе дано число а. Тогда t = 0 - число, которое мы собираемся сделать перевертышем.
В цикле for(; a>0; a/=10) (каждый раз отбрасываем последнюю цифру числа а до тех пор, пока это возможно) будем умножать число t на десять и прибавлять к нему последнюю цифру числа а:
t = t*10 + a%10; Таким образом, легко видеть, что полученное число t является перевертышем к числу а.
2) Этот способ на первый взгляд кажется более простым, но при решении таким способом возникают некоторые несложно преодолимые трудности.
Пусть начальное число а. В том же самом цикле (см. п.1) вместо операций с числом t совершаем вывод на экран очередного остатка данного числа а от деления на 10 - последней цифры: printf("%d", a%10);
На первый взгляд, решение верно. Действительно, пусть а = 12345. Тогда несложно видеть, что на экран будут последовательно выведены все цифры в обратном порядке: 54321.
Но если а = 1230 ? На экран выведется 0321 - а это неверный ответ!
Для преодоления этой проблемы воспользуемся еще одним циклом, удаляющим последние нули в числе а:
for(; a%10 == 0; a/=10){} . Этот цикл делит а на 10, пока последняя цифра - 0. Вот теперь все заработает, правда время выполнения слегка увеличится.