有以下程序    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++;}     

admin2009-03-17  40

问题 有以下程序    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、24
B、28
C、32
D、36

答案B

解析 本题考查的是变量的作用域问题。程序中定义了多个变量a,全局变量、静态变量和局部变量分别在自己的作用域中参与运算。在main()函数中首先执行“s+=f(0);”语句,而f(0)返回值为12,所以第一次循环结束s的值等于4+12=16;第二次开始时,当执行f(1)时,在f(1)中执行“if(n%2){int a=6; t+=a++;}”和“return t+a++;”这两条语句,所以f (1)的返回值等于12。再在主函数中执行“s+=f (1);”语句,也就是16+12=28。
转载请注明原文地址:https://kaotiyun.com/show/6YXp777K
0

最新回复(0)