用C++编写程序定义函数 main(),输入正整数 n,当精度 e 分别取值 为 10-1、10-2、10-3、…10-n时,分别计算出下列算式的值,直 到最后一项的绝对值小于精度 e,以比较不同精度下算出的 结果。要求调用函数 cal(e),计算下列算式的值。
时间: 2024-03-02 18:49:54 浏览: 90
好的,我理解了你的问题。以下是 C++ 程序,可以实现你的要求:
```c++
#include <iostream>
#include <cmath>
using namespace std;
double cal(double e);
int main() {
int n;
cout << "请输入正整数 n:";
cin >> n;
for (int i = 1; i <= n; i++) {
double e = pow(10, -i);
double result = cal(e);
cout << "精度为 " << e << " 时的计算结果为:" << result << endl;
}
return 0;
}
double cal(double e) {
double sum = 0.0;
double temp = 1.0;
int i = 1;
while (fabs(temp) >= e) {
sum += temp;
i++;
temp = 1.0 / i;
}
return sum;
}
```
在程序中,我们首先输入一个正整数 n,表示要计算的精度的数量。然后,我们循环 n 次,在每次循环中,根据当前循环的次数 i,计算出精度 e,调用函数 cal(e) 计算出结果,并输出到屏幕上。
函数 cal(e) 中,我们定义了一个变量 sum 表示当前的和,一个变量 temp 表示当前项的值,一个变量 i 表示当前项的下标。我们使用 while 循环,当当前项的绝对值小于精度 e 时,退出循环,并返回当前的和。
注意,在程序中,我们使用了 pow 函数来计算 10 的负幂次方,使用了 fabs 函数来计算绝对值。
希望这个程序对你有帮助!
阅读全文