软件算法设计说明书

上传人:干*** 文档编号:162443463 上传时间:2022-10-18 格式:DOCX 页数:25 大小:250.21KB
收藏 版权申诉 举报 下载
软件算法设计说明书_第1页
第1页 / 共25页
软件算法设计说明书_第2页
第2页 / 共25页
软件算法设计说明书_第3页
第3页 / 共25页
资源描述:

《软件算法设计说明书》由会员分享,可在线阅读,更多相关《软件算法设计说明书(25页珍藏版)》请在装配图网上搜索。

1、科信学院课程设计说明书(2012/2013学年第二学期)课程名称:软件综合算法设计题 目:数制转换问题专业班级:学生姓名:学 号:指导教师 :设计周数:2周设计成绩 :2013年7月2日目录一、实验目的 - 2 -二、实验要求及目标 - 2 -三、算法思想 - 3 -1、用数组实现该问题:-.3 -2、用栈实现该问题:-3 -四、模块划分 - 3 -1、用数组实现该问题: -.3. -2、用栈实现该问题: -.4. -五、数据结构 - 4 -1、用数组实现该问题 -.4. -2、用栈实现该问题 -.4. -六、程序源代码及结果 - 5 -(一)数组 -.5.-1、源代码 -.5. -2、运行结

2、果 -.9. -(二)栈 -.1.2-1、源代码 -.1.2-2.运行结果 -.1.7-七、心得体会 - 20 -【参考文献】 - 22 -软件综合算法设计报告实验名称:数值转换问题指导老师:杨 荣 爱组员 1:黄静南 学号 :110212203 组员 2:赵兴凡 学号 :110212216 完成时间: 2013年 7 月 2 日一、实验目的了解并掌握软件算法设计的方法与步骤,具备初步的独立分析问题、解决问题的能 力。初步掌握软件开发过程的问题分析、 系统设计、 程序编码和测试等基本方法和技能。 积累项目设计及程序调试、测试的经验,提高综合运用所学的理论知识和方法,锻炼独 立分析和解决问题的能

3、力 . 训练用系统的观点和软件开发一般规范进行软件的开发, 培 养软件工作者所具备的科学工作方法和作风。二、实验要求及目标要求:任意给定一个M进制的数x,请实现如下要求:1)求出此数x的10进制值(用MD表示);2)实现对x向任意的一个非M进制的数的转换;3)至少用两种或两种以上的方法实现上述要求(用栈解决,用数组解决,其它方 法解决)。目标:完成实验要求,实现源代码的运行,进而实现要求中的基本功能三、算法思想1、用数组实现该问题:DTOM)函数和MTO()函数是实现该问题的主要函数。DTOM(函数是实现十进制转换。为其它进制的函数,它是将输入的十进制数x取首先对需要转换的进制M取余,然后再对

4、其取整,接着通过递归调用DTOM(函数依次将得到的整数部分依次先取余后取 整,并将所得的余数依次存入一个数组中,然后逆向取出数组中的元素,即得到转换后 的结果。而MTOD(函数则是实现其他进制 M转换为十进制,并将其转换为非M进制的数。 M进制转十进制则是从该 M进制数的最后一位开始算,依次列为第0、1、2n位并 分别乘以M的0、1、2n次方,将得到的次方相加便得到对应的十进制数,再调用 DTOM)函数将其转换为非 M进制的数。2、用栈实现该问题:同样是利用DTOM)和MTOM)两个函数实现.两个函数的思想同利用数组实现时 相同。只是栈具有后进先出的性质,故其用 Pop() 取数较数组的逆向取

5、数方便些 .四、模块划分1、用数组实现该问题 i,j , y,n , s,m,r,reminder , x 是定义的全局变量,初始值都为0 ; DTOM int g,i nt h)是实现十进制数转换为 M进制数的函数; MTOD)是实现M (仅指二进制数和八进制数)进制数转换为十进制数的函数,并在其中调用DTOM(int g , int h )实现向非M进制数的转换; HTODM int f) 是实现十六进制数转换为十进制数的函数,并在其中调用DTOM(int g,int h) 实现向非十六进制数的转换 ; void main( )是主函数 , 功能是给出测试的数据,并在特定条件下调用 DTO

