编写程序,首先将一个包含10个数的数组按照升序排列,然后从一指定位置m开始的n个数按照逆序重新排列,并将新生成的相互组输出。要求使用指针控制方法实现上述功能。
#include <stdio.h>
main()
{
int data[10],m,n,j,*p1,*p2,temp;
printf("input 10 integers\n");
for(j=0;j<10;j++)
scanf("%d",&data[j]);
printf("Input m and n:\n");
scanf("%d%d",&m,&n);
if(m<1||m>10||n<1||n>10||(m+n)>11)
printf("error!");
exit(0);
sort(data,10);
printf("result of sort is:\n");
for(i=0;j<10;j++)
printf("%d",data[j]);
printf("\n");
p1=data+m-1;
p2=data+m+n-2;
for(;p1<data+m-1+n/2;p1++,p2--)
temp=*p1;*p1=*p2;*p2=temp;
printf("Final result is:\n");
for(j=0;j<10;j++)
printf("%d",data[j]);
}
sort(int *p,int n)
{
int i,j,temp;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
if(*(p+i)>*(p+j))
{temp=*(p+i);
*(p+i)=*(p+j);
*(p+j)=temp;
}
}