-5

以下のプログラムは整数値を取り、その桁を逆にした数値を返します。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);

}
4

2 に答える 2

7

先頭のゼロを失っているからです。

036 = 36

于 2013-04-15T22:02:06.207 に答える