编写一个程序exp1-1.cpp,对于给定的正整数n,求1+2+…十n,采用逐个累加与n(n+1)/2(高斯法)两种解法。对于相同的n,给出这两种解法的求和结果和求解时间,并用相关数据进行测试。...
时间: 2024-03-21 21:39:54 浏览: 156
1+2+3+…+n的和。.cpp
好的,我理解了你的问题。以下是 C++ 的程序 exp1-1.cpp,其中包括了采用逐个累加和高斯法两种方法来求解 1+2+...+n 的结果,并输出它们的求和结果和求解时间。
```c++
#include <iostream>
#include <chrono> // 用于计时
using namespace std;
// 采用逐个累加的方法求和
int sum1(int n) {
int s = 0;
for (int i = 1; i <= n; i++) {
s += i;
}
return s;
}
// 采用高斯法求和
int sum2(int n) {
return n * (n + 1) / 2;
}
int main() {
int n;
cout << "请输入一个正整数n: ";
cin >> n;
// 测量采用逐个累加方法的时间
auto start1 = chrono::system_clock::now(); // 记录开始时间
int s1 = sum1(n); // 求和
auto end1 = chrono::system_clock::now(); // 记录结束时间
chrono::duration<double> elapsed_seconds1 = end1 - start1; // 计算时间差
cout << "采用逐个累加的方法求和结果为: " << s1 << endl;
cout << "用时: " << elapsed_seconds1.count() << " 秒" << endl;
// 测量采用高斯法的时间
auto start2 = chrono::system_clock::now(); // 记录开始时间
int s2 = sum2(n); // 求和
auto end2 = chrono::system_clock::now(); // 记录结束时间
chrono::duration<double> elapsed_seconds2 = end2 - start2; // 计算时间差
cout << "采用高斯法求和的结果为: " << s2 << endl;
cout << "用时: " << elapsed_seconds2.count() << " 秒" << endl;
return 0;
}
```
你可以将以上程序保存在名为 exp1-1.cpp 的文件中,并通过 C++ 编译器编译运行该程序。当程序运行时,它会要求你输入一个正整数 n,然后分别采用逐个累加和高斯法两种方法来求解 1+2+...+n 的结果,并输出它们的求和结果和求解时间。
注意:在程序中,我们使用了 `chrono` 库来计算程序运行时间,需要在编译时加上 `-std=c++11` 的编译选项,否则会报错。例如,使用 g++ 编译器编译该程序时,可以使用以下命令:
```
g++ -std=c++11 exp1-1.cpp -o exp1-1
```
编译成功后,运行程序即可。
阅读全文