资源描述:
《数制转换实验报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、1.实验题目1、数制转换问题[问题描述]将十进制数N和其它d进制数的转换是计算机实现计算的基本问题,其解决方案很多,其中最简单方法基于下列原理:即除d取余法。例如:(1348)10=(2504)8NNdiv8Nmod8134816841682102125202从中我们可以看出,最先产生的余数4是转换结果的最低位,这正好符合栈的特性即后进先出的特性。所以可以用顺序栈來模拟这个过程。2.需求分析1.对于键盘输入的任意一个非负的十进制整数,打印输出与其等值的八进制数。由于上述的计算过程是从低位到高位顺序产
2、生的八进制数的各个数位,而打印输出,一般来说应从高位到地位进行,恰好和计算过程相反。因此可以先将计算过程屮得到的八进制数的各位进栈,待相对应的八进制数的各位均产生以后,再使其按顺序出栈,并打印输出。即得到了与输入的十进制数相对应的八进制数。2.数据测试。1)输入十进制数2000,输出相应的八进制数。2)输入十进制数1234,输出相应的八进制数。3.概要设计1)为了实现上述程序功能,需要定义栈的抽象数据类型:1、为实现上述程序功能,应以有序链表表示集合。ADTstack{数据对象:D二{久a戶刃,心1
3、,2,…,n,n>0}数据关系:R产{〈°1,0・〉
4、Q“a$D,i=2,…,n}基本操作:Initstdck(&s)操作结果:构造一个空的栈s.push(&s,e)初始条件:栈S已存在操作结果:插入元素e作为栈顶元素。pop(&s,e)初始条件:栈S已存在,且非空操作结果:删除S的栈顶元素,并用e返回。2)本程序包含3个函数调用模块voidinitstack(sqstack&S)voidpush(sqstack&S,inte)voidpop(sqstack&S,int&e)1.详细设计实现概要设计
5、中定义的所有的数据类型,对每个操作给出伪码算法。对主程序和其他模块也都需要写出伪码算法。一.源程序文件名清单:Stdio.II//主程序Malloc.H//动态存储分配实现单元^defineSTACK_IN1T_SIZE10#defineSTACKINCREMENT100二.结构类型构造typedefstructfint*base;int*top;intstacksize;}sqstack;三.基本函数操。1.voidinitstack(sqstack&S){S.base=(int*)malloc(
6、STACK」NIT_SIZE*sizeof(STACKINCREMENT)*sizeof(int));S.top=S.base;S.stacksize=STACK_INIT_SIZE;return;}//initstack2・voidpush(sqstack&S,inte){if(S.top-S.base>=S.stacksize){S.base=(int*)realloc(S.base?(S.stacksize+STACKINCREMENT)*sizeof(int));if(!S.base)pri
7、ntf(H储存分配失败");S.top=S.base+S.stacksize;S.stacksize=STACKINCREMENT;}*S.top++=e;return;}3・voidpop(sqstack&S,int&e){if(S.top==S.base)pnntf(H错“);e=*-S.top;return;}一.主函数voidmain(){intm;sqstacks;inte;initstack(s);printf("请输入一个数:");scanf("%d,,/&m);while(m){
8、push(s,m%8);〃在栈屮插入除八后的余数部分m=m/S;}while(s.top!=s.base){pop(s,e);〃弹th栈顶的元素printf("%dnze);}}1.调试分析略2.使用说明1、本试验使用的运行软件是VC++6.0。2、进入演示程序后即显示文本方式的用户界面:厂•E:ProgramFilesMicrosoftVisualStudioM请输入一个数:3、输入需要转化的十进制数。3.测试结果1.输入2000得到的结果为20003720Pressanykeytocont
9、inue2输入1234得到结果为;2、回文判断[问题描述]试写一个算法,判断依次读入的一个以@为结束符的字母序列,是否为形如'序列1&序列2,模式的字符序列。其屮序列1和序列2中都不含字符且序列2是序列1的逆序列。例如,‘a+b&b+a'是属该模式的字符序列,而'1+3&3—1'则不是。1.需求分析1.对于键盘输入的任意一个@为结束符的字母序列,是否为形如'序列1&序列2'模式的字符序列。判断是否符合要求的模式;并输出判断的结果。2.数据测试。1)输入qwer&rew