0

您好,我需要帮助解决此任务,如果有人有类似的问题,那将对我有很大帮助。

我制作了一个计算数字的第 n 根的程序。这是代码:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define EPS 1e-5
/*
*/
int main()
{
double xs,xn,n,x,degree=1,l;
printf("Enter n>0:");
scanf("%lf",&n);
while(n<1)
{
    printf("Enter n>0:");
    scanf("%lf",&n);
}
printf("Enter x:");
scanf("%lf",&x);
xn=(x+1)/n;

while(fabs(xn-xs)>EPS)
{
    xs=xn;
    l=pow(xs,n-1);
    xn=(1/n)*((n-1)*xs+(x/l));
}
printf("%lf",xn);
return 0;
}

我想修改这个程序,即。不要使用 pow 函数。我想使用循环来完成 pow 函数的工作。这是修改代码:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define EPS 1e-5
 /*
 */
int main()
{
double xs,xn,n,x,degree=1;
printf("Enter n>0:");
scanf("%lf",&n);
while(n<1)
{
    printf("Enter n>0:");
    scanf("%lf",&n);
}
printf("Enter x:");
scanf("%lf",&x);
xn=(x+1)/n;

while(fabs(xn-xs)>EPS)
{
    xs=xn;
    for(int i=1;i<=(n-1);i++)
    {
        degree=degree*xs;
    }
    xn=(1/n)*((n-1)*xs+(x/degree));
}
printf("%lf",xn);

return 0;
}

但是我在两个代码中都没有得到相同的结果,即。在第一个代码中我得到了正确的结果,而在第二个中我没有。另外,我不明白第二个代码中的问题是什么?

4

1 回答 1

0

计算功率的for循环位于另一个循环内,因此在外循环的下一次迭代中,degree它仍然具有与之前相同的值。您需要在进入内部循环之前重置它:

degree=1;
for(int i=1;i<=(n-1);i++)
{
    degree=degree*xs;
}
于 2021-11-18T12:58:54.197 回答