若有以下程序 #include int a=2; int f(int m) { static int n; n=0; n++; a++; return n+m+a; } main() { int k; for (k=0; k

admin2019-08-18  16

问题 若有以下程序
#include
int a=2;
int f(int m)
{ static int n;
n=0; n++; a++;
return n+m+a;
}
main()
{ int k;
for (k=0; k<4; k++) printf("%d,", f(k));
}
则程序的输出结果是( )。

选项 A、4,6,8,10,
B、4,7,10,13,
C、4,5,6,7,
D、3,5,7,9,

答案A

解析 静态变量定义时的初始化只运行一次,并且其值在程序运行过程中一直存在,但是该函数中在定义静态变量n时并没有对其初始化,接下来有个赋值语句"n=0;"所以每次执行函数f()时,静态变量n都会先被赋值为0再自加1,所以输出的f(0)=1+0+3=4,n=1,a=3;f(1)=1+1+4=6,n=1,a=4;f(2)=1+2+5=8,n=1,a=5;f(3)=1+3+6=10,n=1,a=6。所以答案选A。
转载请注明原文地址:https://kaotiyun.com/show/TdRp777K
0

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