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

问题描述

我已经编写了一个程序,根据函数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;

}

解决方法

您将继续使用i,而无需在第一个0循环之后将其重新初始化为for。因为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]));
}
,

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

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

for (int i = 0; ...)

避免此类错误。