代码错误;得到错误的求和输出
Error in code; Getting wrong summation output
我必须使用泰勒级数和误差边界来计算 e^(x)。我们被指示创建 3 个独立的函数,然后使用它们计算 e^(x),其精度和用户输入的 x 值。编译器最终编译了代码,但是如果我输入 x=2 和 delta=(anything),我得到 sum=3.000 而不是 7.3890。我假设它是我的最终循环(求和循环)有错误。任何帮助表示赞赏。
代码:
#include<stdio.h>
#include<math.h>
float power(float A, int B)
{
float sum=1.0;
int nterms=1;
while ( nterms <= B && B > 0)
{
sum = A*sum;
nterms++;
}
return sum;
}
int factorial(int b)
{
int fact=1;
while (b >= 2)
{
fact = b*(b-1)*fact;
b = b-2;
}
return fact;
}
int Terms(float X, float a)
{
int N=1,l;
float L,R;
l=N+1;
while (L < a && a <= R)
{
L= (power(X,l)/(factorial(l)));
R= (power(X,N)/(factorial(N)));
N++;
}
return N;
}
int main()
{
float x, delta, term=0.0, sum=0.0;
int n, Nterms;
printf("Please enter a decimal number. x=");
scanf("%f",x);
printf("Please enter an another number. delta=");
scanf("%d",delta);
Nterms=Terms(x,delta);
for(n=0;n<Nterms;n++)
{
if( n==0 || n==1 )
{
sum = 1 + x;
}
else if (n>=2 && n<Nterms)
{
sum = sum + term;
term = (power(x,n))/(factorial(n));
}
}
printf("The approximation for e^(%f)=%f",x,sum);
return 0;
}
改变
scanf("%f",x);
scanf("%d",delta);
至
scanf("%f", &x);
scanf("%f", &delta);
您读取用户输入的方式有误。 scanf()
将继续读取指针指向的位置。
我必须使用泰勒级数和误差边界来计算 e^(x)。我们被指示创建 3 个独立的函数,然后使用它们计算 e^(x),其精度和用户输入的 x 值。编译器最终编译了代码,但是如果我输入 x=2 和 delta=(anything),我得到 sum=3.000 而不是 7.3890。我假设它是我的最终循环(求和循环)有错误。任何帮助表示赞赏。
代码:
#include<stdio.h>
#include<math.h>
float power(float A, int B)
{
float sum=1.0;
int nterms=1;
while ( nterms <= B && B > 0)
{
sum = A*sum;
nterms++;
}
return sum;
}
int factorial(int b)
{
int fact=1;
while (b >= 2)
{
fact = b*(b-1)*fact;
b = b-2;
}
return fact;
}
int Terms(float X, float a)
{
int N=1,l;
float L,R;
l=N+1;
while (L < a && a <= R)
{
L= (power(X,l)/(factorial(l)));
R= (power(X,N)/(factorial(N)));
N++;
}
return N;
}
int main()
{
float x, delta, term=0.0, sum=0.0;
int n, Nterms;
printf("Please enter a decimal number. x=");
scanf("%f",x);
printf("Please enter an another number. delta=");
scanf("%d",delta);
Nterms=Terms(x,delta);
for(n=0;n<Nterms;n++)
{
if( n==0 || n==1 )
{
sum = 1 + x;
}
else if (n>=2 && n<Nterms)
{
sum = sum + term;
term = (power(x,n))/(factorial(n));
}
}
printf("The approximation for e^(%f)=%f",x,sum);
return 0;
}
改变
scanf("%f",x);
scanf("%d",delta);
至
scanf("%f", &x);
scanf("%f", &delta);
您读取用户输入的方式有误。 scanf()
将继续读取指针指向的位置。