用c语言编写一个程序,要求输入几个整数,使前面各数顺序向后移 m 个位置,最后 m 个数变成最前面m 个数,要使用指针功能。
时间: 2024-02-05 19:11:24 浏览: 74
有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数.
以下是使用指针实现的C语言程序:
```c
#include <stdio.h>
#define MAX 100
void shift(int *arr, int n, int m);
int main() {
int arr[MAX];
int n, m;
printf("请输入整数的个数:");
scanf("%d", &n);
printf("请输入%d个整数:", n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
printf("请输入向后移动的位数:");
scanf("%d", &m);
shift(arr, n, m);
printf("移动后的数组:");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
void shift(int *arr, int n, int m) {
int temp[MAX];
for (int i = 0; i < m; i++) {
temp[i] = arr[n-m+i];
}
for (int i = 0; i < n-m; i++) {
temp[m+i] = arr[i];
}
for (int i = 0; i < n; i++) {
arr[i] = temp[i];
}
}
```
首先通过`scanf`函数输入整数的个数,然后输入整数数组,接着输入向后移动的位数。
`shift`函数用于实现移动操作,首先定义一个临时数组`temp`,将后面的m个数存入`temp`数组,再将前面的n-m个数存入`temp`数组,最后将`temp`数组中的数复制回原数组中。最后输出移动后的数组即可。
阅读全文