为什么我这个输出不了sum呢?而且对sum加&还会报错(语言-c语言)

img


为什么我这个输出不了sum呢?而且对sum加&还会报错。不对sum加&就直接等于0,加了就报错

把这 double 去掉,你这是函数调用 , 写个这个干啥

img

【以下回答由 GPT 生成】

在你的代码中,问题出现在inner函数里的*sum += (*(a + i)) * (*(b + i));这一行。问题的原因是没有正确初始化sum,导致无法正确输出sum的值。

解决这个问题的方法是在函数inner中添加一行代码,在循环之前将*sum赋值为0.0。

double inner(double *a, double *b, double *sum, int N)
{
    *sum = 0.0; // 添加这一行代码

    for (int i = 0; i < N; i++)
    {
        *sum += (*(a + i)) * (*(b + i));
    }

    return *sum;
}

这样修改之后,inner函数会在每次计算内积前将*sum初始化为0.0,然后再进行累加计算。

另外,关于报错问题,在这里你不能将&sum传递给inner函数作为参数,因为sum已经是一个指针。可以直接传递sum的地址,即inner(a, b, &sum, 10);

经过以上修改,你的代码就可以正确输出sum的值了。

以下是修改后的代码:

#include <stdio.h>

double inner(double *a, double *b, double *sum, int N)
{
    *sum = 0.0;

    for (int i = 0; i < N; i++)
    {
        *sum += (*(a + i)) * (*(b + i));
    }

    return *sum;
}

int main()
{
    double a[10], b[10], sum = 0.0;    

    printf("请输入数组a的元素:\n");
    for (int i = 0; i < 10; i++)
    {
        scanf("%lf", &a[i]);
    }

    printf("请输入数组b的元素:\n");
    for (int i = 0; i < 10; i++)
    {
        scanf("%lf", &b[i]);
    }

    inner(a, b, &sum, 10);

    printf("sum的值为:%lf\n", sum);

    return 0;
}


【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^