c语言错位排列
时间: 2023-07-03 12:05:18 浏览: 47
如果您想实现一个错位排列,即将一个数组中的元素向右移动 k 个位置,可以使用以下的 C 代码:
```c
#include <stdio.h>
void rotate(int arr[], int n, int k) {
int temp[k];
for (int i = 0; i < k; i++) {
temp[i] = arr[n-k+i];
}
for (int i = n-k-1; i >= 0; i--) {
arr[i+k] = arr[i];
}
for (int i = 0; i < k; i++) {
arr[i] = temp[i];
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
int k = 2;
rotate(arr, n, k);
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
这个代码中的 `rotate` 函数接受一个整数数组 `arr`,数组的长度 `n`,以及需要向右移动的位数 `k`。它首先将最后 `k` 个元素保存到一个临时数组 `temp` 中,然后将原数组中的前 `n-k` 个元素向右移动 `k` 个位置,最后将 `temp` 数组中的元素放到原数组的前 `k` 个位置上。