单选题 有以下程序:
#include<stdio.h>
int fun()
{static int x=1;
x*=2;
return x;
}
main()
{int i, s=1;
for(i=1; i<=3; i++) s*=fun();
printf("%d/n", s);
}
程序运行后的输出结果是______。
【正确答案】 D
【答案解析】[解析] 分析程序可知,main函数中初始化s=1,然后根据i的值1、2、3执行3次for循环,每次将s当前值与函数fun()的返回值相乘,并将乘积赋给s,所以for循环等价于:s=s*fun()*fun()*fun();可见s的值取决于fun()函数的返回值。在fun()函数中,定义了一个静态局部变量x并初始化为1,再将x的值乘以2返回,因为静态局部变量x在编译时赋初值,并且只赋值一次,下一次调用时都是保留上一次的值,所以fun()函数每次被调用,返回值都是上一次的2倍,所以s=1×2×4×8=64。故答案选D选项。