题目:有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 }