主题:关于指针的值
梦梦学编程
[专家分:10] 发布于 2011-03-14 12:57:00
题目:有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个回复)
沙发
fragileeye [专家分:1990] 发布于 2011-03-14 13:26:00
先不看你的算法,待会要上课了,*p初始化后p已经移动到最后一个元素的位置了啊、、
所以for对数组初始化后加一句 p = a ;
板凳
hereforc [专家分:210] 发布于 2011-03-14 16:43:00
你这个错误很多啊 应该是先把后面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 楼
梦梦学编程 [专家分:10] 发布于 2011-03-14 22:59:00
我确实把它想复杂了,按你说的方法做了遍;
#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 楼
miketyson986 [专家分:0] 发布于 2011-05-17 18:58:00
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]
我来回复