读书人

!逆序存放数组元素值

发布时间: 2013-10-13 14:03:53 作者: rapoo

求助!逆序存放数组元素值
现在想用c编写函数inverte实现 逆序存放数组元素值,就是 输入 1 2 3 4 5 6,输出 6 5 4 3 2 1
我写完之后,验证发现结果却是:
please input 6 number:1 2 3 4 5 6

Before inverte,the array is:
123456
After inverte,the array is:
354326

求教各位大神,到底是哪错了呢。。。????跪谢啊。。。。!逆序存放数组元素值

附code:
#include <stdio.h>
int inverte(int n,int *p)
{
int *temp;
int m;
m=n/2;
temp=p;
for (int i=0;i<m;i++)

{

*temp=*(p+i);

*(p+i)=*(p+n-i-1);
*(p+n-i-1)=*temp;
}
return 0;

}
///////////////测试/////////////
int main(void)

{ int n=6;
int a[n];
int *p;
p=a;
printf("please input 6 number:");

for(int i=0;i<n;i++ )
{ scanf("%d",&a[i]);

}

printf("\nBefore inverte,the array is:\n");

for(int i=0;i<n;i++ )
{
printf("%d",*(p+i));
}

inverte(6, p);

printf("\nAfter inverte,the array is:\n");

for(int i=0;i<6;i++ )
{
printf("%d",*(p+i));
}
return 0;
}

[解决办法]
你这个... 没看懂,但是你可以考虑用两个指针 一个指向数组头,一个指向数组尾,然后同时向中间移动,一直两个指针相等。
[解决办法]
问题出在temp=p,并且你一直用*temp来做中间变量。问题是temp永远指向首地址,你想想看。你可以用一个int temp来做交换的中间变量就行了。

读书人网 >C++

热点推荐