1 / 6
文档名称:

十进制转换八进算法.docx

格式:docx   大小:107KB   页数:6页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

十进制转换八进算法.docx

上传人:weizifan339913 2019/1/18 文件大小:107 KB

下载得到文件列表

十进制转换八进算法.docx

相关文档

文档介绍

文档介绍:题目:数制转换问题需求分析将十进制数N转换成八进制数是计算机实现计算的基本问题,解决方案很多,其中最简单的方法是除8取余法。本方案采用顺序栈的方式模拟整个过程。其原理如下:例子:(1348)10=(2504)8N Ndiv8 Nmod8 1348 168 4 168 21 0 21 2 5 2 0 2 从中可以看出,最先产生的余数4是转换加过的最低位,这正好符合栈的“后进先出”的特性。功能:从键盘输入任意一个非负十进制整数,输出与其等值的八进制数;若输入一个负数,则显示输入错误,请重新输入。测试数据:(1348)10=(2504)8,(0)10=(0)8,(-1234)10输入数据错误。概要设计定义顺序栈类型,由键盘输入非负十进制整数N,执行以下循环操作:N%8入栈,N=N/8,直至N=0。主要函数由建立空栈Initsqstack()、入栈Push()、出栈Pop()和main()函数组成。 过程中函数调用关系图如下:详细设计数据类型定义structSqstack{ int*bottom; int*top; intmaxsize;};(Sqstack&s){ =(int*)malloc(sizeof(int)*20); if(){ =; =20; return1; } elsereturn0;}(Sqstack&s,inte){ *++=e;}(Sqstack&s,int&e){ //出栈 e=*--;}测试分析源程序清单#include<iostream>usingnamespacestd;structSqstack{ int*bottom; int*top; intmaxsize;};intInitsqstack(Sqstack&s){ //建立空栈 =(int*)malloc(sizeof(int)*20); if(){ =; =20; return1; } elsereturn0;}voidPush(Sqstack&s,inte){ //入栈 *++=e;}voidPop(Sqstack&s,int&e){ //出栈 e=*--;}intStackEmpty(Sqstack&s){ //判断是否为空栈 if(==) return1; elsereturn0;}intmain(){ Sqstacks; intN,e; Initsqstack(s); cout<<"请输入一个非负十进制整数:"<<endl; cin>>N; if(N<0) cout<<"输入数据错误,请重新输入:"<<endl; elseif(N==0) cout<<"输出对应的八进制数:0"<<endl; else{ while(N){ Push(s,N%8); N=N/8; } cout<<"输出对应的八进制数:"<<endl; while(!StackEmpty(s)){ Pop(s,e); cout<<e; } } cout<<endl; return