gpt4 book ai didi

c - vector 作为参数 C

转载 作者:行者123 更新时间:2023-12-04 18:18:59 25 4
gpt4 key购买 nike

我必须执行以下操作:

给定一个带有随机数的 vector ,将其分成 2 个其他 vector ,奇数和偶数。但在函数中,所有 vector 都必须通过参数传递(不能使用全局)。
这是我的代码:

#include <stdio.h>
#include <stdlib.h>

void vetores(int *vetor, int *A, int *B)
{
int i = 0,aux;
for(i = 0;i < 100; i++)
{
if(vetor[i] % 2 == 0)
{
aux = vetor[i];
A[i] = aux;
}else{
aux = vetor[i];
B[i] = aux;
}
}
}

int main()
{
int vetor[101], a[51], b[51],i;

/*a = (int)malloc(sizeof(int)*51);
b = (int)malloc(sizeof(int)*51);*/

for(i = 0; i < 100; i++)
{
vetor[i] = i;
}

vetores(vetor,a,b);

for(i = 0; i < 50; i++)
{
if(vetor[i] % 2 == 0)
{
printf("%d",a[i]);
}else
{
printf("%d",b[i]);
}
}

return 0;
}

如果您测试该代码,则 vector 正在被更改(它不应该)并且 A vector 没有收到偶数!

最佳答案

您的主要问题是您正在根据输入中的位置索引输出。

例如,如果您的第一个偶数是 input[3] , 那么你将它写到 even_output[3] ,应该(可能)在even_output[0] .

你可能想要这样的东西:

if (input[i] %2 == 0)
*A++ = input[i];
else
*B++ = input[i];

您可能还需要做一些事情来告诉调用者您找到了多少奇数和偶数(并且调用者可能必须以不同的方式分配内存,除非这些计数相等 - 现在,您有 101 个输入,并分配了 51 个点对于每个输出。如果您有(例如)60 个偶数和 40 个奇数,您将写超出为偶数分配的空间的末尾。使用您提供的输入,不会出现该问题,但在几乎任何其他情况下,这不仅是可能的,而且实际上是可能的。

关于c - vector 作为参数 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11087741/

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