有 n 个随机整数,使其前面各数顺序向后移 m 个位置,最后m个数变成最前面的 m 个数。用c语言写一个代码,并给出代码解释。
时间: 2024-06-14 16:05:03 浏览: 89
有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数.
以下是一个用C语言编写的代码,用于将n个随机整数向后移动m个位置,并将最后m个数变为最前面的m个数:
```c
#include <stdio.h>
void rotateArray(int arr[], int n, int m) {
int temp[m];
// 将最后m个数存储在临时数组中
for (int i = 0; i < m; i++) {
temp[i] = arr[n - m + i];
}
// 将前面n-m个数向后移动m个位置
for (int i = n - 1; i >= m; i--) {
arr[i] = arr[i - m];
}
// 将临时数组中的数放回到数组的最前面m个位置
for (int i = 0; i < m; i++) {
arr[i] = temp[i];
}
}
int main() {
int n, m;
printf("请输入随机整数的个数n:");
scanf("%d", &n);
printf("请输入向后移动的位置m:");
scanf("%d", &m);
int arr[n];
printf("请输入%d个随机整数:", n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
rotateArray(arr, n, m);
printf("移动后的数组:");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
代码解释:
1. 首先,我们定义了一个函数`rotateArray`,该函数接受一个整数数组`arr`、数组的长度`n`和向后移动的位置`m`作为参数。
2. 在函数中,我们创建了一个临时数组`temp`,用于存储最后m个数。
3. 然后,我们使用一个循环将最后m个数存储在临时数组中。
4. 接下来,我们使用另一个循环将前面n-m个数向后移动m个位置。
5. 最后,我们使用第三个循环将临时数组中的数放回到数组的最前面m个位置。
6. 在`main`函数中,我们首先获取用户输入的随机整数的个数n和向后移动的位置m。
7. 然后,我们创建一个大小为n的整数数组,并使用一个循环获取用户输入的随机整数。
8. 接下来,我们调用`rotateArray`函数,将数组中的数向后移动m个位置。
9. 最后,我们使用一个循环打印移动后的数组。
阅读全文