2017-01-02 84 views
0

这是一个倒数的公式吗?算法倒数

例如123-321?

编号为K

INV k = k%100 + K/10%,10 * 10 + K%10 * 100

我不知道我究竟写的,我需要这种权利在学校的图形算法

编辑任务:是的,我很愚蠢的xD我是初学者的xD

+0

我会分开计算更多,使他们更容易遵循,如'units = K%10;数十= ...;数百= ...;'然后当这些数字全部分开时,再次将它们合并为'inv = 100 * units + 10 * ten + hundred;'。 –

+0

你对问什么不是很清楚。 123-321是你收到的一个字符串,必须验证它是一个回文。你收到'123'并且必须返回'321'?你收到的号码总是3位数字吗? – AntonH

+0

我不需要写这个程序,但是我会绘制一个3位数的算法。 这是好方法还是不好? 我的英文很抱歉xD –

回答

3

这个逻辑会帮助你。变量inverse是输出。

 int num = 123; 
     double inverse = 0; 
     while (num != 0) 
     { 
      inverse = inverse * 10; 
      inverse = inverse + num % 10; 
      num = num/10;     
     } 
+2

为什么'inverse'的类型是'double'而不是'int'? –

+0

谢谢J. Piquard先生的评论......应该是int。但是双倍也没有问题。 –

0
#include <stdio.h> 
#include <stdlib.h> 

int main(void) { 
    int i = 123045 , j = 0,k=0; 

    while(i != 0) 
     { 
     j=i%10; 
     k = k *10 + j; 
     i /=10; 
    } 

    printf("%d\n", k); 
    return 0; 
} 

输出 540321

+0

在while循环的每次迭代中,'i%10'将从右边提取第一个数字。这个数字由'j'结转到'k',我们用整数除去'i'中的数字。 – Amjad

+2

这不适用于包含零的数字,例如12305,终止条件错误。 – axalis

+0

修改;感谢您提出这个! – Amjad

1

如果您希望您的代码与任何数量的工作,可以考虑转换为字符串,然后扭转它!

int invert(int input) 
{ 
    std::stringstream str; 
    str << input; 

    std::string s = str.str(); 
    std::reverse(s.begin(),s.end()); 

    return atoi(s.c_str()); 
} 
+0

我宁愿直接在整数中做它,而不是做不必要的转换到/从字符串(涉及动态内存分配btw。)。 – axalis