求解详细过程 还有printf(“%d!=%ld\n”,i,Func(i));里面是什么意思啊

结果为1!=1
2!=2
3!=6
4!=24
5!=120

运行时,输入5

#include "stdio.h"
long Func(int n);
int main()

int i, n;

long result;

printf("Inputn: ");

scanf("%d", &n);

for(i=1;i<=n; i++)

printf("%d! = %ldn", i, Func(i));

return 0;

long Func(int n)

static long p=1;

p=p* n;

return p;

printf(“%d!=%ld\n”,i,Func(i))
这个是输出语句,%d是通配符,用后面的i和Func(i)函数的返回值替换%d的位置,形成输出的信息
这是个循环调用子函数
输入n=5
第一次循环,i=1
Func(1),静态变量p=1,p=pn=1,所以输出1!=1
第二次循环,i=2
Func(2),静态变量p=1,p=p
n=2,所以输出2!=2
第三次循环,i=3
Func(3),静态变量p=2,p=pn=23=6,所以输出3!=6
第四次循环,i=4
Func(4),静态变量p=6,p=pn = 64=24,所以输出4!=24
第五次循环,i=5
Func(5),静态变量p=24,p=pn=245 = 120,所以输出5!=120

static静态变量是希望在函数中的局部变量的值,在调用过之后不消失,并且保留值。
就是调用函数时被赋值一次,下次再调用函数就不会被赋值了,但是运算后的值在函数中可以一直保留,并且运算。