有n个整数,使前面各数顺序向后移m

如题所述

有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数。

子函数里面最后一个循环有点错误,1,for(i = n;i < n+m ; i ++)。
2,你的p的指向和i同时变化,导致你每次移动两个单位。


正确的程序如下:

#include <stdio.h>。
#include <string.h>。
#include <stdlib.h>。

void main()。
{ void move(int *p,int n,int m)。int a[30]。
int *p=a。
int m,n。
printf("input the n:\n")。
scanf("%d",&n)。
printf("input the num:\n")。
for(p=a;p<a+n;)。
scanf("%d",p++)。
printf("input the m:\n")。
scanf("%d",&m)。
p=a。
move(p,n,m)。
for(p=a;p<a+n;)。
printf("%d",*p++)。

}

void move(int *p,int n,int m)。
{ int i。
for(i=n-1;i>=0;i--) //这个循环是依次往后移动m个位置。
{
*(p+i+m)=*(p+i)。
}

for(i=n;i<n+m;i++) //这个循环是把后面m个数移到最开始。
{

*p++=*(p+n)。

}

}

温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