!逆序存放数组元素值
求助!逆序存放数组元素值
现在想用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编写函数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来做交换的中间变量就行了。