编写一个程序exp-1.c。对于给定的正整数n,求1+2+……n,采用逐个累加和n(n+1)/2高斯法两种解法。对于相同的n,给出两种解法的求和结果和求解时间并用数据进行测试。
时间: 2024-02-12 16:04:22 浏览: 71
c语言求1+2+…+n的解决方法
5星 · 资源好评率100%
好的,我会为您编写一个程序exp-1.c,其中包含两种解法:逐个累加和n(n+1)/2高斯法。以下是程序代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int n, i, sum = 0;
clock_t start, end;
double time_used;
printf("请输入一个正整数n:");
scanf("%d", &n);
// 逐个累加求和
start = clock();
for (i = 1; i <= n; i++) {
sum += i;
}
end = clock();
time_used = ((double) (end - start)) / CLOCKS_PER_SEC;
printf("逐个累加求和结果为:%d,耗时:%fs\n", sum, time_used);
// 高斯求和
start = clock();
sum = n * (n + 1) / 2;
end = clock();
time_used = ((double) (end - start)) / CLOCKS_PER_SEC;
printf("高斯求和结果为:%d,耗时:%fs\n", sum, time_used);
return 0;
}
```
程序通过`scanf`函数获取用户输入的正整数n,然后分别使用逐个累加和高斯法求和,并计算每种方法的耗时。程序使用`clock`函数获取当前时间,并使用`CLOCKS_PER_SEC`宏定义获取每秒的时钟周期数,从而计算出耗时。
为了测试程序的正确性和性能,我们可以使用不同的n值进行测试。例如,我们可以使用n=1000、n=10000、n=100000等不同的值进行测试,观察程序的输出结果和耗时。
阅读全文