回 帖 发 新 帖 刷新版面

主题:关于指针的值

题目:有n个数,使前面若干数顺序向后移动m个位置,最后m个数变成最前面的m个数,写一函数实现。
我用指针做的,void dh(int m,int n,int *q),m代表
前面的数字需移动的位数,n代表需输入数字的个数,我先把前面的m位数复制到这组数的后面,再根据指针输出,为什么结果不对?


#include <stdio.h>
void main()
{ void dh(int m,int n,int *q);
  int a[50];
  int *p=a;
  int b,c,i;
  printf("需输入数字的个数为:\n");
   scanf("%d",&b);
  printf("输入的数字为:\n");
  for(i=0;i<b;i++,p++)
  scanf("%d",p);
  printf("前面的数字需移动的位数是:\n");
  scanf("%d",&c);
  dh(c,b,p);
  for(i=0;i<b;i++,p++)
  printf("%2d",*p);
  printf("\n");
}
void dh(int m,int n,int *q)
{ int t;
  int *r,*s;
  r=q;
  s=q+n;
  for(t=0;t<m;t++)
  {*s=*q;
  s++;
  q++;}
}

回复列表 (共4个回复)

沙发

先不看你的算法,待会要上课了,*p初始化后p已经移动到最后一个元素的位置了啊、、
所以for对数组初始化后加一句 p = a ;

板凳

你这个错误很多啊 应该是先把后面m个数先按顺序输出 然后再把前面的数桉顺序输出就可以了
我按你函数的做法修改了下 其实不用函数可能更简洁#include <stdio.h>
void main()
{ void dh(int,int*,int,int*);
  int a[50];
  int *p=a;
  int b,c,i;
  printf("需输入数字的个数为:\n");
   scanf("%d",&b);
  printf("输入的数字为:\n");
  for(i=0;i<b;i++)
  scanf("%d",&a[i]);
  int *q=&a[b-1];
  printf("前面的数字需移动的位数是:\n");
  scanf("%d",&c);
  dh(c,q,b,p);
  }
void dh(int m,int *r,int n,int *q)
{ int t,i=0;
  int *p;
  p=r-m+1;
  while(i<m)
  {
printf("%d\n",*p);p++;
i++;
  }
for(t=0;t<n-m;t++)
  {
printf("%d\n",*q);
  q++;
  }
}

3 楼


我确实把它想复杂了,按你说的方法做了遍;
#include <stdio.h>
void main()
{ void dh(int m,int n,int*q);
  int a[50];
  int *p=a;
  int b,c,i;
  printf("需输入数字的个数为:\n");
   scanf("%d",&b);
  printf("输入的数字为:\n");
  for(i=0;i<b;i++)
  scanf("%d",&a[i]);
  printf("前面的数字需移动的位数是:\n");
  scanf("%d",&c);
  dh(c,b,p);
  }
void dh(int m,int n,int *q)
{ int i;
  int *r;
  r=q+m-1;
for(i=0;i<m;i++)
  printf("%2d",*r++);
for(i=0;i<n-m;i++)
printf("%2d",*q++);
}

4 楼

not at all.......

[url=http://www.brain-dump.us/FCNSP.html]FCNSP braindumps[/url] \[url=http://www.brain-dump.us/642-384.html]642-384 braindumps[/url] \[url=http://www.brain-dump.us/642-165.html]642-165 braindumps[/url] \[url=http://www.brain-dump.us/000-107.html]000-107 braindumps[/url] \[url=http://www.brain-dump.us/1Y0-A21.html]1Y0-A21 braindumps[/url] \[url=http://www.brain-dump.us/650-195.html]650-195 braindumps[/url] \[url=http://www.brain-dump.us/70-448.html]70-448 braindumps[/url] \[url=http://www.brain-dump.us/642-637.html]642-637 braindumps[/url] \[url=http://www.brain-dump.us/HP0-J40.html]HP0-J40 braindumps[/url] \[url=http://www.brain-dump.us/312-50.html]312-50 braindumps[/url] \[url=http://www.brain-dump.us/70-513.html]70-513 braindumps[/url] \[url=http://www.brain-dump.us/1z0-052.html]1z0-052 braindumps[/url] \[url=http://www.brain-dump.us/70-536.html]70-536 braindumps[/url] \[url=http://www.brain-dump.us/1Y0-A05.html]1Y0-A05 braindumps[/url] \[url=http://www.brain-dump.us/350-029.html]350-029 braindumps[/url]

我来回复

您尚未登录,请登录后再回复。点此登录或注册