数组移位

来源:互联网 发布:美国经济数据公布时间表 编辑:程序博客网 时间:2024/05/22 00:28
//本程序需要完成的是对数组的有序移位#include <iostream>#define X 100using namespace std;int a[X], n, k, m;/*定义数组a,数组长度n,移位量k,最大公约数m*//*定义求最大公约数的函数*/int gongyue(int nn, int kk){int min, ii, yue;min = nn<kk ? nn : kk;if (nn%min == 0 && kk%min == 0) yue = min;else for (ii = 1; ii <= min; ii++)if (nn%ii == 0 && kk%ii == 0) yue = ii;return yue;}void move(){int ii, j, pi, temp;for (ii = 0; ii<m; ii++){pi = n - 1 - ii;temp = a[pi];for (j = 1; j<(n / m); j++){a[pi] = a[(pi + n - k) % n];pi = (pi + n - k) % n;}a[pi] = temp;}}int main(){int i;printf("Please input the length of an array (<100):");cin >> n;printf("Please input the digit that you want to move:");cin >> k;printf("\nPlease input the array:");for (i = 0; i < n; i++)cin >> a[i];if (k>n) k = k - n;m = gongyue(n, k);move();for (i = 0; i<n; i++)printf("%d ", a[i]);return 0;}
                                             
0 0