它打印所有强数字(数字等于数字的阶乘之和。)直到m。
我在代码块中运行了它。
它正在接受输入,但在此之后,它表示filename.exe
已停止运行。可能是什么原因?编译器可能有问题吗?
所有其他代码运行良好。
#include<stdio.h>
int fact(int);
int main()
{
int j,n,m,sum=0;
scanf ("%d",m);
for (j=1; j<=m; j++)
{
n=j;
while (n>0)
{
sum= sum + fact(n%10);
n=n/10;
}
if (j==sum)
printf("%d ",j);
}
return 0;
}
int fact (int n)
{
if (n==0)
return 1;
else
return fact(n-1)*n;`
}
答案 0 :(得分:2)
如果你启用了编译器警告,你会得到类似的东西:
main.c:7:17: warning: format specifies type 'int *' but the argument has type 'int' [-Wformat]
scanf ("%d",m);
~~ ^
这使得问题非常明确。 scanf
需要一个指向int的指针才能读入它:scanf("%d", &m);
答案 1 :(得分:1)
scanf想要使用%d格式说明符来确定目标变量的地址。
scanf ("%d",m);
必须是
scanf ("%d", &m);
附注:照顾int
范围:–2,147,483,648
至2,147,483,647
。