用栈实现进制转换.docx

上传人:j****9 文档编号:2284404 上传时间:2019-05-05 格式:DOCX 页数:4 大小:30.87KB
下载 相关 举报
用栈实现进制转换.docx_第1页
第1页 / 共4页
用栈实现进制转换.docx_第2页
第2页 / 共4页
用栈实现进制转换.docx_第3页
第3页 / 共4页
用栈实现进制转换.docx_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、用栈实现进制转换学院、专业:应用数学学院 10 信计二班 姓名:林桂鑫学 号 :3110008332目标:利用栈将十进制数字转换分别转换为二进制、八进制、十六进制数字。所遇问题: 1:进行进制转换时所用的数学原理;2:要为用户实现怎样的使用界面;问题的解决: 1:进行选择时,应用了除商取余法;2:分别构造了将十进制转换为二进制、八进制、十六进制三个函数,再主函数 中应用 switch 函数进行选择,用户可选择将所输入的十进制数字转换为二进制、八进制或十六进制;解题过程:1:对栈的顺序存储进行表示:struct SqStack SElemType *base; /栈底指针,空栈时其值为 NULL

2、SElemType *top; /栈顶指针int stacksize; /当前已分配的存储空间;2:输入编写程序所需要调用的关于顺序栈的基本操作:Status InitStack(SqStack if(!S.base) exit(OVERFLOW); S.top=S.base;S.stacksize=STACK_INIT_SIZE; return OK; ;Status Push(SqStack if(!S.base) exit(OVERFLOW);S.top=S.base+S.stacksize;S.stacksize+=STACKINCREMENT; *S.top+=e; return O

3、K;Status GetTop(SqStack S,SElemType else e=*(S.top-1);return OK;Status StackEmpty(SqStack S)if (S.top=S.base) return TRUE;else return FALSE;Status Pop(SqStack else e=*(-S.top);return OK;Status DestroyStack(SqStack s.base=NULL; s.top=NULL;s.stacksize=0;return OK;Status ClearStack(SqStack return OK;in

4、t stackLength(SqStack S)return S.top-S.base;Status StackTraverse(SqStack S,Status(*visit)(SElemType)while(S.topS.base)visit(*S.base+);printf(“n“);return OK;3:构造三个分别解决将十进制转换为二进制、八进制、十六进制的函数:void Decimal_Binary2 ( ) int N;SqStack S; /定义栈结构 SInitStack ( S ) ; /初始化栈 Sscanf(“%d“, /输入十进制正整数while (N) Push(

5、 S , N%2 ); /余数入栈N/=2; /被除数 data 整除以 2,得到新的被除数while ( !StackEmpty(S) ) /依次从栈中弹出每一个余数,并输出之 Pop( S , N ); printf(“%d“, N );void Decimal_Binary8 ( )int N;SqStack S; /定义栈结构 SInitStack ( S ) ; /初始化栈 Sscanf(“%d“, /输入十进制正整数while (N) Push( S , N%8 ); /余数入栈N/=8; /被除数 data 整除以 2,得到新的被除数while ( !StackEmpty(S)

6、) /依次从栈中弹出每一个余数,并输出之 Pop( S , N ); printf(“%d“, N );void Decimal_Binary16 ( ) int N;SqStack S; /定义栈结构 SInitStack ( S ) ; /初始化栈 Sscanf(“%d“, /输入十进制正整数while (N) Push( S , N%16 ); /余数入栈N/=16; /被除数 data 整除以 2,得到新的被除数while ( !StackEmpty(S) ) /依次从栈中弹出每一个余数,并输出之 Pop( S , N ); printf(“%d“, N );4:在主函数中应用 swi

7、tch 函数进行操作选择:void main() int command;printf(“请对进制转换进行选择 1 转换为二进制 2 转换为八进制 3 转换为十六进制 n,选择完毕后请输入你要转换的数字“);cincommand;switch (command)case 1:Decimal_Binary2 ( );break;case 2:Decimal_Binary8 ( );break;case 3:Decimal_Binary16 ( );break;default:cout“别乱来“;程序测试结果:程序运行后,分别输入 1、2 、3 后输入十进制数可依次完成将十进制数转换为二进制、八进制、十六进制数的操作,我所输入的测试数据为100,结果分别呈现:1100100、144 、100。当输入的操作不符合要求时,显示“别乱来” ,截图如下:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。