2017-02-15 39 views
1

我正在研究一个具有一个功能的程序,其目的是反转三位数字。代码看起来像倒数时填充零数字

int reverseFunction(int userNumber){ 
    int reverse = 0,mod; 
    while (userNumber != 0) 
    { 
     mod = userNumber%10; 
     reverse = reverse*10 + mod; 
     userNumber /= 10; 
    } 

    return reverse; 
} 

这工作时,你传递一个数值,具有第一号仅1比上一次更大,除了巨大的。稍后会调用相反的内容,如果以上内容属实,则最终会显示两位数字。例如

The number you entered is: 473. 

The reversal of the input is: 374. 

Subtraction of reversal from the original number is: 99. 

Reversal of the resulting number is: 99. 

Addition of the number to the un-reversed form is: 198. 

The final outcome should be: 1089, which is our “Magic Number”. 

如果'99'填充零'099'它将吐出1089这是正确的数字。我如何解决这个问题并填充零?我已经看到了用零输出但不能用零计算的方法。我正在使用C++。

+0

只是为了澄清,如果你输入099你想反向为990? – user3853544

回答

0

您的reverse()功能没有任何问题。它似乎是你的问题在你的代码的另一部分。也就是说:在代码中添加一个反转数字到原始的非反转形式。

你应该怎么做才能使其表现出你所需要的方式是首先检查数字是否有1,2或3位数字并相应地执行加法。

例如:

int add(int _d, int _r){ // _d is "direct" and _r is "reversed" number 
    int result = _d; 
    if(_r > 99){ // 3 digits 
     result += _r; 
    }else if(_r > 9){ // only 2 digits 
     result += _r * 10; 
    }else{ // only 1 digit 
     result += _r * 100; 
    } 
    return result; 
} 
0

那是因为你的反向作用是一般于各种数字的号码。所以你应该明确指定你想要的数字:

#include <math.h> 
int reverseFunction(int userNumber,int numOfDigits) 
{ 
    int reverse = 0,mod; 
    int digitsCount = 0; 
    while (userNumber != 0) 
    { 
     mod = userNumber%10; 
     reverse = reverse*10 + mod; 
     userNumber /= 10; 
     digitsCount++; 
    } 
    return reverse*pow(10,numOfDigits-digitsCount); 
} 

这应该为所有类型的数字现在填充的东西。

+0

看起来不对我。你测试过这些代码吗? –

+0

谢谢你指出。我没有。我改变了一下,现在正在工作:) –