You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将两个数组合并为第三个数组?C语言实现输出异常原因求解

数组合并代码异常输出原因分析

出现异常输出的原因有两点:

  • 第二个遍历a2的循环仅对变量j做了自增操作,写入a3的索引i始终保持第一个循环结束后的数值5,导致a2的5个元素都被重复写入a3[5]的位置,最终该位置的值仅保留a2的最后一个元素5,a2的前4个元素全部被覆盖丢失。
  • a3数组的索引6~9位置从未被赋值,属于未初始化的栈内存,存储的是内存中的随机脏数据,因此输出时会出现无意义的大数字。

修正方法

只需在第二个循环中新增i自增的逻辑,同步移动a3的写入索引即可,修改后的代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 30
int main(){
  int a1[]={1,2,3,4,5};
  int a2[]={1,2,3,4,5};
  int a3[10];
  int i=0;
  int k=0;
  int j=0;
  
  while(i<sizeof(a1)/sizeof(int))
  {
    a3[i]=a1[i];
    i++;
  }

  while(j<sizeof(a2)/sizeof(int))
  {
    a3[i]=a2[j];
    j++;
    i++; // 新增此行同步移动a3的写入索引
  }
  while(k<sizeof(a3)/sizeof(int))
  {
    printf("%d ",a3[k]);
    k++;
  }        

  return 0;
}

修正后输出结果为1 2 3 4 5 1 2 3 4 5 ,符合合并数组的预期。

内容的提问来源于stack exchange,提问作者A16

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 18:00:05