有以下程序: voidf(int*x,int * y) { int t; t= *x;*x= *y;*y=t; } main() { inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;

admin2010-12-10  19

问题 有以下程序:    voidf(int*x,int * y)    {    int t;    t=  *x;*x=  *y;*y=t;    }    main()    {    inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;    p=a;q=&a[7];    while(p)    {    f(p,q);p++;q--;}    for(i=0;i<8;i++)printf("%d,",a);    }    程序运行后的输出结果是______;   

选项 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是将两个指针所指的两个单元中的数值对换。指针p指向数组a的第一个元素a[0]而指针q指向数组a的元素a[7]。调用f将p和q所指元素值对换,也就是将a[0]和a[7]的值对换,对换后结果分别是8、1。P++指向a[1],q-指向a[6J,继续循环,调用f将a[1]和a [6]交换,结果变成7、1。以此类推,直到p和q相遇循环站束。数组a的值由{1,2,3,4,5,6,7,8}变成了{8,7,6,5,4,3,2,1}。输出9结果应该是:8, 7,6,5,4,3,2,1。
转载请注明原文地址:https://kaotiyun.com/show/FBPp777K
0

最新回复(0)