void inv(int *x, int n) { int temp,*p,*i,*j,m=(n-1)/2; i=x; j=x+n-1; p=x+m; for(;i<=p;i++,j--)

void inv(int *x, int n)
{ int temp,*p,*i,*j,m=(n-1)/2;
i=x; j=x+n-1; p=x+m; 从这一行开始看不懂了...
for(;i<=p;i++,j--)
{ temp=*i; *i=*j; *j=temp; }
return;
}
这些
前面代码是
#include <stdio.h>
void main()
{void inv(int *x, int n);
int i,a[10]={3,7,9,11,0,6,7,5,4,2};
printf("The original array:\n");
for(i=0;i<10;i++) printf("%d,"a[i]);
printf("\n");
inv(a,10);
printf("The array has been inverted:\n");
for(i=0;i<10;i++) printf("%d,",a[i]);
printf("\n");
}

inv是将数组x中下标0到n-1的数据逆置。
void inv(int *x, int n)
{ int temp,*p,*i,*j,m=(n-1)/2; //m为数组中点
i=x; j=x+n-1; p=x+m; //i为数组首部,j为尾部,p为中点
for(;i<=p;i++,j--) //遍历前半部分
{ temp=*i; *i=*j; *j=temp; } //将前半部分数据依次和后半部分对应的数据对换位置
return;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-22
void inv(int *x, int n)------------参数一:数组名,即是数组的首地址,参数二:数组长度
{ int temp,*p,*i,*j,m=(n-1)/2;
i=x; j=x+n-1; p=x+m; ----i保存数组第一个(指针),j保存数组最后一个(指针),p保存中间指针
for(;i<=p;i++,j--) -------数组头和数组中间的数值互相靠拢
{ temp=*i; *i=*j; *j=temp; }---------然后互相交换
return;
}

最终的结果就是,数组的前面一半互相交换了,而后面一半则保持不变本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网