您好,我需要帮助解决此任务,如果有人有类似的问题,那将对我有很大帮助。
我制作了一个计算数字的第 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;
}
但是我在两个代码中都没有得到相同的结果,即。在第一个代码中我得到了正确的结果,而在第二个中我没有。另外,我不明白第二个代码中的问题是什么?