数组编程题求解,需要指针
题目:数组a:"1,7,9,11,13,15,17,19"; 数组b:"2,4,6,8,10"两个数组合并为数组c,按升序排列。
想不出来循环怎末写

程序代码:/************************************************************************
数组编程题求解,需要指针
题目:数组a:"1,7,9,11,13,15,17,19"; 数组b:"2,4,6,8,10"
两个数组合并为数组c,按升序排列。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
根据题意,写出下面的小程序,如有错误,欢迎指出。谢谢。
************************************************************************/
#include<stdio.h>
#include<string.h>
void px(int *p,int i,int j)/*设定px函数形参为指向数组c的指针p,待排序数组的前端下标,后端下标*/
{
int I,J,V,t;
I=i; /*为I、J赋值为数组前、后端下标值*/
J=j;
V=*(p+(i+j)/2); /* V值为数组中间数据的值,作为参照值*/
while(1)
{
while(i<J&&*(p+i)<V) /*如果数组下标到达后端,或者数据大于参照值,跳出循环*/
++i; /*此时的i值即为交换数据的下标*/
while(j>I&&*(p+j)>V) /*同上,不过是后端数据有小于参照值的,跳出循环*/
--j;
if(i>j)
break; /*如果i值大于j值,说明已经是排好序,跳出循环*/
if(i<j) /*如果i值小于j值,就进行交换*/
{
t=*(p+i);
*(p+i)=*(p+j);
*(p+j)=t;
}
++i;
--j;
}
if(i<J) /*如果前端下标未移动到后端,说明还未完成排序,返回px函数继续排序*/
px(p,i,J);
if(j>I) /*同上*/
px(p,I,j);
}
int main(void)
{
int a[]={1,7,9,11,13,15,17,19};
int b[]={2,4,6,8,10};
int c[13];
int i,j;
for(i=0;i<8;++i)
c[i]=a[i];
for(j=0;j<5;++j)
c[j+i]=b[j];
printf("组合后的数组:\n");
for(i=0;i<13;++i)
printf(" %d",c[i]);
puts(" ");
px(c,0,12);
printf("排序后的数组:\n");
for(i=0;i<13;++i)
printf(" %d",c[i]);
puts("");
getch();
}