有以下程序:
#include <stdio.h>
void f(int * x,int * y)
int t;
t= *x; *x= *y; *y=t;
main ( )
int a[8] = 1,2,3,4,5,6,7,8 ,i, * p, * q;
p=a;q =&a[7];
while(p<q) f(p,q) ;p ++ ;q --;
for(i =0;i<8;i ++ ) printf(" % d," ,a[i]);
程序运行后的输出结果是( )。
A.8,2,3,4.,5,6,7,1,
B.5,6,7,8,1,2,3,4,
C.1,2,3,4,5,6,7,8,
D.8,7,6,5,4,3,2,1,
参考答案:D
解析: 程序中函数f的作用是交换指针变量x和y所指向的存储单元的值。在main函数中,通过P=a;q=&a[7];指针变量p指向数组的第一个元素,指针变量q指向数组的最后一个元素。通过调用函数f(p,q)进行前后对称位置上的数组元素的交换。当while循环4次(即p =q)后,a数组中各元素的值分别为8,7,6,5,4,3,2,1,所以程序输出的结果为:
8,7,6,5,4,3,2,1,