以下のプログラムは整数値を取り、その桁を逆にした数値を返します。6540063 や 675 や 9600012 のような数値に対しては正常に動作しますが、0 で終わる数値に対して 630 、50 、または 10 に対しては正しく出力されません。630 は 36 を返します。理由がわかりません。何を追加すればよいか教えていただけますか?これはスパゲッティコードのようですね。
#include <stdio.h>
#include <math.h>
void getDigit(int number);
void getReverse(int number);
int main(void) {
int namba=630; //Enter here number to be reversed
getReverse(namba);
return 0;
}
void getDigit(int number) {
int div=1,reverse=0,count=0,i=0;
//to find max dividend
while (number>10*div){
div*=10;
++count;
}
while(div!=0&&i<=count){
printf("%d ",number/div);
number=number%div;
div/=10;
}
}
void getReverse(int number){
int div=1,reverse=0,count=0,i=0;
//to find max dividend
while (number>10*div){
div*=10;
++count;
}
while(div!=0&&i<=count){
reverse+=(number/div)*pow(10,i++); //to find reverse digits
number=number%div;
div/=10;
}
printf("Reverse is: %d\n",reverse);
getDigit(reverse);
}