"C语言大一课程设计报告:1~n的连续整数求和算法比较与性能分析"
需积分: 0 66 浏览量
更新于2023-12-27
1
收藏 802KB DOCX 举报
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的连续整数之和的逐个累加和高斯法两种解法,并通过测试数据进行了验证。通过本次课程设计,学生将会对不同算法的优劣有更深刻的体会,为以后的算法设计和性能优化奠定基础。
284 浏览量
125 浏览量
3036 浏览量
146 浏览量
2011-11-06 上传
![](https://profile-avatar.csdnimg.cn/f011e62dbd1a406f83d5079eaab952ab_weixin_51275821.jpg!1)
刘学.
- 粉丝: 2635
最新资源
- UABE 2.1d 64bit:Unity资源包编辑与提取工具
- RH64成功编译ffmpeg0.7版本,解决JNI编译难题
- HexBuilder工具:合并十六进制文件并转换为二进制
- 傻瓜式EXCEL财务记账系统教程
- React开发的Traekunst.dk项目概述
- 子域名检测大师:高效采集与暴力枚举解决方案
- Laravel网格查询抽象实现详解
- CKplayer:小巧跨平台网页视频播放器
- SpringBoot实现秒杀功能的简单示例教程
- LabView在WEB开发中的应用:用户事件记录温度报警
- Qt框架下QCamera实现摄像头调用与图像显示
- Mac环境下Sublime Text插件的安装教程
- EFT2.22.1R4中文正式版V3.1发布:绝地反击
- 基于Java技术的网上拍卖商城系统设计与实现
- 42巴黎C++课程完全指南与学习心得
- myBase V7.0.0 Pro Beta-20:升级至HTML格式与丰富插件支持