有以下程序: #lnclude int fun() {static int i=1; i*=3; retum i; } void main() {int k,s=1; for(k=1;k<=3;k++)s*=fun(); printf(’’%d\n’’,s

admin2021-06-15  7

问题 有以下程序:
#lnclude
int fun()
{static int i=1;
i*=3;
retum i;
}
void main()
{int k,s=1;
for(k=1;k<=3;k++)s*=fun();
printf(’’%d\n’’,s);
}
程序运行后的输出结果是(  )。

选项 A、729
B、27
C、81
D、243

答案A

解析 主函数中的for循环体可以写成s=s*fun()*fun()*fun();子函数中的静态变量只在定义时赋一次初值,因此第1次调用时初值是1,返回3,第2次调用时i的初值为3而不是1,所以返回9,第3次调用i=9,返回27;所以主函数中的s=1*3*9*27=729。
转载请注明原文地址:https://kaotiyun.com/show/zAtp777K
0

最新回复(0)