[求助]请高手帮忙看看这道题怎么错了
[bo]题目:[/bo]设计一个有序顺序表,要求对两个顺序表中的元素进行排序后输出。有序顺序表和顺序表的主要区别是有序顺序表中的数据元素按数据元素值非递减有序。数据输入:
第一行为要处理的第一个顺序表包含的数据个数m。
第二行为要处理的第一个顺序表,m个正整数之间用空格间隔。
第三行为要处理的第二个顺序表包含的数据个数n。
第四行为要处理的第二个顺序表,n个正整数之间用空格间隔。
数据输出:
输出合并后的有序顺序表,数据之间用空格间隔。
示例:
输入文件input2.txt:
2
1 4
2
3 2
输出:(标准输出)
1 2 3 4
[bo]下面是我做的程序:[/bo]#include<stdio.h>
#include<malloc.h>
void paixu(int *p,int num)//排序函数(冒泡排序)
{
int i,j;
int t;
for(j=0;j<num;j++)
for(i=j;i<num;i++)
if(p[i]>p[i+1])
{
t=p[i];
p[i]=p[i+1];
p[i+1]=t;
}
}
int main()
{
int m,n;
int *p,*q,*r;
int i,j,k;
printf("请输入要处理的第一个顺序表包含的数据个数:");
scanf("%d",&m);
p=(int *)malloc(sizeof(int)*m);
printf("请输入要处理的第一个顺序表:");
for(i=0;i<m;i++) scanf("%d",*(p+i));
paixu(p,m);
printf("请输入要处理的第二个顺序表包含的数据个数:");
scanf("%d",&n);
q=(int *)malloc(sizeof(int)*n);
printf("请输入要处理的第二个顺序表:");
for(i=0;i<m;i++) scanf("%d",q[i]);
paixu(q,n);
r=(int *)malloc(sizeof(int)*(m+n));
for(i=0,j=0,k=0;i<m+n;i++)
{
if(p[j]>q[k])
{
r[i]=q[k];
k++;
if(k=n-1)
{
while(j!=m-1)
{
r[i]=p[j];
i++;
j++;
}
break;
}
}
else
{
r[i]=p[j];
j++;
if(j=m-1)
{
while(k!=n-1)
{
r[i]=q[k];
i++;
k++;
}
break;
}
}
}
}
为什么在我输入了第一个顺序表之后程序运行就结束了,说是遇到错误.请高手帮忙!