结果为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=pn=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静态变量是希望在函数中的局部变量的值,在调用过之后不消失,并且保留值。
就是调用函数时被赋值一次,下次再调用函数就不会被赋值了,但是运算后的值在函数中可以一直保留,并且运算。