【第六周 项目4 - 数制转换】
2016-10-20 11:01
337 查看
把十进制的整数转换为二至九之间的任一进制数输出。请利用栈设计算法,并实现程序。
提示:要转换为r进制,则原来的数逐次除以基数r(除完之后用商再除),直到商为0,得到的一系列余数的逆序就是转换结果。这里的“逆序”,意味着后产生的余数,会先输出,后进先出,栈的机会来了……
解法:头文件sqstack.h请见[顺序栈算法库],使用链栈也可以。
注:为实现本项目苈能,请将sqstack.h中的ElemType由char改为int,即
改为:
运行截图
提示:要转换为r进制,则原来的数逐次除以基数r(除完之后用商再除),直到商为0,得到的一系列余数的逆序就是转换结果。这里的“逆序”,意味着后产生的余数,会先输出,后进先出,栈的机会来了……
解法:头文件sqstack.h请见[顺序栈算法库],使用链栈也可以。
#include <stdio.h> #include "sqstack.h" void MultiBaseOutput (int number,int base) { //假设number是非负的十进制整数,输出等值的base进制数 int i; SqStack *S; InitStack(S); while(number) //从右向左产生base进制的各位数字,并将其进栈 { Push(S,number%base); //将将余数进栈 number/=base; } while(!StackEmpty(S)) //栈非空时退栈输出 { Pop(S, i); printf("%d",i); } } int main() { MultiBaseOutput(10, 2); return 0; }
注:为实现本项目苈能,请将sqstack.h中的ElemType由char改为int,即
typedef char ElemType;
改为:
typedef int ElemType;
运行截图