ZEiYANGL 2021-04-18 00:18 采纳率: 50%
浏览 29
已采纳

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

#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;
 }

  • 写回答

1条回答 默认 最新

  • 呆呆papa 2021-04-18 08:51
    关注

    这个你的输入可能有点问题吧,在每一次输入数组的大小之后,需要使用一个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;
     }
    
    
    运行结果图 运行结果图

     

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
  • ¥50 NT4.0系统 STOP:0X0000007B
  • ¥15 想问一下stata17中这段代码哪里有问题呀