选择题

有以下程序:
#include
int b=2;
int fun(int *k)
{
   b=*k+b;
   return(b);
}
main()
{
   int a[10]={1,2,3,4,5,6,7,8},i;
   for(i=2;i<4;i++)
   {
      b=fun(&a[i])+b;
      printf("%d",b);
   }
   printf("\n");
}
​​​​​​程序运行后的输出结果是(     )。

【正确答案】 C
【答案解析】

因为 int 是全局变量, 所以它的值在整个程序结束时才会消失。 for 循环第一次 i=2, a[i]=3, 所以fun(&a[i])=3+2=5, 这时 b 为 5, 所以b=fun(&a[i])+b=5+5=10。 第二次循环时, b=10, 然后 fun(&a[i]), 代入 a[i]=4,这时 fun(&a[i])=10+4=14, 所以b=fun(&a[i])+b=14+14=28。 答案选择 C 选项。