有以下程序: #include<stdio.h> int fun() {static int x=1: x*=2: retum x; } main() {int i,s=1: for(i=1;i<=3;i++) s*=fun(); printf("%d\n

admin2016-09-03  20

问题 有以下程序:
#include<stdio.h>
int fun()
{static int x=1:
x*=2:
retum x;
}
main()
{int i,s=1:
for(i=1;i<=3;i++) s*=fun();
printf("%d\n",s);
}
程序运行后的输出结果是(  )。

选项 A、30
B、10
C、0
D、64

答案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。
转载请注明原文地址:https://kaotiyun.com/show/ywID777K
0

相关试题推荐
最新回复(0)