用栈实现进制转换_第1页
用栈实现进制转换_第2页
用栈实现进制转换_第3页
用栈实现进制转换_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

使用堆栈实现二进制转换大学,专业:应用数学大学10新界2班名称:林贵信学习编号:3110008332目标:使用堆栈将十进制数分别转换为二进制、八进制和十六进制数。问题:1:用于二进制转换的数学原理;2:如何为用户使用界面;解决问题: 1:选择时应用份额去除方法;2:将十进制数转换为二进制、八进制和十六进制三个函数,然后从基本函数应用switch函数并选择此函数,可以将输入的十进制数转换为二进制、八进制或十六进制数。故障排除流程:1:堆栈的顺序存储表示法:StructsqstackSElemType * base/堆栈底部的指针,空堆栈的值为NULLSElemType * top/堆栈顶部指针Int stacksize/当前分配的存储空间2:输入程序应为连续堆栈调用的默认操作。Status InitStack(SqStack S) s . base=(s elem type *)malloc(stack _ init _ size * size of(s elem type);If(!s . base)exit(OVERFLOW);s . top=s . base;S.stacksize=STACK _ INIT _ SIZEReturn OK状态推送(SqStack S,SElemType e)If (S.top-S.base=S.stacksize)S.base=(SElemType *)realloc(s.base,(s . stack size stack increment)* size of(s elemtype);If(!s . base)exit(OVERFLOW);s . top=s . base s . stacksize;s . stack size=stack increment;* s . top=e;Return OKStatus gettop (sqstacks,s elemtype e)If (S.top=S.base)exit(ERROR);else=*(s . top-1);Return OKStatus StackEmpty(SqStack S)if(s . top=s . base)return TRUE;Else return FALSE状态点(SqStack S,SElemType e)If (S.top=S.base)exit(ERROR);else=*(-s . top);Return OK状态DestroyStack(SqStack s) free(s . base);S.base=NULLS.top=NULLs . stacksize=0;Return OKStatus ClearStack(SqStack S) s . top=s . base;Return OKInt stackLength(SqStack S)return s . top-s . base;status stack traverse(sq stack,status (* visit) (s elemtype)While(S.topS.base)visit(* s . base);printf(“ n”);Return OK3:构造三个函数,每个函数将十进制数转换为二进制、八进制和十六进制数。Void Decimal_Binary2()int N;sq stack S;/堆叠结构定义sinit stack(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;sq stack S;/堆叠结构定义sinit stack(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;sq stack S;/堆叠结构定义sinit stack(S);/初始化堆栈scanf(“% d”,N);/输入十进制正整数While (N)Push(S,N);/堆叠剩馀n/=16;/被除数data除以2以获得新被除数While(!StackEmpty(S)/从堆栈中依次弹出其馀每个元素并输出Pop(S,N);printf(“% d”,N);4:在默认函数中,应用switch函数以选择行为:Void main() int commandPrintf(选择1作为二进制转换。将2转换为八进制数将3转换为十六进制数n选择此选项,然后输入要转换的数字);Cincommand交换机(命令)case 13360 decimal _ binary 2();Breakcase 23360 decimal _ binary 8 8();Breakcase : decimal _ binary 16();BreakDefault:cout“不要乱动”;程序测试结果:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论