资源描述
数制转换 实验报告实验报告实验名称:数制转换班级:信管 131姓名:学号:同实验者:实验时间:成绩:指导老师:一、实验目的:将一个整数十进制数转换成相应的 d 进制数(小数部分有精确度的要求)二、实验设备及主要内容一 实验题目:数制转换,将一个整数十进制数转换成相应的 d 进制数 二 需求分析p :(1)d 的取值从键盘上输入,可以是 2,8,16 三种情况。(2)十进制数可以是从键盘上输入的任意一个。(3)演示程序以用户和计算机的对话方式执行。(4)程序编写在 VC 环境下编译运行概要设计:基本操作:StackInit(sqstack _s)操作结果:构造一个空栈Push(sqstack _s,int e)操作结果:将元素 e 压入到栈中Pop(sqstack _s,int e)操作结果:栈中 e 中出栈 conversion(sqstack _s)操作结果:转换数值,以目标进制输出本程序包含 5 个函数: 主函数 main 构造空栈函数 StackInit(sqstack _s) 压入栈函数 Push(sqstack _s,int e) 出栈函数 Pop(sqstack _s,int e) 判断栈是否为空 stackempty(sqstack _s) 转换函数 conversion(sqstack _s) 详细设计:实现概要设计中定义的所有的数据类型,对每个操作给出伪码算法。对主程序和其他模块也都需要写出伪码算法。int StackInit(sqstack _s) int Push(sqstack _s,int e) int Pop(sqstack _s,int e)int stackempty(sqstack _s) int conversion(sqstack _s) 详细设计:#include #include #include #define stack_init_size 100#define stackincrement 10typedef struct sqstackint _base;int _top;int stacksize; sqstack;int StackInit(sqstack _s)s-base=(int _)malloc(stack_init_size _sizeof(int);if(!s-base)return 0;s-top=s-base;s-stacksize=stack_init_size;return 1;int Push(sqstack _s,int e)if(s-top-s-base=s-stacksize)s-base=(int _)realloc(s-base,(s-stacksize+stackincrement)_sizeof(int);if(!s-base)return 0;s-top=s-base+s-stacksize;s-stacksize+=stackincrement;_(s-top+)=e;return e;int Pop(sqstack _s,int e)if(s-top=s-base)return 0;e=_-s-top;return e;int stackempty(sqstack _s) if(s-top=s-base)return 1;elsereturn 0;int conversion(sqstack _s)int n,e=0,flag=0;printf(“输入要转化的十进制数:n”);scanf(“%d”,n);printf(“要转化为多少进制:2 进制、8 进制、16 进制填数字!n”);scanf(“%d”,flag);printf(“将十进制数%d 转化为%d 进制是:n”,n,flag);while(n) Push(s,n%flag);n=n/flag;while(!stackempty(s)e=Pop(s,e);if(e9)printf(“%c”,e+55);else printf(“%d”,e); int mainsqstack s;StackInit(s);conversion(s);return 0;调试分析p :输入简单几组数字判断结果是否正确 使用说明:按照提示输入 测试结果:输入 8进制 2 输出 1000; 输入 160 进制 16 输出 A 输入 8 进制 8 输出 1第 7 页 共 7 页
展开阅读全文