单选题
有以下程序:
#include <stdio.h>
void fun(int *x,int s,int e)
{ int i,j,t;
for(i=s,j=e; i<j; i++,j--)
{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选项正确。