十进制数转换为二进制数

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

十进制数转换为二进制数

设计题目:十进制数转换为二进制数,顾名思义是利用程序将十进制数转换为二进制数。

需求分析:众所周知,计算机是以二进制数的形式进行存储和运算的。本程序就是实现将十进制转化为二进制的功能。在本程序中用到了结构体、栈、指针等相关知识。

概要设计:本程序采用结构体定义,利用栈的相关操作,如:栈的创建,入栈,出栈等,为了克服顺序存储结构的栈可能存在上溢的不足,此程序用链式存储结构实现栈中元素的存储,总体上是由主函数对子函数进行调用来实现功能。当从键盘输入一个数时,首先对其进行判断是否满足大于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若为则空。

主函数模块为:首先数据初始化,定义栈S

main()

{

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之间的十进制数迅速转化为对应的二进制数,即节省了人力又节约了霎时间,给运算带来了方便。但本程序在功能方面还存在缺欠,第一,运算数值范围较小,只能对范围内的十进制整数,不能满足运算需求。第二,运算类型单一,只能对整数进行转换,无法对小数或其它类型进行转换。

附:程序清单:

#include

#include

#define OK 0

#define ERROR -1

#define TRUE 1

#define FALSE 0

typedef 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(!(n>0&&n<=32767));

InitStack(&s);

for(k=n;k>0;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号

相关文档
最新文档