欢迎来到天天文库
浏览记录
ID:33648114
大小:101.92 KB
页数:5页
时间:2019-02-28
《十进制转换八进制算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、题目:数制转换问题1.需求分析将十进制数N转换成八进制数是计算机实现计算的基本问题,解决方案很多,其中最简单的方法是除8取余法。1)本方案采用顺序栈的方式模拟整个过程。其原理如下:例子:(1348)10=(2504)8NNdiv8Nmod8134816841682102125202从中可以看出,最先产生的余数4是转换加过的最低位,这正好符合栈的“后进先出”的特性。2)功能:从键盘输入任意一个非负十进制整数,输出与其等值的八进制数;若输入一个负数,则显示输入错误,请重新输入。3)测试数据:(1348)
2、10=(2504)8,(0)10=(0)8,(-1234)10输入数据错误。2.概要设计定义顺序栈类型,由键盘输入非负十进制整数N,执行以下循环操作:N%8入栈,N=N/8,直至N=0。主要函数由建立空栈Initsqstack()、入栈Push()、出栈Pop()和main()函数组成。过程中函数调用关系图如下:3.详细设计1)数据类型定义structSqstack{int*bottom;int*top;intmaxsize;};2)系统主要子程序详细设计A.建立空栈intInitsqstack(S
3、qstack&s){s.bottom=(int*)malloc(sizeof(int)*20);if(s.bottom){s.top=s.bottom;s.maxsize=20;return1;}elsereturn0;}B.入栈voidPush(Sqstack&s,inte){*s.top++=e;}C.出栈voidPop(Sqstack&s,int&e){//出栈e=*--s.top;}1.测试分析1.源程序清单#includeusingnamespacestd;struct
4、Sqstack{int*bottom;int*top;intmaxsize;};intInitsqstack(Sqstack&s){//建立空栈s.bottom=(int*)malloc(sizeof(int)*20);if(s.bottom){s.top=s.bottom;s.maxsize=20;return1;}elsereturn0;}voidPush(Sqstack&s,inte){//入栈*s.top++=e;}voidPop(Sqstack&s,int&e){//出栈e=*--s.to
5、p;}intStackEmpty(Sqstack&s){//判断是否为空栈if(s.top==s.bottom)return1;elsereturn0;}intmain(){Sqstacks;intN,e;Initsqstack(s);cout<<"请输入一个非负十进制整数:"<>N;if(N<0)cout<<"输入数据错误,请重新输入:"<6、N=N/8;}cout<<"输出对应的八进制数:"<
6、N=N/8;}cout<<"输出对应的八进制数:"<
此文档下载收益归作者所有