您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 综合/其它 > 上海交大 数制转换问题
实验报告数制转换问题1.问题描述对于输入的任意一个非负十进制整数,输出与其等值的其他进制数(二进制、八进制或十六进制)。2.任务要求(1)建立模型,确定存储结构;(2)对任意十进制数,实现进制转换问题。3.实验指导•(1) 实验类型:设计实验。本实验要求同学们针对“数制转换”这个经典的问题,应用栈的存储结构,自己设计一个方案,并上机实现。此实验的目的是培养学生对数据结构的简单应用能力。•(2) 预备知识:栈的基本定义、栈的基本操作算法、栈的存储结构。4.实验小结 #includestdio.h#includemalloc.h//malloc#includemath.h//含有overflow#defineS_SIZE100//栈的空间⼤⼩typedefstructSqStack{inttop;//栈顶intmaxtop;//栈最⼤的存储空间int*stack;}SqStack;//初始化空栈voidInitStack(SqStack&S){S.stack=(int*)malloc(S_SIZE*sizeof(int));//动态申请⼀维数组S.maxtop=S_SIZE;S.top=-1;}//判断空栈intStackEmpty(SqStack&S){if(S.top==-1)return1;elsereturn0;}//判断栈满intStackFull(SqStack&S){if(S.top==S.maxtop)return1;elsereturn0;}//进栈voidpush(SqStack&S,intx){if(StackFull(S))printf(overflow\n);S.stack[++S.top]=x;}//出栈intpop(SqStack&S){intx;if(StackEmpty(S))printf(underflow\n);x=S.stack[S.top];S.top--;returnx;}//进制转化函数voidconvert(SqStack&S,intN,intn){inti,x;do{push(S,N%n);N/=n;}while(N!=0);while(!StackEmpty(S)){x=pop(S);if(x9)//⼗六进制时输出字母{x=x+55;printf(%c,x);}elseprintf(%d,x);}printf(\n);}//清空栈voidStackClear(SqStack&S){S.top=-1;} intmain(){intn,N;//要转换成的进制数和要转换的数SqStacks;scanf(%d%d,&n,&N);InitStack(s);printf(%d转换为%d进制后为:\n,n,N);convert(s,n,N);StackClear(s);return0; }
本文标题:上海交大 数制转换问题
链接地址:https://www.777doc.com/doc-4602643 .html