c语言编程,求一个数的值是其各位数阶乘之和,不用数组,用循环,下面这个程序哪错了?

#include <stdio.h>
void main()
{
int i,j,k,p,l,m,n,x=1,y=1,z=1;
for(n=100;n<1000;n++)
{
i=n%10;
k=n/100;
j=(n/10)%10;
for(p=1;p<=i;p++)
x=x*p;
for(l=1;l<=j;l++)
y=y*l;
for(m=1;m<=k;m++)
z=z*m;
if(x+y+z==n)printf("%d\n",n);
}
}

#include <stdio.h>
void main()
{
int i,j,k,p,l,m,n,x=1,y=1,z=1;
for(n=100;n<1000;n++)
{
x=1,y=1,z=1;
i=n%10;//个位
k=n/100;//百位
j=(n/10)%10;//十位
if(i!=0)
{
for(p=1;p<=i;p++)
{
x=x*p;
}
}
else
x=0;
if(j!=0)
{
for(l=1;l<=j;l++)
{
y=y*l;
}
}
else
y=0;
for(m=1;m<=k;m++)
{
z=z*m;
}
if(x+y+z==n)
printf("%d\n",n);
}
}

每次用过x y z 之后必须得重新初始化,否则就继续阶乘了,另外判断个位十位为0时怎么办。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-30
x,y,z计算下一个数时没有重新初始化
int i,j,k,p,l,m,n,x=1,y=1,z=1;
for(n=100;n<1000;n++)
{
x=1,y=1,z=1;//重新初始化

i=n%10;
k=n/100;
j=(n/10)%10;本回答被提问者采纳
第2个回答  2013-03-30
i是最高位数::i=n/100;

k是中间的:k=n%10/10;
j是最小位:j=(n/10)%10;

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网