河北联合大学
20##-2013第2学期
《软件设计基础-C++》
课程设计报告
设计名称: 编写程序精确计算100!的值
姓 名:
学 号:
专业班级:
学 院:
设计时间:
设计地点:
目 录
1.课程设计目的············· 3
2.课程设计任务与要求·········· 3
3.课程设计说明书············ 4
4.课程设计成果············· 6
5.程序调试过程············· 7
6.设计问题的不足和改进方案······· 8
7.课程设计心得············· 9
8.参考文献··············· 9
河北联合大学
2011-2012第2学期
《软件设计基础-C++》
课程设计报告
设计名称: 编写程序精确计算100!的值 姓 名: 学 号: 2
专业班级: 工程管理1班 学 院: 建筑工程学院
设计时间: 5月25日-6月6日 设计地点: \
《软件设计基础-C++》课程设计报告 第 2 页,共 12 页
目 录
1.课程设计目的 ·········································································································· 2
2.课程设计任务与要求 ····························································································· 3
3.课程设计说明书······································································································ 4
4.课程设计成果 ·········································································································· 8
5.程序调试过程 ·········································································································· 9
6.设计问题的不足和改进方案 ··············································································· 11
7.课程设计心得 ········································································································ 11
8.参考文献 ················································································································ 12
《软件设计基础-C++》课程设计报告 第 3 页,共 12 页
《软件设计基础-C++》课程设计报告 第 4 页,共 12 页
《软件设计基础-C++》课程设计报告 ⑴概要设计模块说明:第5页,共12 页在我的设计过程中一共有五个板块,输入模块、计算模块、打印模块、调用模块、退出模块 其中计算板块为主版块,调用板块为子版块,另外的为整体的组成部分。通过 printf 函数将 所有的部分连接起来成为一个整体,从而得出最后的结论。模块结构图:主函数输入模块输 入 数 据 函 数 whil e (inp ut <= 0 || inpu t > 100 00)计算模块输 入 数 据 函 数 whil e (inp ut <= 0 || inpu t > 100 00) 进 行 判 断 whil e (inp ut <= 0 || inpu t > 100 00 进 行 计 算 for ( ind ex = 1; inde x <= inpu t; ++in dex)输出模块打 印 结 果
《软件设计基础-C++》课程设计报告第6页,共12 页⑵详细设计 总 体 流 程 图 :主函数输入模块输 入 数 据 函 数 whil e (inp ut <= 0 || inpu t > 100 00)计算模块输 入 数 据 函 数 whil e (inp ut <= 0 || inpu t > 100 00) 进 行 判 断 whil e (inp ut <= 0 || inpu t > 100 00 进 行 计 算 for ( ind ex = 1; inde x <= inpu t; ++in dex)输出模块打 印 结 果结束
《软件设计基础-C++》课程设计报告 各功能模块流程图: 调用模块第7页,共12 页Void processint produc = 0 乘积int carry = 0 进位 int remainder= 0;余数for (i = 0; i < cnt; ++i ) 计算判断 if (carry != 0) 是 否退出循环result[cnt] = carry % 10; carry /= 10; ++cnt;carry /= 10;计算过程
《软件设计基础-C++》课程设计报告第8页,共12 页int main(void)输入函数超出判断 result == NULL没超出内存申请失败!memset 初始化for (index = cnt - 1; index >= 0L; --index) 打印结果4.课程设计成果
《软件设计基础-C++》课程设计报告第9页,共12 页5.程序调试过程
《软件设计基础-C++》课程设计报告#include<stdio.h> #include<stdlib.h> #include<string.h> #define QUOTIETY 4 void process(const int index, int *result); int cnt = 1; int main(void) { int index = 0; int input = 0; int *result = NULL; scanf("%d", &input); while (input <= 0 || input > 10000) { printf("请输入合理的数据,谢谢:\n"); scanf("%d", &input); } result = (int *)malloc(sizeof(int) * input * QUOTIETY); if (result == NULL) { printf("内存申请失败!\n"); exit(-1); } memset(result, 0, sizeof(int) * input * QUOTIETY); result[0] = 1; for ( index = 1; index <= input; ++index) { process(index, result); } for (index = cnt - 1; index >= 0L; --index) { printf("%d", result[index]); } putchar('\n');第10页,共12 页free(result); return 0; void process(const int index, int *result)
《软件设计基础-C++》课程设计报告{ int product = 0; int carry = 0; int remainder = 0; int i = 0; for (i = 0; i < cnt; ++i) { product = result[i] * index + carry; carry = product / 10; remainder = product % 10; result[i] = remainder; } if (carry != 0) { while (carry / 10 != 0) { result[cnt] = carry % 10; carry /= 10; ++cnt; } result[cnt++] = carry; } }第11页,共12页6.设计问题的不足和改进方案 程序的编写有待进一步的精简,本程序可以解决 1000 的阶乘问题,但对于特别巨大的数字的阶乘问题还是无法解决。并且不 能用迭代法计算较小数的阶乘。可在此基础上编写万能阶乘计算 程序。7.课程设计心得
《软件设计基础-C++》课程设计报告第12页,共12 页第一,是要加强实践。 C++程序设计语言是一门实践性非常强的 课程, 若要真正掌握编程技术, 使编程能力有较大的实质性的提高,必须在认真听课勤做笔记并读懂教材的基础上,通 过上机实验加强开发软件的基本技能训练。只有勤学苦练才能积累宝贵的编程经验,悟 出编程技术的要领,牢固地掌握像 Borland C++和 Visual C++这样优秀的应用程序开发 工具,快速冲向计算机应用领域的前沿。 其二,便是要学习掌握相关的程序库(c++当 然首先要掌 c++标准程序库) 、相关的平台技术(eg .NET),因为这些都是学习 c++应掌 握的辅助知识。在众多的计算机学科中,有很多都出现了内容的交叉现象。我们在学习 c++的时候,如果能多看看有关这方面的书和查查相关的资料,对我们地学习也不无裨 益。在这些程序库和平台技术上,我们还要锻炼自己对目标问题的分析和归纳能力,做 到能够知其然且知其所以然,并能举一反三,扎实、灵活和系统地掌握编程要点 第二,第三,便是要多看有关 c++的资料书。选取一两本自己能够容易看懂的 c++方面的书, 进行精读,和细读。在学校的图书馆阅览室有很多关于 c++编程方面的书籍和资料,我 们可以借几本过来,对照着看看,对我们的学习是一定有帮助的 第三,最后,便是要持之以恒,锲而不舍。罗马的建成不是一日之功,任何学问的从熟练到精 通都不是三天两天的事。我们必须明白这个浅显的道理。学习 c++本身就是一项艰苦的 历程。浮躁的人、没有忍性的人,是肯定学不好 c++的。我们必须有狂热的编程热情, 否则是很难坚持下去的。我们也必须学会自信,因为有些时候尽管我们花了相当多的时 间和精力,我们也不能写出一个程序。写程序确实是很麻烦的,有时需要顿悟,有时需 要渐悟。当我们真正学好了,学精通了,便会有“一览众山小” 的感慨了。我们就会 因此而有一种莫言的自豪感。8.参考文献 [1] (美) Bjarne Stroustrup 机械工业出版社, 人民邮电出版社, [3]郑丽 著 C++程序设计语言(特别版) ( 裘宗燕).北京:2002.125~188 2003.73~125 2010.188~248 [M]. 2004.265~312 著 C++沉思录 2008.86~137[2] 何渝编 著 计算机常用数值算法与程序[M].北京: 著 C++语言程序设计(第 4 版)[M]. Visual C++编程实例与技巧集粹北京:清华大学出版社 [4]龚志祥 著 北京:兵器工业出版社, (梁实秋).[5](美)Barbara Moo, Andrew Koening 北京:人民邮电出版社,
XXXXXXX机电学院电子课程设计报告论文题目多功能电子表设计专业班级电气工程及其自动化123姓名时间20xx060920xx06…
华东交通大学课程设计报告书所属课程名称计算机网络原理题目院系软件学院班级软件工程20xx5班学号学生姓名指导教师谢昕辅导教师谢昕2…
信息工程学院网页设计与制作课程设计报告书指导教师专业班级姓名学号日期20xx年6月4日20xx年6月10日网页设计与制作课程设计一…
河南城建学院面向对象程序设计课程设计报告书设计题目企业人事管理系统指导老师崔雪冰蔡照鹏张妍琰学生学号083410109学生姓名王丽…
超声波测距仪课程设计报告书目录引言2超声波测距设计方案21总体方案设计介绍22硬件电路设计33系统程序的设计64设计总结12附件1…
软件详细设计报告文档模板1.引言1.1编写目的说明编写详细设计方案的主要目的。说明书编制的目的是说明一个软件系统各个层次中的每个程…
河北联合大学软件设计基础VB课程设计报告设计名称三子棋游戏姓名张峰学号20xx06040226专业班级10成型2班学院冶金与能源学…
应用技术学院课程设计报课程名称课题名称小学生心算CAI系统专业班级学号姓名吴树良指导教师20xx年1月10日告湖南工程学院课程设计…
襄樊学院0811地理科学GIS软件开发课程设计报告书题目名称全球信息查询系统院系管理学院地理科学专业班级地理科学0811开发组员指…
作品设计报告书题目现代简约效果图室内装饰设计班级平面20xx学号4554497姓名刘家指导教师罗一二O一四年十二月目录第一部分文档…