设有一个数列,包含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 }