问题 填空题

以下程序运行后的输出结果是______。 fun(int a) { int b=0;static int c=3; b++;c++; return(a+b+c); } main() { int i,a=5; for(i=0;i<3;i++)printf("%d%d",i,fun(a)); printf("\n"); }

答案

参考答案:0 10 1 11 2 12

解析: 此题的考点是静态变量。函数中的局部变量每次调用都重新赋初值,而静态变量只在开始执行时赋一次初值,其值一直存在有累计效应。语句“for(i=0;i<3;i++)printf("%d%d",i,fun(a));”调用fun函数3次,虽然实参都是a值为5,但返回值不同,因为fun函数内有静态变量c,每次调用累加1,首次返回值10,以后为11、12。

选择题
判断题