单选题
有以下程序
#include <stdio.h>
int f(int n);
main()
{ int a=3,s;
s=f(A);s=s+f(A);printf("%d/n",s);
}
int f(int n)
{ static int a=1;
n+=a++;
return n;
}
程序运行后的输出结果是______。
A.9
B.8
C.7
D.10
A
B
C
D
【正确答案】
A
【答案解析】
[解析] 题目中定义的静态局部变量a,在静态存储区内分配存储单元,在程序整个运行期间都不释放。因此第一次调用函数执行“n+=a++;”时,a先与n相加再进行自增运算。n的值为4,a的值为2,且a变量执行完后空间没有释放。再执行“s=s+f(A)”时,s的值为4,调用f(A)函数时,n的返回值为“n=3+2=5”,此时a的值为3,所以s的值为9,选项A正确。
提交答案
关闭