C++课程设计报告书--- 编写程序精确计算100!的值

河北联合大学

20##-2013第2学期

 《软件设计基础-C++》

课程设计报告

设计名称:    编写程序精确计算100!的值                          

姓    名:

学    号:

专业班级:

学    院:

设计时间:

设计地点:


目    录

1.课程设计目的············· 3

2.课程设计任务与要求·········· 3

3.课程设计说明书············ 4

4.课程设计成果············· 6

5.程序调试过程············· 7

6.设计问题的不足和改进方案······· 8

7.课程设计心得············· 9

8.参考文献··············· 9

 

第二篇:精确计算100!的值

河北联合大学

2011-2012第2学期

《软件设计基础-C++》

课程设计报告

设计名称: 编写程序精确计算100!的值 姓 名: 学 号: 2

专业班级: 工程管理1班 学 院: 建筑工程学院

设计时间: 5月25日-6月6日 设计地点: \

精确计算100的值

《软件设计基础-C++》课程设计报告 第 2 页,共 12 页

目 录

1.课程设计目的 ·········································································································· 2

2.课程设计任务与要求 ····························································································· 3

3.课程设计说明书······································································································ 4

4.课程设计成果 ·········································································································· 8

5.程序调试过程 ·········································································································· 9

6.设计问题的不足和改进方案 ··············································································· 11

7.课程设计心得 ········································································································ 11

8.参考文献 ················································································································ 12

《软件设计基础-C++》课程设计报告 第 3 页,共 12 页

精确计算100的值

《软件设计基础-C++》课程设计报告 第 4 页,共 12 页

精确计算100的值

《软件设计基础-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 北京:人民邮电出版社,

相关推荐