选择题   有以下程序:
    #include <stdio.h>
    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) ;
    }
    程序运行后的输出结果是______。
 
【正确答案】 D
【答案解析】在主函数main( )中定义了两个变量s和i,同时给s赋初值。a=4,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=4+12=16。当i=1时,执行“s+=f(i);”语句,调用f()并将i的初值传递给形参n。首先执行if语句中的条件:n%2,条件为真,执行if下面的语句,t=0,a=6 t=0+6=6,使用return返回t,t=6+6=12,返回主函数中,s=16+12=28。最后输出的结果为28。因此D选项正确。