请教一个指针问题
给定一组整数,要求利用数组把这组数保存起来,再利用指针实现对数组中的数循环移动。假定共有n个整数,则要使前面各数顺序向后移m个位置,并使最后m各数变为最前面的m各数。输入样例
11 4
15 3 76 67 84 87 13 67 45 34 45
输出样例
67 45 34 45 15 3 76 67 84 87 13
思路是怎么样的?
/* 算法分析: 先将N-m位的数赋给一个中转变量,再将N-m前的各位数后移一位,此时将中转变量赋给第一位,后面以此推进,直到结束。*/ #include <stdio.h> #define N 10 int main () { int a[N], i, j, m, k, b, x, temp; for (i = 0; i < N; ++ i) scanf ("%d",&a[i]); printf ("输入后移位数\n\t"); scanf ("%d",&m); j = N - m; x = j; for (i = 0; i < m; ++ i) { temp = a[j]; for (k = 0, b = j - 1; k < x; ++ k, -- b) a[b + 1] = a[b]; a[i] = temp; ++ j; } for (i = 0; i < N; ++ i) printf("%d\t",a[i]); return 0; }