求阶乘和数的时候,好像用红色部分求不太对,比如我求145的是可以的,但是求1400的它根本就没有输出,为什么呢?
#include <stdio.h>
#include <math.h>
//函数f求阶乘和数
int f(int n)
{
int a=n;
double m;
while(a>0)
{
m+=jiecheng(a%10);
a=a/10;
}
return m;
}
//函数jiecheng求某数的阶乘
/*int jiecheng(int n)
{
int y;
if(n==1)
y=1;
else y=n*jiecheng(n-1);
return y;
}*/
int jiecheng(int n)
{
int i,y=1;
for(i=n;i>0;i--)
{
y=y*i;
}
return y;
}
int main()
{
int n,i,m,k=0,l;
scanf("%d",&n);
m=n;
//计算有几位数
while(m>0)
{
m=m/10;
k++;
}
l=n;
printf("%d,",n);
printf("%d!",l/(int)pow(10,k-1));
for(i=1;i<k;i++)
{
int x=l%(int)pow(10,k-i);
int y=pow(10,k-1-i);
printf("+%d!",x/y);
}
printf("=");
printf("%d\n",f(n));
if(f(n)==n)
printf("Yes\n");
else
printf("No\n");
return 0;
}