обратный ввод чисел пользователем

Я пытаюсь изменить число вводимых пользователем значений (т.е. числа, вводимые пользователем, хранятся в массиве, пока он вводит положительное число). Однако, когда я ввожу 123 4569 752 896 -1, выход 321 9653 257 698. Как вы можете видеть, второе число не 9654. Я не мог это исправить.

#include  #include  // finding the number of digits int bsm(int a){ int i=0; while(a!=0){ i++; a=a/10; } return i; } // reversing the number int rev(int m,int a){ int s=0,sum=0; while(a!=0){ s=a%10; sum+=s*pow(10,m)/10; m--; a=a/10; } return sum; } int main() { int i=0,k,a[10],p,r; scanf("%d",&a[i]); while(a[i]>0){ i++; scanf("%d",&a[i]); } for(k=0;k<i;k++){ p=bsm(a[k]); r=rev(p,a[k]); printf("\n%d ",r); } return 0; } 

Поскольку это выглядит как домашнее задание, я ограничу свой ответ двумя намеками.

  1. Когда вы используете pow() , он возвращает число с плавающей запятой, а числа с плавающей запятой неточны. Перепишите свою программу, используя только целые математические выражения или строки.

  2. Подумайте, как вы хотите обрабатывать числа, которые заканчиваются нулями; например, что должно быть наоборот 2000 года?