gpt4 book ai didi

c - 如何将两个 vector 相加并打印结果,这也是一个 vector

转载 作者:太空宇宙 更新时间:2023-11-04 03:12:49 25 4
gpt4 key购买 nike

我在这段代码中有 3 个函数。第一个 vector_add,将两个 vector xy 相加,并将它们放入另一个 vector z,这三个都由 N=3 个元素组成(在顶部定义)。第二个 vector_print,使用 printf 循环遍历 z 中的元素,将第 i 个元素打印为数组。最后,主要功能定义了我的输入。我的目标是读取输出:z is 3 5 7,即 xy 的总和。但目前,它输出以下内容:

3.0000005.0000007.000000
z is 10

显然,这不是我想要的。但至少(不知何故)3、5 和 7 在那里!

专家们,请花点时间看看我的代码并提供建议以获得我想要的输出。我想以相同的通用格式保留这段代码,即 3 个独立的函数。

#include <stdio.h>

// vector length (fixed)

#define N (3)

// ---------------------------------------------------------------------
// vector_add
//
// returns the linear sum of the two vectors and puts them in another
// x: first vector
// y: second vector
// z: solution vector

double
vector_add(double x[N], double y[N], double z[N])
{
for (int i = 0; i < N; i++) {
z[i] += x[i] + y[i];
}
return *z;
}

// ---------------------------------------------------------------------
// vector_print
//
// prints the elements of an N array

int
vector_print(double z[N])
{
for (int i = 0; i < N; i++) {
printf("%f", z[i]);
}
printf("\n");
}

// ---------------------------------------------------------------------
// main
//
// test the vector_add() function

int
main(int argc, char **argv)
{
double x[N] = { 1., 2., 3. };
double y[N] = { 2., 3., 4. };
double z[N] = {0,0,0};
vector_add(x, y, z);

printf("z is %d", vector_print(z)); {
printf("\n");
}

return 0;
}

最佳答案

在这一行中:

printf("z is %d", vector_print(z));

首先评估printf() 的参数,这导致执行vector_print(z),输出3.0000005 .0000007.000000.

然后,vector_print() 有效地返回 10

printf("z is %d", 10);

被执行,产生你观察到的输出。 10 是一些随机值,因为您的函数不会返回与其 promise 相反的值。

如果您希望函数 vector_print() 返回一个字符串,您有多种选择。最简单的可能是像这样返回一个指向静态字符数组的指针(未经测试的代码):

char *
vector_print(double z[N])
{
static char buf[100];
char *ptr = buf;
for (int i = 0; i < N; i++) {
ptr += snprintf(ptr, sizeof(buf)-(ptr-buf), "%f ", z[i]);
}
return ptr;
}

然后用

打印出来
printf("z is %s\n", vector_print(z));

那么它应该会如您所愿地工作。

关于c - 如何将两个 vector 相加并打印结果,这也是一个 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54717866/

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