gpt4 book ai didi

c - 将2个数组合并到C中的空第三个数组中

转载 作者:太空宇宙 更新时间:2023-11-04 07:55:11 24 4
gpt4 key购买 nike

我有两个数组:

array1[] = {1,2,3,4}; 
array2[] = {5,6,7,8};

然后我尝试将它们合并到第三个数组中:

merge[] = {};

我的脚本当前输出:

1 2 3 4 3 4 3 4

代替:

1 2 3 4 5 6 7 8

无法找出我的循环条件的问题:

#include<stdio.h>

int main() {

printf("\n\n");

int array1[] = {1,2,3,4};
int array2[] = {5,6,7,8};
int merge[] = {};
int n1, n2, n3, i;

//size of arrays
n1 = sizeof(array1)/sizeof(array1[0]);
n2 = sizeof(array2)/sizeof(array2[0]);
n3 = n1 + n2;

printf("The value of n1 is %d\n", n1);
printf("sum of array1 & array2 lengths is %d\n\n", n3);


for(int i = 0 ; i < n1; i++){
merge[i] = array1[i];
printf("%d\n", merge[i]);

};

for(int i = n1 ; i < n3; i++){
merge[i] = array2[i-n1];
printf("%d\n", merge[i]);
};


printf("\n\n");
return 0;
};

更新

我尝试将合并声明为:

int merge[8] = {0,0,0,0,0,0,0,0};

这有效。

原题中的问题——声明一个没有元素的空数组:merge[] = {};但仍然不确定为什么输出是 1 2 3 4 3 4 3 4。

最佳答案

首先计算 n1、n2 和 n3,然后用 n3 创建合并数组,这样就不需要对长度进行硬编码。我已根据需要更新您的代码。

#include<stdio.h>

int main() {

printf("\n\n");

int array1[] = {1,2,3,4};
int array2[] = {5,6,7,8};
int n1, n2, n3, i;

//size of arrays
n1 = sizeof(array1)/sizeof(array1[0]);
n2 = sizeof(array2)/sizeof(array2[0]);
n3 = n1 + n2;
int merge[n3];

printf("The value of n1 is %d\n", n1);
printf("sum of array1 & array2 lengths is %d\n\n", n3);


for(int i = 0 ; i < n1; i++){
merge[i] = array1[i];
printf("%d\n", merge[i]);

};

for(int i = n1 ; i < n3; i++){
merge[i] = array2[i-n1];
printf("%d\n", merge[i]);
};


printf("\n\n");
return 0;
};

希望这就是您所期待的。

关于c - 将2个数组合并到C中的空第三个数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50658987/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com