合并两个数组,不用排序,这个代码为什么没有输出?

#include<stdio.h>
int main()
 {
 char a[1000],b[1000],c[1000];
 int n,m,i,j,k; 
 scanf("%d",&n);         
 for(i=0;i<n;i++)
    {
    scanf("%c",&a[i]);
}
 scanf("%d",&m);         
for(i=0;i<m;i++)
   {
     scanf("%c",&b[i]);    
}
for(i=0,j=0,k=0;i<m+n;i++)
{
    if(j<n)
    c[i]=a[j++];
    else
    c[i]=b[k++];
}
for(i=0;i<m+n;i++)
   {
   printf("%c ",c[i]);
}
 return 0;
 }

这个你的输入可能有点问题吧,在每一次输入数组的大小之后,需要使用一个getchar()来吸收回车符,不然这个回车符就被for循环里的scanf("%c")给获取了,并且在for循环输入元素的时候还需要一个getchar()来吸收回车,具体代码如下:

#include<stdio.h>
int main()
 {
 char a[1000],b[1000],c[1000];
 char ch;
 int n,m,i,j,k; 
 scanf("%d",&n); 
 getchar();
 for(i=0;i<n;i++)
    {
    scanf("%c",&a[i]);
	ch = getchar();
}
 scanf("%d",&m);         
 getchar();
for(i=0;i<m;i++)
   {
     scanf("%c",&b[i]);  
	 ch = getchar();
}
for(i=0,j=0,k=0;i<m+n;i++)
{
    if(j<n)
    c[i]=a[j++];
    else
    c[i]=b[k++];
}
for(i=0;i<m+n;i++)
   {
   printf("%c ",c[i]);
}
 return 0;
 }

运行结果图 运行结果图