我想合并两个数组,但是这段代码没有给我想要的输出。有人可以指出错误吗?我自己应用了这段代码,但在逻辑上找不到任何错误。
int main()
int i,n,m;
int size;
printf(" enter the size of 1st array");
scanf(" %d",&n);
int a[n];
for(i=0;i<n;i++)
{
printf(" %d element is ",i);
scanf(" %d",&a[i]);
}
printf(" enter the size of 2nd array");
scanf(" %d",&m);
int b[m];
for(i=0;i<m;i++)
{
printf(" %d element is ",i);
scanf(" %d",&a[i]);
}
printf(" the merged array is");
int k;
int arr[size];
for(i=0;i<n;i++)
{
arr[i]=a[i];
}
size=m+n;
for(i=n,k=0;i<size && k<m;i++,k++)
{
arr[i]=b[k];
}
for(i=0;i<size;i++)
{
printf(" %d",arr[i]);
}
}
最佳答案
您的程序中有几个问题。
读取第二个数组时,应该在数组b
中读取它,但是要在数组a
中读取它:
scanf(" %d",&a[i]);
^
这应该是
scanf(" %d",&b[i]);
另一个问题是在初始化之前使用了变量
size
:int arr[size];
相反,您应该首先使用
size
初始化m+n
,然后使用它:size=m+n;
int arr[size];
另外,您无需在
scanf()
中使用格式说明符%d
留空格:scanf(" %d",&n);
^ this space is not needed
关于c - 合并两个数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51347701/