正如标题所述,我正在尝试打印所有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);
}
}
}
它打印垃圾值。我无法弄清楚这个问题。
答案 0 :(得分:5)
处理完第一个数字后,rev
不再为0,因为没有代码可以清除它,后续的内部循环将生成错误的值。
你需要坚持:
rev = 0;
在内部while
循环之前。或者,您可以移动声明并放置:
int rev = 0;
在while
循环之前,这非常好,因为它更清楚地表明这个特定变量仅用于内部范围。
另外,请记住
rev = rev * 10;
始终可以写为
rev *= 10;
对于经验丰富的C程序员来说更清楚(它使得rev
成倍增加更加明显)并且是一个很好的习惯。