对运行中输入的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); }