当前位置: 代码迷 >> C语言 >> 谢谢,帮忙看下
  详细解决方案

谢谢,帮忙看下

热度:323   发布时间:2005-09-15 13:47:00.0
谢谢,帮忙看下
#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就是指针指向指针吗?为什么还要加*呢?这个地方还是不解啊
----------------解决方案--------------------------------------------------------
  相关解决方案