选择题

有以下程序:

#include
void fun(int a[],int n)
{
   int i,t;
   for(i=0;i    {
      t=a[i];
      a[i]=a[n-1-i];
      a[n-1-i]=t;
   }
}
main()
{
   int k[10]={1,2,3,4,5,6,7,8,9,10},i;
   fun(k,5);
   for(i=2;i<8;i++)printf("%d",k[i]);
   printf("\n");
}

程序运行的结果是(     )。

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

在 main()函数中定义了一个有 10 个元素的数组 k, 并且赋初值为{1,2,3,4,5,6,7,8,9,10}。 执行函数fun(k,5), 把 k 的首地址赋给形参 a, 把 5 赋给形参 n。 在 fun()函数中, for 循环执行了 2 次: 第一次, i 的值为 0,循环体中将 a[0]与 a[4]的值互换; 第二次, i 值为 1, 这次是将 a[1]与 a[3]的值互换。 所以, fun()函数执行完后,数组 k 中的内容为{5,4,3,2,1,6,7,8,9,10}。 接下来, 循环输出 a[2]~a[7]的值, 故输出结果是 321678。 答案选择 D选项。