有n个整数,编程序将前面的各个数依次向后移动k个位置,最后k个数移到最前边的k个位置(思考: 程序中不许引入其它数组并且单层循环)
#include <stdio.h>
#define SIZE 12
int main()
{
int array[SIZE] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
int n, k;
scanf("%d", &n);
int i = n, j = n, temp = array[0];
for(k = 0; k < SIZE; k++)
{
temp ^= array[j];
array[j] ^= temp;
temp ^= array[j];
j = (j + n) % SIZE;
if(j == i)
{
j++; i++;
temp = array[(j + SIZE - n) % SIZE];
}
}
for(i = 0; i < SIZE; i++)
printf("%d ", array[i]);
return 0;
}