可以帮忙解释一下为什么这个程序能够做到输出1~100间自身积大于和的数呢?k和s不应该始终相等吗,这个程序为什么是正确的?
int main()
{
int n,k=1,s=0,m;
for(n=1;n<=100;n++)
{
k=1;
s=0;
m=n;
while (m!=0)
{
k*=m%10;
s+=m%10;
m/=10;
}
if(k>s)
printf("%d\n",n);
}
}
m % 10表示取的个位数 , m / 10表示取个位数左边的数
假设n=42进入while
k = 1 * 2; 个位数是2
s =0+2;
m /=10 ;此时取的是个位数m=2左边的数 即4
k=1 * 2 * 4;
s=0+2+4;
m /=10;此时 m=4左边已无数,m=0即结束。
所以当然能判断k和s的大小 并输出这个数n
for循环中嵌入了while循环,当while循环结束后才会开始下一个for循环。
不知道你这个问题是否已经解决, 如果还没有解决的话: