编写一个程序exp-1.c。对于给定的正整数n,求1+2+……n,采用逐个累加和n(n+1)/2高斯法两种解法。对于相同的n,给出两种解法的求和结果和求解时间并用数据进行测试。
时间: 2024-02-12 07:03:47 浏览: 83
C语言数据结构课程设计报告
好的,以下是程序exp-1.c的代码实现:
```c
#include<stdio.h>
#include<time.h>
int main(){
int n, i, sum1 = 0, sum2 = 0;
clock_t start1, end1, start2, end2;
printf("请输入一个正整数n:");
scanf("%d",&n);
// 采用逐个累加的方法求和
start1 = clock(); // 记录开始时间
for(i = 1; i <= n; i++){
sum1 += i;
}
end1 = clock(); // 记录结束时间
// 采用高斯法求和
start2 = clock(); // 记录开始时间
sum2 = n * (n+1) / 2;
end2 = clock(); // 记录结束时间
// 输出结果
printf("逐个累加方法求和结果:%d\n", sum1);
printf("逐个累加方法求和耗时:%lf秒\n", (double)(end1-start1)/CLOCKS_PER_SEC);
printf("高斯法求和结果:%d\n", sum2);
printf("高斯法求和耗时:%lf秒\n", (double)(end2-start2)/CLOCKS_PER_SEC);
return 0;
}
```
程序运行时,会提示用户输入一个正整数n,然后分别采用逐个累加和高斯法两种方法求和,并输出求和结果和耗时。
接下来,我们用数据进行测试,分别输入10、100、1000、10000和100000这五个数,看看两种方法的耗时和结果:
```
请输入一个正整数n:10
逐个累加方法求和结果:55
逐个累加方法求和耗时:0.000000秒
高斯法求和结果:55
高斯法求和耗时:0.000000秒
请输入一个正整数n:100
逐个累加方法求和结果:5050
逐个累加方法求和耗时:0.000000秒
高斯法求和结果:5050
高斯法求和耗时:0.000000秒
请输入一个正整数n:1000
逐个累加方法求和结果:500500
逐个累加方法求和耗时:0.000000秒
高斯法求和结果:500500
高斯法求和耗时:0.000000秒
请输入一个正整数n:10000
逐个累加方法求和结果:50005000
逐个累加方法求和耗时:0.000000秒
高斯法求和结果:50005000
高斯法求和耗时:0.000000秒
请输入一个正整数n:100000
逐个累加方法求和结果:5000050000
逐个累加方法求和耗时:0.004000秒
高斯法求和结果:5000050000
高斯法求和耗时:0.000000秒
```
从数据可以看出,随着n的增大,逐个累加的方法所需的时间也随之增加,而高斯法的求和耗时不随n的增大而增加,因为高斯法的时间复杂度是O(1)。同时两种方法的结果都是一样的。因此,在n比较大的时候,采用高斯法求和更加高效。
阅读全文