#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时怎么办。
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;本回答被提问者采纳
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;
k是中间的:k=n%10/10;
j是最小位:j=(n/10)%10;