有以下程序 #include int a=4; int f(int n) { int t = 0; static int a=5; if (n%2) {int a=6; t += a++; } else {int a=7; t += a++; } re

admin2020-07-28  18

问题 有以下程序
#include
int a=4;
int f(int n)
{ int t = 0; static int a=5;
if (n%2) {int a=6; t += a++; }
else {int a=7; t += a++; }
return t + a++;
}
main()
{ int s=a, i=0;
for (; i<2;i++) s += f(i);
printf("%d\n", s);
}
程序运行后的输出结果是( )。

选项 A、28
B、24
C、32
D、36

答案A

解析 在一个源文件中如果外部变量和局部变量同名,则在该局部变量的作用域内,该外部变量会被"屏蔽",main()函数中调用两次f()函数,第一次调用为f(0),进入else选择支句,t=7,返回7+5=12,此时静态变量a=6;第二次调用为f(1),进入if选择支句,t=6,返回6+6=12,静态变量a=7;在主函数内s用全局变量a来初始化,其值为4,所以计算得s=4+f(0)+f(1)=28,答案选A。
转载请注明原文地址:https://jikaoti.com/ti/uOD0FFFM
0

最新回复(0)