我已经编写了一个程序,根据函数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
循环永远不会运行。但是,在最后一个循环中打印x
、y
的值时,您正确地初始化了它。
将第二个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; ...)
以避免这种错误。