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

admin2019-01-11  12

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

选项 A、6,8,
B、6,9,
C、6,6,
D、6,7,

答案A

解析 static定义一个静态分布变量,变量只会初始化一次,在for循环体内调用f()函数输出,f()函数首先是将当前n,m,a,k加1后进行累加返回主函数输出,第二次累加时,重新给m,n定义初始值为0,因此,两次输出分别为6,8,故答案为A选项。
转载请注明原文地址:https://jikaoti.com/ti/pja0FFFM
0

最新回复(0)