谢谢,帮忙看下
#include<stdio.h>void shunxu(int *p1,int n)
{
int temp,*a,*b,i;
for(i=0;i<n/2;i++)
{
a=p1+i;
b=p1+n-i;
temp=*a;
a=b;
*b=temp;
}
return;
}
void main()
{
int a[10],*p2,i,j;
p2=a;
for(i=0;i<10;i++,p2++)
{
scanf("%d",&a[i]);
}
p2=a;
shunxu(p2,10);
for(j=0;j<10;j++,p2++)
printf("%d",*p2);
}
这个程序本意是想实现输入10个数字,然后按照反方向输出,可是输出结果有问题,帮忙看下,谢谢
----------------解决方案--------------------------------------------------------
a=p1+i;
b=p1+n-i-1;
temp=*a;
*a=*b;
*b=temp;
----------------解决方案--------------------------------------------------------
没那么复杂吧?
#include<stdio.h>#define Q 200
void main()
{
int a[Q],*p2,i;
for(i=0;i<Q;i++)
scanf("%d",&a[i]);
for(i=0;i<Q;i++)
{p2=a[Q-1-i];
printf("%d ",p2);}
getch();
}
----------------解决方案--------------------------------------------------------
可是运行结果还只是颠倒了前5位数字,可能哪里还有问题吧
----------------解决方案--------------------------------------------------------
不知道你为什么运行不成功,我这里调试正确
----------------解决方案--------------------------------------------------------
???你输入10个数字,然后他们就按照反方向输出了?
能把程序贴出来吗?我拷过来试下
----------------解决方案--------------------------------------------------------
#include<stdio.h>
void shunxu(int *p1,int n)
{
int temp,*a,*b,i;
for(i=0;i<n/2;i++)
{
a=p1+i;
b=p1+n-i-1;
temp=*a;
*a=*b;
*b=temp;
}
return;
}
void main()
{
int a[10],*p2,i,j;
p2=a;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
shunxu(p2,10);
for(j=0;j<10;j++,p2++)
printf("%d",*p2);
}
----------------解决方案--------------------------------------------------------
原来是我那里的a=b错了,应该是*a=*b,可是不是说a=b就是指针指向指针吗?为什么还要加*呢?这个地方还是不解啊
----------------解决方案--------------------------------------------------------