6、M)( 函数和 MTO(D )函数。2、用栈实现该问题: SqStack 定义栈,说明 base 为栈底指针, top 为栈顶指针, stacksize 为栈容 量; intlnitStack(SqStack &S)至U int DestroyStack (SqStack & S)六大模块分别表示构造一个空栈、用e表示栈元素、插入元素、删除元素、判断栈是否为空以及 摧毁栈; SqStack S 是指定义栈 S; DTO(int a , int b)的功能是将十进制数转换成 M进制的函数;MTOD(的功能是M进制转换为十进制的函数; void main ()是主函数。其功能是输入需要测试的数据以

7、及需要转换的进制 , 并在特定情形下调用DTOM)函数和MTOD)函数,而且实现M进制数向任意非M进制 数的转换。五、数据结构1、用数组实现该问题:使用简单一维数组 int a N,int b N, int cN2、用栈实现该问题 :数据类型定义如下:typedef structint base ;int *top ;int stacksize ; SqStack;六、程序源代码及结果(一)数组1、源代码#include stdio。h#include=65)printf (%c , cj );elseprintf(” %,dc”j );return 0;MTOD(int e ) / 二进制和

8、八进制数转换为十进制数,并这转换为 其他进制数 int aN;printf (”请输入d进制位数:”,m);scanf ( %d”, &n);printf(”请输入 d进制的每位并使每位用空格隔开:”m);for(i=0;i n;i+ )scanf (%d”,&a i) ;for (i=n 1;i=0 ;i )y+= (int)pow(e,j )*ai ; / 强制 类型转换,以免造成 数据丢失 j+;printf (”请输出所得的 10 进制的 结果: ”);printf (%d”,y );printf(n需要转换的进制 M:);scanf( ”d” ,&s);printf (请输出转换成d

9、进制的结果:”,s);DTOM(y , s);return 0;HTOD (int f )/ 十六进制数转换为 十进制数,并转换为其他进制数int bN;printf(”请输入%d进制位数:,m);scanf ( %d,&n );printf( ”请输入 d进制的每位并使每位用空格隔开:,m);for ( i=0 ;in ;i+)scanf (x,bi);for(i=n 1;i =0;i -) y+= (int )pow (f,j) bi;/ 强制类型转换,以免造成 数据丢失j+;printf( ”请输出所得的 10 进制的 结果: );printf( d”,y );printf(n 需要 转

10、换的进制 M:);scanf (” %d, &s);printf( ”请输出转换成d进制的结果:”,s);DTOM (y, s);return 0 ;void main ()printf (”请给定一个需转换的进制 M(2or8or10or16 ):); scanf (%d , m );if(m=2|m=8)/ 二进制和八进制转换成十进制MTOD(m) ;else if(m=16)/ 十六进制转换成十进制/ 十进制转换成其它进制HTOD(m );else if(m=10)printf(请输入一个d进制数:”m); sea nf (” d ”,&x );printf (请输入需要转换成的进制M(

11、2or8or16 ):);seanf( %d ”,&r);printf (”请输出转换成 d进制的结果:,r);DTOM(x,r );printf( ” ;2、运行结果图1 2的进制 M:16any ksy to continue叵 E!Vlfi6HUZUDebugghd 芒炖图1-3图1 4(二)栈1、源代码includeinclude#includevstdlib。h#include math.h #define STACK_INIT_SIZE 100/ 存储空间初始分配量define STACKINCREMENT 10/ 存储空间分配增量int e , m , x,s , t;x 为要转

12、换的十进制数,e为临时用的的int型变量int r,y , i,n;typedef structint *base;/ 栈底int *top ;/ 栈顶int stacksize ;/ 栈容量SqStack ;int InitStack(SqStack &S)/ 构造一个空栈S。 base= (int * )malloc(STACK_INIT_SIZEsizeof (int) )if(!S。 base ) exit (0);/ 存储空间失败S.top=S.base;S。 stacksize=STACK_INIT_SIZE;return 0;int GetTop (SqStack S, int

13、&e) /若栈不为空,则用e返回S的栈顶元素,并返回 0, 否则返回 1if(S。top=S。base) return 1;e=(S。 top 1);return 0 ;int Push (SqStack &S , int e ) /插入元素e为新的栈顶元素if(S。 top-S.base =S.stacksize )/ 栈满,追加存 储空间S.base= ( int * )realloc ( S。 base ,( S.stacksize+STACKINCREMENT)sizeof(int );if( !S.base) return 1 ;/ 存储分配失 败S.top=S.base+S.sta

14、cksize;S。 stacksize+=STACKINCREMENT;S.top+=e ;return 0 ;int Pop (SqStack &S, int &e) /若栈不空,则删除S的栈顶元素,用e返回其值, 并返回 0, 否则返回 1if( S.top=S 。 base) return 1 e=*- S.top;return 0;int StackEmpty(SqStack S )/ 若栈空,则返回 1,否 则返回 0if(S。 top=S 。 base )return 1 ;return 0 ;int DestroyStack (SqStack &S)/ 销毁栈 S,栈 S 不再存

15、在free( S。 base );S。 top=NULL ;/ 防止程序后面不小心使用了 它S.base=S 。 top;return 0;SqStack S;/ 定义栈 S/ 十进制转换成其他 进制的函 数 D2M( )DTOM(int a , int b )while ( a)r=a%b ;if(r 9)r=r+55 ;Push (S, r);/ 压入 栈a/=b;/转换成M进制printf( ”该数转换成 d进制的结果:”,b);while (! StackEmpty(S)Pop(S ,e);/ 弹出栈if(e=65 )printf (%c”,e);elseprintf( d ,e);r

16、eturn 0 ;MTOD ()/ 其他进制转换为十进制的函数 M2D ()char c1000;printf( 请输入需要转换的数的位数:”);scanf (%d ,&n) ;printf( 请输入需要转换的数的每位并用空格隔 开:”);for (i=0 ; i=币1&隔格1B空or用期=4井20=!M魯:1:旳的:舶to ISM y拠成y 需需需8 - 人入入成農仔 sst -图2-1图22该数转换成?进制的结臬池曲Pi*eES Ani/ &y to cantinueKiSS,lM =10 学转谀嘗谥制数聞 碱的逑制数:3 啣的结果:仙020S3回 E:V_A的垃中EH Ahl .exe开

17、隔格空 13 I BM 0 一8|4T 6 1 r 1 0 茁薯4524nu 贩舊:4呂ft=ti 制的矍M:譜on 进数数果穆G 的的彎 瑯.榻諭.另的V S夢要进换也y 需需需10赛an 兀入入成翼仔 込:n亥片青青圭图2-4七、心得体会组员一(黄静南 ) :通过这次软件算法设计,我对研究算法设计的重要性有了更加 深刻的认知 , 算法的选择对解决实际问题的效率有很大的影响,实验使我对设计思想有 了更加深刻的理解,对以后的实验解决方案有了更多的选择 , 开阔了我的设计思路。软 件算法设计是培养学生综合运用所学知识 , 发现,提出,分析和解决实际问题,锻炼实践 能力的重要环节,是对学生实际工作

18、能力的具体训练和考察过程。在实验设计过程中 , 我还发现了很多学习中的盲点,上理论课时认为已经理解的在 程序中运行起来又是另一回事,所以实践与理论结合是学习中非常重要的,尤其是在软 件设计方面。随着科学技术发展的日新月异 , 当今计算机应用在生活中可以说得是无处 不在。而计算机应用与编程相互依存,在学好基础的情况下增加实践是最好的选择 .经过这一次两周完整的成功的编程练习,对我产生的莫大的激励,也让我对编程有 了更大的兴趣。这次的软件算法设计对我们的锻炼很大,让我们学到了老师没法交给我 们的, 也让我们明白程序设计的大体步骤,让我们对我们的专业又有更进一步的了解。 我不仅体会到自己解决问题的乐

19、趣,也体验到了同学合作的美好 . 两周时间说长不长, 说短也不短,我们不停地翻阅资料和讨论,有过迷茫有过喜悦,不过最后我们终于成功 了!满足感油然而生,如果有人问我物质和精神哪个更让人满足,那答案一定是精神 那种感觉只有自己体会了才能懂 . 总之,这次设计程序让我受益良多,我很珍惜像这种 难得的机会组员二 (赵兴凡):通过这次实验设计使我懂得了理论与实际相结合是很重要的,只 有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来 , 从理论中得出结 论, 才能真正为社会服务 ,从而提高自己的实际动手能力和独立思考的能力。 在设计的过 程中遇到问题,这毕竟独立做的,难免会遇到过各种各样的问

20、题,同时在设计的过程中 发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。独立自主固然重要,但是分工合作也必不可少 . 通过这次与同学的合作,了解到自 身的不足 , 与同伴做到了互补。我们选的题目看着简单,但是做起来很难,虽然刚学完 数据结构,期间还是遇到了很多问题 .程序不是一气呵成的, 需要一点一点的修改补充 , 直到可以成功运行出需要的功能。 这次课程设计给了我以后编程莫大的激励, 因为我认为所谓算法通过老师的传授每个人 都只会一点点 , 而课外的东西需要自己去学习。仅靠自己学的那些基础知识是无法编程 的,需要融会贯通并且熟练运用 . 这段时间虽然很不好受,但是我体会到了编程的乐趣, 这使我对自己有了信心。这学期学的数据结构也起到了很大的作用 , 有了数据结构的只 是,加上程序设计技术则对以后对计算机技术的深入学习应该会有很大的帮助。最后 感谢各位老师的教导,感谢老师给我们这次实践的机会。参考文献1 严蔚敏,吴伟民。数据结构(C语言版)。清华大学出版社,20072 陈良银,游洪跃,李伟旭。C语言程序设计(C99版).清华大学出版社,2006(2007 重印)3 谭浩强。C+程序设计(第二版)。清华大学出版社,2011.8课程设计评语课程设计成绩指导教师(签字)年月日

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!