C语言编程问题,求高手指教。我错在哪里
/*编写一个函数,要求这个函数能够在一个有序的数组中间插入用户从键盘键入的一个新的数,要求插入后的数组任然有序,并编写主程序完成对该函数的调用,要求该程序能实现任意个数的...
/*编写一个函数,要求这个函数能够在一个有序的数组中间插入用户从键盘键入的一个新的数,要求插入后的数组任然有序,
并编写主程序完成对该函数的调用,要求该程序能实现任意个数的插入,任意个由用户通过键盘输入数字确定,每次插入一个数。*/
#include <stdio.h>
#include <stdlib.h>
void paixu(int*p,int num); //函数声明
void main()
{
int *p=NULL,n,m,k,s,i;
printf("请输入数组元素的个数:");
scanf("%d",&n);
p=(int*)malloc(n*sizeof(int)); /*向内存申请数组的内存空间*/
if(p==NULL)
{
printf("没有足够的内存空间");
exit(0);
}
printf("请输入数组元素的初始值:"); /*输入元素的初始值*/
for(i=0;i<n;i++)
scanf("%d",p+i);
paixu(p,n);
printf("你输入的数组经过排序后为:");
for(i=0;i<n;i++)
printf("%d ",p[i]);
printf("请输入你要插入的数据个数:");
scanf("%d",&m);
p=(int*)malloc((m+n)*sizeof(int)); /*向内存申请数组的内存空间*/
if(p==NULL)
{
printf("没有足够的内存空间");
exit(0);
}
for(k=0;k<m;k++)
scanf("%d",p[n+k]);
paixu(p,m+n);
printf("插入这几个数后排序后为:");
for(s=0;s<n+m;s++)
printf("%d ",p[s]);
}
void paixu(int *p,int num) //定义排序函数
{
int i,j,t;
for(i=0;i<num;i++)
{
for(j=0;j<num-i-1;j++)
if(p[j]>p[j+1])
{
t=p[j];
p[j]=p[j+1];
p[j+1]=t;
}
}
} 展开
并编写主程序完成对该函数的调用,要求该程序能实现任意个数的插入,任意个由用户通过键盘输入数字确定,每次插入一个数。*/
#include <stdio.h>
#include <stdlib.h>
void paixu(int*p,int num); //函数声明
void main()
{
int *p=NULL,n,m,k,s,i;
printf("请输入数组元素的个数:");
scanf("%d",&n);
p=(int*)malloc(n*sizeof(int)); /*向内存申请数组的内存空间*/
if(p==NULL)
{
printf("没有足够的内存空间");
exit(0);
}
printf("请输入数组元素的初始值:"); /*输入元素的初始值*/
for(i=0;i<n;i++)
scanf("%d",p+i);
paixu(p,n);
printf("你输入的数组经过排序后为:");
for(i=0;i<n;i++)
printf("%d ",p[i]);
printf("请输入你要插入的数据个数:");
scanf("%d",&m);
p=(int*)malloc((m+n)*sizeof(int)); /*向内存申请数组的内存空间*/
if(p==NULL)
{
printf("没有足够的内存空间");
exit(0);
}
for(k=0;k<m;k++)
scanf("%d",p[n+k]);
paixu(p,m+n);
printf("插入这几个数后排序后为:");
for(s=0;s<n+m;s++)
printf("%d ",p[s]);
}
void paixu(int *p,int num) //定义排序函数
{
int i,j,t;
for(i=0;i<num;i++)
{
for(j=0;j<num-i-1;j++)
if(p[j]>p[j+1])
{
t=p[j];
p[j]=p[j+1];
p[j+1]=t;
}
}
} 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询