想用新建一个数组做中间变量,后按顺序输出数组,但运行结果不完全正确
#include
#include
int main()
{
int n,p,i;
//p为移动数目,n为数列个数;
scanf("%d", &p);
scanf("%d", &n);
unsigned int a[n];
for(i = 0;i < n;i++)
{
scanf("%d", &a[i]);
}
int q = p%n;
unsigned int c[q];
for(i = 0;i < p;i++)
{
c[i] = a[i];
a[i] = a[p+i];
}
for(i = 0;i < n-q;i++)
{
printf("%d ",a[i]);
}
for(i = 0;i < q;i++)
{
printf("%d ",c[i]);
}
return 0;
}
int main()
{
int n, p, i;
// p为移动数目,n为数列个数;
scanf("%d", &p);
scanf("%d", &n);
unsigned int a[n];
for (i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
int q = p % n;
unsigned int c[q];
for (i = 0; i < p; i++)
{
c[i] = a[i];
// a[i] = a[p + i]; 这个操作后面执行
}
// 前移a[p]后面的元素
for (i = 0; i < n - p; i++)
{
a[i] = a[i + p];
}
//把p前的放到a末尾
for (i = 0; i < p; i++)
{
a[i + n - p] = c[i];
}
//
for (i = 0; i < n; i++)
{
printf("%d ", a[i]);
}
// printf("\n");
// for (i = 0; i < q; i++)
// {
// printf("%d ", c[i]);
// }
return 0;
}