数组的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);

49 } 

posted @ 2012-05-02 16:09  zhengmian  阅读(1472)  评论(0编辑  收藏  举报