资源描述
如有你有帮助,请购买下载,谢谢!
十进制数转换为二进制数
设计题目:十进制数转换为二进制数,顾名思义是利用程序将
十进制数转换为二进制数。
需求分析:众所周知,计算机是以二进制数的形式进行存储和
运算的。本程序就是实现将十进制转化为二进制的功能。在本程
序中用到了结构体、栈、指针等相关知识。
概要设计:本程序采用结构体定义,利用栈的相关操作,如:
栈的创建,入栈,出栈等,为了克服顺序存储结构的栈可能存在
上溢的不足,此程序用链式存储结构实现栈中元素的存储,总体
上是由主函数对子函数进行调用来实现功能。当从键盘输入一个
数时,首先对其进行判断是否满足大于 0 而小于 32767,若满足,
则将其对 2 求余并将余数入栈,对除 2 所得的商继续求余入栈,
如此循环直至商为 0,再将栈中的元素顺序输出既可。
详细设计:首先定义链栈的表结点,其中 data 为结点数据,*next
为结点指针,再定义了栈顶指针为*top,栈中的元素个数用 length
表示,对栈进行初始化 s->top=null 栈顶指针为空,s->length=0 元
素个数为 0,编写子程序:
一, 元素 e 入栈。开辟结点 P,并将其赋值 P->data=e,修改
1页
如有你有帮助,请购买下载,谢谢!
指针 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 为零
2页
如有你有帮助,请购买下载,谢谢!
}
while(pop(&S,&k)!=ERROR)
//对栈判断并循环输出
//函数结束
}
系统运行说明:本程序经 TC 编译后,可在 wondiows 环境下运
行。经测试可将输入满足条件的十进制数转换为二进制数。
总结分析:本程序可将 0 到 32767 之间的十进制数迅速转化为
对应的二进制数,即节省了人力又节约了霎时间,给运算带来了
方便。但本程序在功能方面还存在缺欠,第一,运算数值范围较
小,只能对范围内的十进制整数,不能满足运算需求。第二,运
算类型单一,只能对整数进行转换,无法对小数或其它类型进行
转换。
附:程序清单:
#include<stdio.h>
#include<stdlib.h>
#define OK 0
#define ERROR -1
#define TRUE 1
3页
展开阅读全文