编写一程序将长度为10的一维数组各个元素向后移动m个位置最后的m个元素变成最前面的m个数。例如原数组为 1 2 3 4 5 6 7 8 9 10 向后移动3个位置为 8 9 10 1 2 3 4 5 6 7。要求:数据处理通过函数实现数据输入输出在主函数中进行。自定义函数为: void shiftint xxint n int m
#include <stdio.h> #define N 10
void shift(int xx[], int n, int m);
int main() { int a[N], m; printf("请输入长度为%d的数组:\n", N); for (int i = 0; i < N; i++) scanf("%d", &a[i]); printf("请输入向后移动的位数:\n"); scanf("%d", &m); shift(a, N, m); printf("移动后的数组为:\n"); for (int i = 0; i < N; i++) printf("%d ", a[i]); return 0; }
void shift(int xx[], int n, int m) { int temp[m]; for (int i = n-m; i < n; i++) temp[i-n+m] = xx[i]; // 保存最后m个数 for (int i = n-m-1; i >= 0; i--) xx[i+m] = xx[i]; // 将前面的数向后移动m个位置 for (int i = 0; i < m; i++) xx[i] = temp[i]; // 将最后m个数移到最前面
原文地址: https://www.cveoy.top/t/topic/g90V 著作权归作者所有。请勿转载和采集!