选择题

有以下程序:

#include
void fun(int *x,int s, int e)
{
   int i,j,t;
   for(i=s,j=e;i    {
      t=*(x+i);
      *(x+i)=*(x+j);
      *(x+j)=t;
   }
}
main()
{
   int m[]={0,1,2,3,4,5,6,7,8,9},k;
   fun(m,0,3);
   fun(m+4,0,5);
   fun(m,0,9);
   for(k=0;k<10;k++)printf("%d",m[k]);
}

程序的运行结果是(     )。

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

程序的执行过程为: 定义数组 m, 并为其赋初值, 数组长度为 10。 调用函数 fun(m,0,3)将数组首地址传入函数, 函数实现将数组下标值从 0 到 3 的元素首尾倒置, for 循环结束之后数组为 m={3,2,1,0,4,5,6,7,8,9}。调用函数 fun(m+4,0,4)将数组下标值为4 的元素地址传入函数, 函数实现将数组下标值从 4到 9 的元素首尾倒置,for 循环结束之后数组为 m={3,2,1,0,9,8,7,6,5,4}。 调用函数 fun(m,0,9)将数组首地址传入函数, 函数实现将数组下标值从 0 到 9 的元素首尾倒置, for 循环结束之后数组为 m={4,5,6,7,8,9,0,1,2,3}。 依次输出数组元素, 结果为4567890123。 答案选择 A 选项。