我这个c++程序在输入的数字多的时候就弹出程序已停止工作的一个窗口,请问是不是在内存分配上出现问题了
//把两个数组中的数以从小到大的的顺序放在第三个数组中#include<stdlib.h>#include<iostream>usingnamespacestd;int*...
//把两个数组中的数以从小到大的的顺序放在第三个数组中
#include<stdlib.h>
#include<iostream>
using namespace std;
int *initialise(char x,int m)
{
int i,*asd;
asd=new int[m]; //用动态分配内存方式为数组a开辟空间
cout<<"请输入数组"<<x<<"中的数字:";
for(i=0;i<m;i++)
cin>>asd[i];
return asd;
}
int *safe(int m,int n,int *a,int *b)
{
int k,*add;
add=new int(m+n);
for(k=0;k<m+n;k++) //将数组a与数组b中的数字存放在数组c中
{
if(k<m)
{
add[k]=a[k];
}
else
{
add[k]=b[k-m];
}
}
return add;
}
void sort(int m,int n,int *c)
{
int i,k,t=0;
for(i=0;i<m+n-1;i++)
{
for(k=i+1;k<m+n;k++)
{
if(c[i]>c[k])
{
t=c[k];
c[k]=c[i];
c[i]=t;
}
}
}
}
int main()
{
int *a,*b,*c;
int m,n,i;
char x='a';
cout<<"请输入数组a中的个数:";
cin>>m;
a=initialise(x,m);
cout<<"请输入数组b中的个数:";
cin>>n;
x='b';
b=initialise(x,n);
c=safe(m,n,a,b);
sort(m,n,c);
cout<<"数组c:";
for(i=0;i<m+n;i++)
cout<<c[i]<<" ";
cout<<endl;
return 0;
} 展开
#include<stdlib.h>
#include<iostream>
using namespace std;
int *initialise(char x,int m)
{
int i,*asd;
asd=new int[m]; //用动态分配内存方式为数组a开辟空间
cout<<"请输入数组"<<x<<"中的数字:";
for(i=0;i<m;i++)
cin>>asd[i];
return asd;
}
int *safe(int m,int n,int *a,int *b)
{
int k,*add;
add=new int(m+n);
for(k=0;k<m+n;k++) //将数组a与数组b中的数字存放在数组c中
{
if(k<m)
{
add[k]=a[k];
}
else
{
add[k]=b[k-m];
}
}
return add;
}
void sort(int m,int n,int *c)
{
int i,k,t=0;
for(i=0;i<m+n-1;i++)
{
for(k=i+1;k<m+n;k++)
{
if(c[i]>c[k])
{
t=c[k];
c[k]=c[i];
c[i]=t;
}
}
}
}
int main()
{
int *a,*b,*c;
int m,n,i;
char x='a';
cout<<"请输入数组a中的个数:";
cin>>m;
a=initialise(x,m);
cout<<"请输入数组b中的个数:";
cin>>n;
x='b';
b=initialise(x,n);
c=safe(m,n,a,b);
sort(m,n,c);
cout<<"数组c:";
for(i=0;i<m+n;i++)
cout<<c[i]<<" ";
cout<<endl;
return 0;
} 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询