用堆栈怎样实现进制转换?解决方案
用堆栈怎样实现进制转换?
例如十进制向八进制的数制转换 (1348)10=(2504)8,其运算过程如下:
N N div 8 N mod 8
1348 168 4
168 21 0
21 2 5
2 0 2
请问怎样利用堆栈用上述方法实现十进制向三进制的数制转换?
------解决方案--------------------
用系统堆栈就简单了直接递归:
void func(int dividant, int rank);
int main(int argc, char* argv[])
{
func(100,16);
return 0;
}
void func(int dividant, int rank)
{
int temp;
temp=dividant/rank;
if(temp!=0){
func(temp,rank);
printf( "%d ",dividant%rank);
return;
}
printf( "%d ",dividant);
}
例如十进制向八进制的数制转换 (1348)10=(2504)8,其运算过程如下:
N N div 8 N mod 8
1348 168 4
168 21 0
21 2 5
2 0 2
请问怎样利用堆栈用上述方法实现十进制向三进制的数制转换?
------解决方案--------------------
用系统堆栈就简单了直接递归:
void func(int dividant, int rank);
int main(int argc, char* argv[])
{
func(100,16);
return 0;
}
void func(int dividant, int rank)
{
int temp;
temp=dividant/rank;
if(temp!=0){
func(temp,rank);
printf( "%d ",dividant%rank);
return;
}
printf( "%d ",dividant);
}