"C语言大一课程设计报告:1~n的连续整数求和算法比较与性能分析"
下载需积分: 0 | DOCX格式 | 802KB |
更新于2023-12-27
| 43 浏览量 | 举报
C语言数据结构课程设计报告
本报告着重讨论了C语言大一课程中的第一题,即求解1~n的连续整数之和的问题。本课程设计的目的在于通过对比同一问题的不同解法的绝对执行时间,来体会不同算法的优劣。具体问题描述如下:编写一个名为exp1的程序。对于给定的正整数n,要求分别采用逐个累加和n(n-1)/2高斯法两种解法。对于相同的n,需要给出两种解法的求和结果和求解时间,并用数据进行测试。
一.概要设计
1. 模块的层次结构及调用关系
本设计采用模块化的方式,主要功能被封装在各个函数中,并以模块的方式进行调用。主要的模块包括整数累加法和高斯法两种解决方法。其中,整数累加法的解法由函数add1()实现,高斯法的解法由函数add2()实现。在主函数中调用两个子函数AddTime1()和AddTime2(),以测定两种解法的绝对执行时间。
2. 实现功能的函数及主要代码
方法一,逐个累加法的解法
```c
long add1(long n){
long i, sum=0;
for (i=1; i<=n; i++){
sum += i;
}
return sum;
}
```
方法二,高斯法的解法
```c
long add2(long n){
return n*(n+1)/2;
}
```
在主函数中进行调用的代码如下:
```c
AddTime1()
add1()
AddTime2()
add2()
```
其中,在用两种方法使用之前,定义一个`clock_t t; t=clock();`作为算法开始的时间,方便记时。随后,`t=clock()-t;`用于计算所花费的时间。
二.源代码
```c
//文件名:exp1-1.cpp
#include <stdio.h>
#include <time.h>
long add1(long n){
long i, sum=0;
for (i=1; i<=n; i++){
sum += i;
}
return sum;
}
long add2(long n){
return n*(n+1)/2;
}
void AddTime1(){
clock_t t;
t = clock();
t = clock() - t;
printf("Add1 Time: %ld ticks\n", t);
}
void AddTime2(){
clock_t t;
t = clock();
t = clock() - t;
printf("Add2 Time: %ld ticks\n", t);
}
int main(){
long n = 1000000;
printf("Add1 Result: %ld\n", add1(n));
AddTime1();
printf("Add2 Result: %ld\n", add2(n));
AddTime2();
return 0;
}
```
以上是本课程设计所包含的问题描述、概要设计和源代码。实现了对1~n的连续整数之和的逐个累加和高斯法两种解法,并通过测试数据进行了验证。通过本次课程设计,学生将会对不同算法的优劣有更深刻的体会,为以后的算法设计和性能优化奠定基础。
相关推荐








刘学.
- 粉丝: 2638
最新资源
- 安装Oracle必备:unixODBC-2.2.11-7.1.x86_64.rpm
- Spring Boot与Camel XML聚合快速入门教程
- React开发新工具:可拖动、可调整大小的窗口组件
- vlfeat-0.9.14 图像处理库深度解析
- Selenium自动化测试工具深度解析
- ASP.NET房产中介系统:房源信息发布与查询平台
- SuperScan4.1扫描工具深度解析
- 深入解析dede 3.5 Delphi反编译技术
- 深入理解ARM体系结构及编程技巧
- TcpEngine_0_8_0:网络协议模拟与单元测试工具
- Java EE实践项目:在线商城系统演示
- 打造苹果风格的Android ListView实现与下拉刷新
- 黑色质感个人徒步旅行HTML5项目源代码包
- Nuxt.js集成Vuetify模块教程
- ASP.NET+SQL多媒体教室管理系统设计实现
- 西北工业大学嵌入式系统课程PPT汇总