帮忙看下这个程序哪里出错了

来源:百度知道 编辑:UC知道 时间:2024/09/28 14:56:47
#include<stdio.h>
#include<stdlib.h>

void Inseart(int *a, int n, int x);

void Sort(int *p,int n);

void main()
{
int *p=NULL,i,j,n,m,x,*a=NULL;
printf("please enter array numbers:");
scanf("%d", &n);
p=(int*)calloc(n*n,sizeof(int));
if(p==NULL)
{
printf("No enough memory!\n");
exit(0);
}
printf("please enter array:\n");
for(i=0;i<n;i++)
{
scanf("%d",p+i);
}
Sort(p,n);
printf("please enter inseart numbers:");
scanf("%d", &m);
a=p+n+1;
j=n;
while(j<n+m)
{
printf("please enter the %d number:",j-n+1);
scanf("%d",a+j);
x=*(a+j);
Inseart(a,n,x);
j++;
}
printf("After inseart %d number:\n",m);
for(i=0;i<n+m;i++)
{
printf(

唉,明明用数组来表示更简明,非要用指针,给自己找麻烦

insert()里最后一步*(a+pos)=*(a+i);
应该是把值插进去的吧,改为*(a+pos)=x

至于main()中的调用:
*a是完全可以不用的.
在读入m值之后,如下修改:
j=0;
while(j<m)
{
printf("please enter the %d number:",j+1);
scanf("%d",&x);
Inseart(p,n,x);
n++;/* n始终是数组中实际存放的个数 */
j++;
}
最后的输出for循环改为
for(i=0;i<n;i++)

我靠 你插入的数字没有内存空间地址 怎么放呢 建议你把源数组改成
a[1024]

晕哦 你整的什么哦 变量没有点意义,看都不好看 从写