7-1 数组循环左移 (20分)

本题要求实现一个对数组进行循环左移的简单函数:一个数组_a_中存有_n_(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移_m_(≥0)个位置,即将_a_中的数据由(a​0​​a​1​​⋯an−1​​)变换为(am​​⋯an−1​​a​0​​a​1​​⋯am−1​​)(最前面的_m_个数循环移至最后面的_m_个位置)。如果还需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?

输入格式:

输入第1行给出正整数_n_(≤100)和整数_m_(≥0);第2行给出_n_个整数,其间以空格分隔。

输出格式:

在一行中输出循环左移_m_位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。

输入样例:

1
2
8 3
1 2 3 4 5 6 7 8

输出样例:

1
4 5 6 7 8 1 2 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>

int main()
{
int m,n;
scanf("%d%d",&m,&n );

int list[999];
for (int i = 0; i < m; ++i) {
scanf("%d",&list[i]);
}
for (int j = 0; j < n; ++j) {
int temp = list[0];
for (int i = 1; i <m ; ++i) {
list[i-1]=list[i];
}
list[m-1]=temp;
}

for (int i = 0; i < m-1; ++i) {
printf("%d ",list[i]);
}
printf("%d",list[m-1]);
return 0;
}