设有a数组,int a[10]={1,2,3,4,5,6,7,8,9,10}

已按升序排好。现要求编写程序,把从指定位置m(m 由键盘输入)开始的n(n 由键盘输入)个数按逆序重新排列并输出新的完整数列。进行逆序处理时要求使用指针方法。

1、 例如:原数列为:1,2,3,4,5,6,7,8,9,10。若要求把从第4个数开始的5个数按逆序重新排列,则得到新数列为:1,2,3,8,7,6,5,4,9,10)

//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
int main(void){
    int a[]={1,2,3,4,5,6,7,8,9,10},m,n,ln,*p;
    ln=sizeof(a)/sizeof(int);
    while(1){
        printf("Input m & n(m,n>=0 m+n<=%d)...\n",ln);
        scanf("%d%d",&m,&n);
        if(m>=0 && n>=0 && m+n<=ln) break;
        printf("Error, redo: ");
    }
    for(p=a+m-1,n--,m=0;m<n;m++,n--){
        p[m]^=p[n];
        p[n]^=p[m];
        p[m]^=p[n];
    }
    for(m=0;m<ln;printf("%d ",a[m++]));
    printf("\n");
    return 0;
}
温馨提示:答案为网友推荐,仅供参考