gpt4 book ai didi

c - 将二维数组传递给函数会返回意外的输出

转载 作者:行者123 更新时间:2023-11-30 16:48:01 25 4
gpt4 key购买 nike

这个程序的目的是计算多个 vector 的长度,然后按大小对它们进行排序,我编写了一个函数 VL,以一维数组作为输入以及上述数组的长度,并在另一个程序中对其进行了测试,看起来效果很好。

VL函数

double VL(double w[], int num)                         /*Calculate vector length*/
{

int k;
double presqrt;
double length = 0;

for (k = 0; k < num; k++)
{
presqrt += w[k] * w[k];
}
length = sqrt(presqrt);

return length;
}

主函数(该函数的大部分内容已经给出。)在该行下,我编写了一个小 for 循环来测试该函数是否使用此输入返回了正确的幅度。

int main(void)
{
int dim, num ;
int i, j;
double **w;

scanf("%d %d",&dim,&num); /* read N and M */
w = calloc(num, sizeof (double *)); /* allocate array of M pointers */
for(i=0; i<num; i++) /* allocate space for N dimensional vector */
{
w[i]= calloc(dim,sizeof(double)); /* read the vector */
for (j=0; j<dim ; j++)
{
scanf("%le",&w[i][j]) ;
}
}
<小时/>
for(i=0; i<num; i++)                        /*printing vector lengths(test)*/
{
printf("%.2f\n", VL(w[i], num));
}
<小时/>
return 0 ;
}

最佳答案

VL 函数中,将乘法结果添加到 presqrt

presqrt += w[k] * w[k];

但是 presqrt 的初始值尚未定义。

请在VL函数内一开始就将其初始化为0.0:

double presqrt = 0.0;

关于c - 将二维数组传递给函数会返回意外的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43138381/

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