【问题描述】有一数列,包含n(n<=100) 个数,已按升序排好。现要求编一程序,它能够把从指定位置开始的m个数按逆序重新排列并输出新的完整数列。进行逆序处理时要求使用指针方法(例如:原数列为2,4,6,8,10,12,14,16,18,20,若要求把从第4个数开始的5个数按逆序重新排列,则得到新数列为2,4,6,16,14,12,10,8,18,20。)(要求用指针做)
【输入形式】
数组长度n、数组元素、指定位置p ,m
【输出形式】重新排序后的数组
【样例输入】
10 2 4 6 8 10 12 14 16 18 20 4 5
【样例输出】
2 4 6 16 14 12 10 8 18 20
#include <stdlib.h>
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
int a[n];
int *p = &a[0];
int i = 0;
for(i = 0;i < n;i++)
scanf("%d",&a[i]);
int b;
scanf("%d",&b);
int r;
scanf("%d",&r);
int x = 0;
for(i = b - 1;i < (2*b -3 + r)/2.0;i++)
{
int t;
t = *(p+i);
*(p+i) = *(p+b-2 + r -x);
*(p+b + r-2 -x) = t;
x++;
}
for(i = 0;i < n; i++)
{
printf("%d ",*(p + i));
}
return 0;
}