1 / 4
文档名称:

十进制转换八进制算法.doc

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

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

分享

预览

十进制转换八进制算法.doc

上传人:brnpnu31 2021/12/16 文件大小:22 KB

下载得到文件列表

十进制转换八进制算法.doc

相关文档

文档介绍

文档介绍:精品文档,仅供学****与交流,如有侵权请联系网站删除
【精品文档】第 1 页
题目:数制转换问题
需求分析
将十进制数N转换成八进制数是计算机实现计算的基本问题,解决方案很多,其中最简单的方法是除8取余法。
本方案采用顺序栈的方式模拟整个过程。其原理如下:
例子:(1348)10=(2504)8
N N div 8 N mod 8
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()函数组成。
过程中函数调用关系图如下:
详细设计
数据类型定义
struct Sqstack{
int *bottom;
int *top;
int maxsize;
系统主要子程序详细设计
A.建立空栈
int Initsqstack (Sqstack &s){
=(int *)malloc(sizeof (int)*20);
if(){
=;
=20;
return 1;
else return 0;
B.入栈
void Push(Sqstack &s,int e){
*++=e;
C.出栈
void Pop(Sqstack &s,int &e){ //出栈
精品文档,仅供学****与交流,如有侵权请联系网站删除
【精品文档】第 2 页
e=*-- ;
测试分析
源程序清单
#include<iostream>
using namespace std;
struct Sqstack{
int *bottom;
int *top;
int maxsize;
int Initsqstack (Sqstack &s){ //建立空栈
=(int *)malloc(sizeof (int)*20);
if(){
=;
=20;
return 1;
else return 0;
void Push(Sqstack &s,int e){ //入栈
*++=e;
void Pop(Sqstack &s,int &e){ //出栈
e=*-- ;
int StackEmpty(Sqstack &s){ //判断是否为空栈