c语言写:从键盘输入两个整数k和n(1<k,n<20),再输入n个整数,使其前面各数顺序向右移动k个位置,即最后k个数变成最前面k个数。
时间: 2023-06-19 19:09:44 浏览: 120
有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数.
```c
#include <stdio.h>
int main() {
int k, n;
printf("请输入k和n(1<k,n<20):");
scanf("%d %d", &k, &n);
int arr[n];
printf("请输入%d个整数:", n);
for(int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// 将前 n-k 个元素逆序
for(int i = 0, j = n-k-1; i < j; i++, j--) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
// 将后 k 个元素逆序
for(int i = n-k, j = n-1; i < j; i++, j--) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
// 将整个数组逆序
for(int i = 0, j = n-1; i < j; i++, j--) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
printf("移动后的数组为:\n");
for(int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
这里的思路是先将前 n-k 个元素逆序,再将后 k 个元素逆序,最后将整个数组逆序即可得到结果。
阅读全文