c语言有n个整数,使前面各数顺序向后移m个位置,最后m个数变成前面m个数,见图。写一函数:实现以上功能,在主函数中输入n个数和输出调整后的n个数。
时间: 2024-11-23 20:40:42 浏览: 0
在C语言中,可以使用数组和循环来实现这个功能。首先,你需要定义一个函数,比如`shiftArray()`,它接受两个参数:一个整数数组`arr`和整数`m`,表示移动的数量。你可以通过创建一个新的临时数组来保存移动元素的位置,然后将原数组的前半部分复制到新数组,接着将原数组的后半部分移到新数组的开始。
下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 函数声明
void shiftArray(int arr[], int n, int m);
int main() {
int n, m;
printf("请输入数字的个数(n)和需要移动的位置(m): ");
scanf("%d %d", &n, &m);
// 确保m不大于n的一半,因为移动后两部分会交换
if (m > n / 2) {
m = n - m; // 如果m大于一半,相当于反方向移动
}
// 初始化一个大小为n的整数数组并读取输入
int* inputArr = malloc(n * sizeof(int));
for (int i = 0; i < n; ++i) {
scanf("%d", &inputArr[i]);
}
// 调用函数处理数组
shiftArray(inputArr, n, m);
// 输出调整后的数组
printf("调整后的数组:\n");
for (int i = 0; i < n; ++i) {
printf("%d ", inputArr[i]);
}
printf("\n");
// 释放内存
free(inputArr);
return 0;
}
// 实现数组移动
void shiftArray(int arr[], int n, int m) {
int temp[n]; // 创建临时数组
for (int i = 0; i < m; i++) { // 移动第一个m个元素到临时数组
temp[i] = arr[i];
}
for (int i = m; i < n; i++, m++) { // 将剩余元素复制到临时数组的前面
temp[m] = arr[i];
}
for (int i = 0; i < n; i++) { // 更新原始数组
arr[i] = temp[i];
}
}
```
运行此程序后,按照提示输入数字个数和移动位置,就可以看到数组按要求进行了调整。
阅读全文