对运行中输入的x,计算级数:
1+x-x2/2!+x3/3!-…(-1)n+1xn/n!
要求输出精度为10-8。分别用 for和 while语句各编写一个程序。
//while循环
#include<iostream> #include<cmath> #include<iomanip> using namespace std; int main() { double x,y; cin>>x; y=x; double sum=1; int i=2; while(abs(y)>1e-8) { sum+=y; y*=(-1)*x/i; i++; } cout<<fixed<<setprecision<<sum<<endl; return 0; }
#include<iostream> #include<cmath> #include<iomanip> using namespace std;int main() { double x,y; cin>>x; y=x; double sum=1; for(int i=2;abs(y)>1e-8;i++) { sum+=y; y*=(-1)*x/i; } cout<<fixed<<setprecision(8)<<sum<<endl; return 0; }//注释:1.精度的控制是由项来决定的,而非总的和;注意for循环的条件;
#include <iostream>
#include <cmath>
using namespace std;
int mul(int num);
int main()
{
// +-级数
int x;
double sum(1.0);
cout << "enter a number" << endl;
cin >> x;
for (double i = 1, sign = 1; abs(sum) > 1e-8; i++, sign *= -1)
{
sum += sign * (pow(x, i) / mul(i));
cout << sum << endl;
}
cout << sum << endl;
}
int mul(int num)
{
if (num == 1)
{
return 1;
}
return num * mul(num - 1);
}
//=============================================== //EX0201.cpp //级数求和 //=============================================== #include<iostream> #include<cmath> // abs() using namespace std; //----------------------------------------------- int main() { double x; cin>>x; double sum=1; double t=x; int i=2; while(abs(t)>1e-8) { sum +=t; t*=(-1)*x/i; i++; } cout.precision(8); cout<<fixed<<"x="<<x<<", sum="<<sum<<"\n"; }//==============================================//=============================================== //EX0201.cpp //级数求和 //=============================================== #include<iostream> #include<cmath> // abs() using namespace std; //----------------------------------------------- int main() { double x; cin>>x; double sum=1; double t=x; for(int i=2; abs(t)>1e-8; i++) { sum +=t; t*=(-1)*x/i; } cout.precision(8); cout<<fixed<<"x="<<x<<", sum="<<sum<<"\n"; }//==============================================