有以下程序 #include <stdio.h> int f(int n) { int t = 0, a=5; if (n/2) {int a=6; t += a++; } el

admin2020-11-27  44

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

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

答案B

解析 在主函数main()中定义了两个变量s和i,同时给s和i赋初值0。当i=0时。执行"s+=f(i);"语句,调用f()并将i的初值 0传递给形参n。首先执行if语句中内条件:n/2,条件为假。则执行else下的语句,a=7,t=7+0=7,使用return返回t,t=7+(a++)=7+5=12,此时a运算完后自增1,变为6;返回主函数中,s=0+12=12。当i=1时,执行"s+=f(i);"语句,调用f()并将i的初值1传递给形参n。首先执行if语句中的条件:n/2,条件为真,执行if下面的语句,t=0,a=6 t=0+6=6,使用return返回t,t=6+6=12,返回主函数中,s=12+12=24。最后输出的结果为24。因此B选项正确。
转载请注明原文地址:https://kaotiyun.com/show/1e3p777K
0

最新回复(0)