有以下程序:
#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]);
}
程序的运行结果是( )。
程序的执行过程为: 定义数组 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 选项。