我是个学生,求大神指教!!!

题目是:有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数,写一个函数实现以上功能
#include
int input(int *p)
{
int i=0;
do
{
scanf("%d",p+i);
i++;

}
while(*(p+i-1)!=-1);
return i-1;

}
int* mv(int n,int m,int p)
{

int i,b[100],*c=NULL;
for(i=0;i<m;i++)
{
b[i]=
(p+m-1);
}
for(i=0;i<n-m;i++)
{
b[m-1+i]=*(p+i);
}
c=b;
return c;
}
void output(int p,int n)
{
int i;
for(i=0;i<n;i++)
{
printf("%d",
(p+i));
}
}
int main()
{
int a[100],n,m,*o=NULL;
n=input(a);
printf("请输入m(把数据最后的m个数按顺序移动到最前):\n");
scanf("%d",m);
o=mv(n,m,a);
output(o,n);
return 0;
}

问题如下:
1.有很多地方少了星号(*),不知道是不是复制粘贴的原因
2.mv函数里两个for循环都有问题
3.你不能把一个局部数组b给返回main函数,需要malloc或者new才行

 #include<iostream>
#include<vector>
using namespace std;
int input(int *p)
{
    int i=0;
    do
    {
        scanf("%d",p+i);
        i++;
    }
    while(*(p+i-1)!=-1);
    return i-1;
}
int* mv(int n,int m,int *p)
{
    int *b = (int *)malloc(sizeof(int) * n);
    int i;
    for(i=0;i<m;i++)
    {
        b[i]=*(p+n-m+i);
    }
    for(i=0;i<n-m;i++)
    {
        b[m+i]=*(p+i);
    }
    return b;
}
void output(int *p,int n)
{
    int i;
    for(i=0;i<n;i++)
    {
        printf("%d ",*(p+i));
    }
}
int main()
{
    int a[100],n,m,*o=NULL;
    n=input(a);
    printf("请输入m(把数据最后的m个数按顺序移动到最前):\n");
    scanf("%d",&m);
    o=mv(n,m,a);
    output(o,n);
    free(o);
    return 0;
}

图片说明

假设你输入了1 2 3 4 5 6 7 8 9, 9个数, 你想移动后4个数到前面, 那么:
1. 先旋转后面4个数, 结果是 1 2 3 4 5 9 8 7 6
2. 在旋转前面5个数, 结果是 5 4 3 2 1 9 8 7 6
3. 最后将整个数组旋转, 结果是 6 7 8 9 1 2 3 4 5

用个环形队列就好了吧

首先, 你的说的移动是怎样的移动
比如:
第一种: 1 2 3 4 5 6 移动四位后变成 3 4 5 6 1 2
第二种: 1 2 3 4 5 6 移动四位后变成 6 5 4 3 1 2
根据这两种不同的移动, 我做了不同的操作 , 希望可以帮到你, 具体代码如下(可在VS运行):
![![图片说明](https://img-ask.csdn.net/upload/201605/10/1462885476_697778.png)图片说明](https://img-ask.csdn.net/upload/201605/10/1462885466_368509.png)图片说明

第一种操作演示及结果:
![图片说明](https://img-ask.csdn.net/upload/201605/10/1462885541_941344.png)图片说明

第二种操作演示及结果:
![图片说明](https://img-ask.csdn.net/upload/201605/10/1462885572_848994.png)图片说明

代码中有详细的注释,还有你的代码错误的地方之前几位都已经给出,你自行研究吧。

![图片说明
![图片说明

第一次用这个平台,有点不太懂弄,现在我再把全部代码放上去。刚才图片怎么就没有全部上传呢? 哈哈哈……