设有一个数列,包含10个数,已按升序排好。现要求编写程序,把从指定位置开始的n个数按逆序重新排列并输出新的完整数列。进行逆序处理时要求使用指针方法。试编程。(例如:原数列为2,4,6,8,10,12,14,16,18,20,若要求把从第4个数开始的5个数按逆序重新排列,则得到新数列2,4,6,16,14,12,10,8,18,20)
1 #include<stdio.h>
2 int main()
3 {
4 int i,m,j,n,a[10],b,c;
5 int *p[10];
6 for(i=0;i<10;i++)
7 p[i]=&a[i]; //p[i]不用&,因为它是指针。也是数组,p[i]本身表示地址
8 printf("请按照从小到大的顺序输入10个数");
9 for(i=0;i<10;i++)
10 scanf("%d",a+i);
11 printf("输入m,n");
12 scanf("%d%d",&m,&n);
13 b=m-1;c=m+n-2;
14 for(i=0;i<n;i++,b++,c--)
15 p[b]=&a[c];
16
17
18 for(j=0;j<10;j++)
19 printf("%4d",**(p+j)); //指针数组,数组指针,需要解引两次,解引一次仍是地址
20 putchar('\n');
21
22 }