在1C中积分2个数学方程



我已经编写了一个程序,根据函数y=(sqrt(3+x^2((/(20x^2+sqrt(x((的给定x值来计算y值。使用两个计数器,一个用于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;

}

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

将第二个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]));
}

添加一个"i=0";在第二个for循环的初始值设定项部分换行。

你应该使用C99风格的循环如下:

for (int i = 0; ...)

以避免这种错误。

相关内容

  • 没有找到相关文章

最新更新