数组的n位移动
题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
1 #include <stdio.h>
2
3 void move(int array[],int n,int m);
4
5 int main()
6 {
7 int number[20],n,m,i;
8
9 //输入整数个数,以及移动个数
10 printf("the total numbers is:");
11 scanf("%d",&n);
12 printf("back m:");
13 scanf("%d",&m);
14
15 //输入操作数据
16 for(i=0; i<n; i++)
17 scanf("%d,",&number[i]);
18 //scanf("%d",&number[n-1]);
19
20 //移动
21 move(number,n,m);
22 printf("结果是:");
23
24 //输出结果
25 for(i=0; i<n; i++)
26 printf("%d,",number[i]);
27 //printf("%d",number[n-1]);
28
29 return 0;
30 }
31
32 //函数定义
33 void move(int array[],int n,int m)
34 {
35 int *p,array_end;
36
37 //先保存最后一个值
38 array_end=*(array+n-1);
39
40 //开始移动
41 for(p=array+n-1; p>array; p--)
42 *p=*(p-1);
43
44 //从数组最后移出的元素写入第一个位置。
45 array[0]=array_end;
46 m--;
47
48 if(m>0) move(array,n,m);
2
3 void move(int array[],int n,int m);
4
5 int main()
6 {
7 int number[20],n,m,i;
8
9 //输入整数个数,以及移动个数
10 printf("the total numbers is:");
11 scanf("%d",&n);
12 printf("back m:");
13 scanf("%d",&m);
14
15 //输入操作数据
16 for(i=0; i<n; i++)
17 scanf("%d,",&number[i]);
18 //scanf("%d",&number[n-1]);
19
20 //移动
21 move(number,n,m);
22 printf("结果是:");
23
24 //输出结果
25 for(i=0; i<n; i++)
26 printf("%d,",number[i]);
27 //printf("%d",number[n-1]);
28
29 return 0;
30 }
31
32 //函数定义
33 void move(int array[],int n,int m)
34 {
35 int *p,array_end;
36
37 //先保存最后一个值
38 array_end=*(array+n-1);
39
40 //开始移动
41 for(p=array+n-1; p>array; p--)
42 *p=*(p-1);
43
44 //从数组最后移出的元素写入第一个位置。
45 array[0]=array_end;
46 m--;
47
48 if(m>0) move(array,n,m);
49 }