#include <stdio.h>
int main()
{
int n = 0;
//sum一定要是全局变量,局部的话出函数整个变量都被销毁了
int sum = 1;
//输入n!的最后一位
scanf_s("%d", &n);
int i = 1;
for (i = 1; i <= n; i++)
{
sum *= i;
}
printf("%d", sum);
return 0;
}
错误点:把sum放到局部中去定义,导致printf()打印时找不到sum,sum出main()已经被销毁,所以sum要是全局变量。
F2:递归法求解
#include <stdio.h>
int fac(int n)
{
if (n <= 1)
return 1;
else
return n * fac(n - 1);
}
int main()
{
int n = 0;
scanf("%d", &n);
int ret = fac(n);
printf("%d\n", ret);
return 0;
}
F3:调用函数:
#include <stdio.h>
int fac(int n)
{
int i = 0;
int ret = 1;
for (i = 1; i <= n; i++)
{
ret *= i;
}
return ret;
}
int main()
{
int n = 0;
scanf_s("%d", &n);
int ret = fac(n);
printf("%d\n", ret);
return 0;
}