2014-09-18 72 views
-1

这是我使用的代码。它完美的工作,但我不明白为什么它的作品。我只是不断改变我的原始逻辑,直到我开始在计数器循环中使用-1。在不使用阵列的情况下反转数字的程序

#include<stdio.h> 
#include<math.h> 

int main(){ 
    int number, reverse, sum =0; 
    scanf("%d", &number); 
    int temp = number; 
    int ctr; 

    for(ctr = -1; temp!=0; ctr++) 
     temp = temp/10; 

    while(number) 
    { 
     sum = sum + (number%10 * (pow(10, ctr--))); 
     number = number/10; 
    } 
    printf("%d", sum); 

    return 0; 
} 
+2

使用调试器和步进虽然由行的代码行,同时检查所有变量的值。 – 2014-09-18 18:52:09

+0

意味着你问我们自己的代码的逻辑? – Avinash 2014-09-18 18:55:52

+0

调试器可能会有所帮助,但最好是遍历代码,并跟踪变量值以及它们将执行的操作。调试器可能会矫枉过正。 – Jason 2014-09-18 18:57:05

回答

1

相同的基本数学运算,但这样更容易理解:

unsigned int number = 123456789; 
unsigned int reversed = 0; 
do { 
    reversed *= 10; 
    reversed += number % 10; 
    number /= 10; 
} while (number > 0); 
相关问题