免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
_用栈实现进制转换学院、专业:应用数学学院10信计二班 姓名:林桂鑫学 号 :3110008332目标:利用栈将十进制数字转换分别转换为二进制、八进制、十六进制数字。所遇问题: 1:进行进制转换时所用的数学原理; 2:要为用户实现怎样的使用界面;问题的解决: 1:进行选择时,应用了除商取余法; 2:分别构造了将十进制转换为二进制、八进制、十六进制三个函数,再主函数 中应用switch函数进行选择,用户可选择将所输入的十进制数字转换为二进制、八进制或十六进制;解题过程:1:对栈的顺序存储进行表示:struct SqStack SElemType *base; /栈底指针,空栈时其值为NULL SElemType *top; /栈顶指针 int stacksize; /当前已分配的存储空间 ;2:输入编写程序所需要调用的关于顺序栈的基本操作:Status InitStack(SqStack &S) S.base = (SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType); if(!S.base) exit(OVERFLOW); S.top=S.base; S.stacksize=STACK_INIT_SIZE; return OK; ;Status Push(SqStack &S,SElemType e) if (S.top-S.base=S.stacksize) S.base=(SElemType *)realloc (S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType); if(!S.base) exit(OVERFLOW); S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT; *S.top+=e; return OK;Status GetTop(SqStack S,SElemType &e) if (S.top=S.base) exit(ERROR); else e=*(S.top-1); return OK;Status StackEmpty(SqStack S) if (S.top=S.base) return TRUE; else return FALSE; Status Pop(SqStack &S,SElemType &e) if (S.top=S.base) exit(ERROR); else e=*(-S.top); return OK;Status DestroyStack(SqStack &s)free(s.base);s.base=NULL; s.top=NULL;s.stacksize=0;return OK;Status ClearStack(SqStack &S)S.top=S.base;return OK;int 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; /定义栈结构S InitStack ( S ) ; /初始化栈S scanf(%d,&N); /输入十进制正整数 while (N) Push( S , N%2 ); /余数入栈 N/=2; /被除数data整除以2,得到新的被除数 while ( !StackEmpty(S) ) /依次从栈中弹出每一个余数,并输出之 Pop( S , N ); printf(%d, N ); void Decimal_Binary8 ( )int N; SqStack S; /定义栈结构S InitStack ( S ) ; /初始化栈S scanf(%d,&N); /输入十进制正整数 while (N) Push( S , N%8 ); /余数入栈 N/=8; /被除数data整除以2,得到新的被除数 while ( !StackEmpty(S) ) /依次从栈中弹出每一个余数,并输出之 Pop( S , N ); printf(%d, N ); void Decimal_Binary16 ( ) int N; SqStack S; /定义栈结构S InitStack ( S ) ; /初始化栈S scanf(%d,&N); /输入十进制正整数 while (N) Push( S , N%16 ); /余数入栈 N/=16; /被除数data整除以2,得到新的被除数 while ( !StackEmpty(S) ) /依次从栈中弹出每一个余数,并输出之 Pop( S , N ); printf(%d, N ); 4:在主函数中应用switch函数进行操作选择: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后输入十进制数可依次完成
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026下半年初中地理教资面试生物多样性易错题附带解析
- 2026下半年初中生物教资面试植物生长题库
- 九年级化学酸的化学性质
- 叶轮机械原理第三章
- 财会岗事业单位结构化面试高频题题库含答案
- 《现代汉语》第四章-词汇-练习(有答案)分析
- 《语文高考备考》课件
- 心理健康辅导员培训基础心理学
- 公共行政学第八章行政绩效
- 福州市2027年中考数学模拟预测试卷(含答案解析)
- 2024年重庆市巴南区社区工作者招聘真题
- 2025年下半年广州市南沙区第二次招考事业单位工作人员易考易错模拟试题(共500题)试卷后附参考答案
- (正式版)DB41∕T 2916-2025 《建设占用耕地耕作层再利用操作规程》
- 瑞幸咖啡财务舞弊案例分析
- B超室感控知识培训内容课件
- 年利用 5 万吨退役锂电池资源循环项目环境影响报告书
- 员工福利管理办法
- 马工程教材刑法分论课件
- 【公开课】乙醇++说课课件+-2024-2025学年高一下学期化学人教版(2019)必修第二册
- 2025吉林银行笔试考试题目及答案
- 2025团员考试试题及答案
评论
0/150
提交评论