新手求助。。。望指点哈。。
											用指针操作将一个一维数组中的n个整数做以下处理:顺序将前面各数后移m个位置,使最后面的m个数变成最前面的m个数。这个思路应该从哪里入手。。。谢谢
 
										
					
	 
										
					
	 2010-11-22 17:03
	    2010-11-22 17:03
   2010-11-22 20:58
	    2010-11-22 20:58
  
 2010-11-22 22:34
	    2010-11-22 22:34
  
 2010-11-22 22:46
	    2010-11-22 22:46
   2010-11-23 10:28
	    2010-11-23 10:28
   2010-11-23 10:52
	    2010-11-23 10:52
   程序代码:
程序代码:#include<iostream>
using namespace std;
int change(int *p, int n, int m)
{
    int i,temp;
    if (n <=0 || m <= 0  )
        return 0;                  //当数组或者需要交互的数都为0时,结束递归!
    if (n-m > m)                //数组前面的数据个数大于m时,直接进行交互,并改变指针值,进入下次递归;
    {
        for (i =0; i < m; i++)
        {
            temp = p[i];
            p[i] = p[n-m+i];
            p[n-m+i] = temp;
        }
        p = p+m;
        change(p, n-m, m);
    }
    else                                 //当数组前面的数据小于m时,重新考虑数组,把m的值给成n-m,只交换一部分,然后再次进入递归!
    {
        for (i =0; i< n-m; i++)
        {
            temp = p[i];
            p[i] = p[n-m+i];
            p[n-m+i] = temp;
        }
        p = p+n-m;
        change(p, m,2*m-n);
    }
    return 0;
}
int  main()
{
    int m,i;
    int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    cout << "please input m:\n"<< endl;
    cin >> m;
    int *p;
    p = a;
    change(p, 10, m);
    for (i = 0; i< 10; i++)
        cout << a[i] << " " ;   //这里写a[i]和p[i]结果是一样的,就不多说了。。
    return 0;
   
}采用递归,每次把最后m个数组和最前面的m个数互换,然后在对数组后面的n-m个数进行相同的操作; 2010-11-23 11:18
	    2010-11-23 11:18