大家可以看看哪出错了捏

问题遇到的现象和发生背景

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

用代码块功能插入代码,请勿粘贴截图
#include
void move(int a[], int m, int n)
{
    int* p, b[100], * p1;
    int i;
    for (p = &a[n - m], p1 = b, i = 0; i < m; i++, p++, p1++)
        *p1 = *p;//将输入数组a后面的m个数放入b数组中
    for (i = n - m - 1, p = &a[n - m - 1]; i >= 0; i--, p--)
        a[i + m] = *p;//将a数组前面的n-m个数往后移动m个数
    for (i = 0, p1 = b, p = a; i < m; i++, p1++, p++)
        *p = *p1;//将b数组中存放的m个数放到a数组的前m个元素中

    
}
int main()
{
    int a[100], n, m, i;
    printf("要输入多少个数?\n");
    scanf_s("%d", &n);
    printf("要往后移多少个数?\n");
    scanf_s("%d", &m);
    printf("请输入你要输入的数:\n");
    for (i = 0;i < n;i++)
        scanf_s("%d", &a[i]);
    
    move(a, m, n);
    printf("现在他们是:\n");
    for (i = 0;i < n;i++);
    printf("%d", a[i]);
    return 0;


}

    

运行结果及报错内容

要输入多少个数?
4
要往后移多少个数?
2
请输入你要输入的数:
1 2 3 4
现在他们是:
-858993460
D:\实验四\8.4\x64\Debug\8.4.exe (进程 39628)已退出,代码为 0。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .

第28行里,最后输出的循环 for (i = 0;i < n;i++); 最后多了 ’;' 分号。
另第26行里,调用函数 move(a, m, n); 里,中间参数 m 改为: move(a, m % n, n); 更合理些,防止 m 大于 n 时,数组操作越界。