0

我编写了一个程序来根据函数 y = (sqrt(3+x^2))/(20x^2+sqrt(x)) 的y给定值计算值。x使用两个计数器,一个用于 x 值 [i],一个用于 y 值 [n]。我的 x 值显示得很好,但是,y 值返回零。这里会有什么错误?非常感激。

    for (i = 0; i < 30; i++)
    {
        x[i] = 20 i * 2 + 3;
    }   

    for (n = 0; i < 30 && n < 50; i++, n++)
    {
        y[n] = (sqrt(3 + (pow(x[i], 2))))) / (20 * pow(x[i], 2) + sqrt(x[i]));
    }

    for (i = 0, n = 0; i < 30 && n < 50; i++, n++)
    printf("x %lf, y %lf", x[i], y[n]);

return 0;

}

4

2 回答 2

1

您将继续使用,而无需在第一个循环之后i重新初始化它。因为 的值保持在 的值,所以第二个循环永远不会运行。但是您在最后一个循环中打印,的值时正确地初始化了它。0foritimesforxy

for将第二个循环更改为

for (i =0, n = 0; i < times && n < Ymax; i++, n++)
//   ^^^^^
{
    y[n] = 1 - (1 - (sqrt(4 - (pow(x[i], 2))))) / (40 * pow(x[i], 2) + sqrt(x[i]));
}
于 2020-09-27T15:54:30.540 回答
0

在第二个 for 循环的初始化程序部分添加“i=0”行。

您应该像这样使用 C99 样式的循环:

for (int i = 0; ...)

以避免此类错误。

于 2020-09-27T15:58:38.430 回答