C编程:尝试打印所有2位数字的产品的反向

时间:2013-05-16 10:00:57

标签: c

正如标题所述,我正在尝试打印所有2位数字的产品的反面。

例如:对于100,200,300 ......,我想打印001,002,003。

这是我的代码:

#include<stdio.h>

main()
{
    int rev=0,revprod;
    int i,j,prod;
    for(i=10;i<100;i++)
    {
        for(j=10;j<100;j++)
        {
            prod=i*j; 
            revprod=prod;
            while(revprod!=0)
            {
                rev=rev*10;
                rev=rev + (revprod%10);
                revprod=revprod/10; 
            }
            printf("%d\n",rev);
        } 
    }
}

它打印垃圾值。我无法弄清楚这个问题。

1 个答案:

答案 0 :(得分:5)

处理完第一个数字后,rev不再为0,因为没有代码可以清除它,后续的内部循环将生成错误的值。

你需要坚持:

rev = 0;

在内部while循环之前。或者,您可以移动声明并放置:

int rev = 0;

while循环之前,这非常好,因为它更清楚地表明这个特定变量仅用于内部范围。

另外,请记住

rev = rev * 10;

始终可以写为

rev *= 10;

对于经验丰富的C程序员来说更清楚(它使得rev成倍增加更加明显)并且是一个很好的习惯。