inversion des nombres entrés par l’utilisateur

J’essaie d’inverser les nombres entrés par l’utilisateur (c‘est-à-dire que les numéros entrés par l’utilisateur sont stockés dans un tableau tant qu’il entre un nombre positif). Cependant, lorsque je saisis 123 4569 752 896 -1, la sortie est 321 9653 257 698. Comme vous pouvez le constater, le deuxième numéro n’est pas 9654. Je ne pouvais pas le réparer.

#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; } 

Comme cela ressemble à un devoir, je limiterai ma réponse à deux astuces.

  1. Lorsque vous utilisez pow() , il renvoie un nombre à virgule flottante et les nombres à virgule flottante sont inexacts. Réécrivez votre programme en utilisant uniquement des mathématiques ou des chaînes entières.

  2. Réfléchissez à la façon dont vous souhaitez gérer les nombres qui se terminent par des zéros; par exemple, quel devrait être l’inverse de 2000?