问题遇到的现象和发生背景
有n个整数,使前面各数顺序向后移动m个位置,最后m个数变成最前m个数。
用代码块功能插入代码,请勿粘贴截图
#include<stdio.h>
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。
要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。
按任意键关闭此窗口. . .