- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
十进制数转换为进制数
PAGE 第 PAGE 7 页 共 NUMPAGES 7 页十进制数转换为二进制数设计题目:十进制数转换为二进制数,顾名思义是利用程序将十进制数转换为二进制数。需求分析:众所周知,计算机是以二进制数的形式进行存储和运算的。本程序就是实现将十进制转化为二进制的功能。在本程序中用到了结构体、栈、指针等相关知识。概要设计:本程序采用结构体定义,利用栈的相关操作,如:栈的创建,入栈,出栈等,为了克服顺序存储结构的栈可能存在上溢的不足,此程序用链式存储结构实现栈中元素的存储,总体上是由主函数对子函数进行调用来实现功能。当从键盘输入一个数时,首先对其进行判断是否满足大于0而小于32767,若满足,则将其对2求余并将余数入栈,对除2所得的商继续求余入栈,如此循环直至商为0,再将栈中的元素顺序输出既可。详细设计:首先定义链栈的表结点,其中data为结点数据,*next为结点指针,再定义了栈顶指针为*top,栈中的元素个数用length表示,对栈进行初始化s-top=null栈顶指针为空,s-length=0元素个数为0,编写子程序:元素e入栈。开辟结点P,并将其赋值P->data=e,修改指针P->next=s-top;P-top=P;长度增1,s-length++;出栈。判断栈是否为空,空返回ERROR,非空,将栈顶指针赋给P,数值赋给e(*e=p-data)修改指针S->top=P-next;s-length――元素个数减1,删除栈顶结点。判栈空即看栈顶元素指针S->top是否为NULL若为则空。主函数模块为:首先数据初始化,定义栈Smain(){ int n,k;//定义整形变量 STACK S; //定义栈S Do{ 输入数据n;}while(对n判断是否满足条件)initstack(S);//创建一个空栈for() {//将n循环对2求余直至n为零}while(pop(S,k)!=ERROR)//对栈判断并循环输出//函数结束 }系统运行说明:本程序经TC编译后,可在wondiows环境下运行。经测试可将输入满足条件的十进制数转换为二进制数。总结分析:本程序可将0到32767之间的十进制数迅速转化为对应的二进制数,即节省了人力又节约了霎时间,给运算带来了方便。但本程序在功能方面还存在缺欠,第一,运算数值范围较小,只能对范围内的十进制整数,不能满足运算需求。第二,运算类型单一,只能对整数进行转换,无法对小数或其它类型进行转换。附:程序清单:#includestdio.h#includestdlib.h#define OK 0 #define ERROR -1#define TRUE 1#define FALSE 0typedef struct Snode{ int data; struct Snode *next;}Snode;typedef struct{int length;Snode *top;}STACK;void InitStack(STACK *s){ s-top=NULL; s-length=0;}int push(STACK *s,int e){ Snode *p;p=(Snode*)malloc(sizeof(Snode));if(!p)return ERROR;p-data=e;p-next=s-top;s-top=p;s-length++;return OK;}int Pop(STACK *s,int *e){ Snode *p;if(s-top==NULL)return ERROR;p=s-top;*e=p-data;s-top=p-next;s-length--;free(p);return OK;}int Empty(STACK s){ if(s.top==NULL)return TRUE;return FALSE;}void main(){ int n,k;STACK s;do{printf(put into data:\n);scanf(%d,n);}while(!(n0n=32767));InitStack(s);for(k=n;k0;k=k/2)if(push(s,k%2)==ERROR){ printf(push stack error!);return;}while(Pop(s,k)!=ERROR)printf(%d,k);printf(\n);}数据结构设计报告十进制与二进制的转换计算机信息与工程学院计02-1班刘 君09号
原创力文档


文档评论(0)