题目描述
将一维数组中的元素循环左移 k 个位置
输入描述
第 1 行是一维数组元素的个数 n (数组大小)
第 2 行是一个整数 k , 表示移动的位置
下面 n 行为数组的元素个数
输出描述
输出 n 行,表示移动后的数字
#include<stdio.h>
#define N 10000
int main ()
{
int k,a[N],b[N],n,t,w,i;
scanf("%d",&n);
scanf("%d",&k);
{
for(i=0;i<n;i++)
scanf("%d",&a[i]);
if(i<k)
a[i]=a[i+k];
if(i==k)
a[i]=a[i];
if(i>k)
a[i]=a[i-k];
for(i=0;i<n;i++)
printf("%d\n",a[i]);
}
return 0;
#include<stdio.h>
#define N 10000
int main()
{
int k,a[N],b[N],n,t,w,i;
scanf("%d",&n);
scanf("%d",&k);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for (i = 0; i < k % n; i++)
b[i] = a[i];
for (i = 0; i < n; i++)
{
if (i < n - k % n)
a[i] = a[i + k % n];
else
a[i] = b[i - n + k % n];
}
for(i=0;i<n;i++)
printf("%d\n",a[i]);
return 0;
}
#include<stdio.h>
#define N 10000
int main()
{
int k, a[N], n, i, j, t, x;
scanf("%d", &n);
scanf("%d", &k);
{
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
t = a[0];
for (i = 0, j = k, x = 0; x < n - 1; x++) {
a[i] = a[j];
i = j;
if (j + k < n)
j += k;
else
j = j + k - n;
}
a[i] = t;
for (i = 0; i < n; i++)
printf("%d\n", a[i]);
}
return 0;
}