注册 登录
编程论坛 数据结构与算法

求助: 利用栈,将十进制数转换成八进制的数

鱼鱼啦啦 发布于 2008-06-26 14:51, 7709 次点击
那位高手可以帮忙解决这个问题啊?
  十分感谢!!


利用栈,将十进制数转换成八进制的数
例:十进制转换成八进制:(66)10=(102)8
66/8=8 余 2
8/8=1 余 0
1/8=0 余 1
结果为余数的逆序:102
7 回复
#2
zjl1382008-06-26 15:35
任意进制转换.

/*****************************************************************
** HighlightCodeV3.0 software by yzfy(雨中飞燕) http:// **
*****************************************************************/
#include<iostream>
using namespace std;
#define stacksize 100   
typedef int DataType;   
   
typedef struct   
{   
   
DataType data[stacksize];   
    int top;   
}Stack;   
   
void Initial(Stack *s)   
{   
   
s->top=-1;   
}   
   
int Isempty(Stack *s)   
{   
   
return s->top==-1;   
}   
   
int IsFull(Stack *s)   
{   
   
return s->top==stacksize-1;       
}   
   
void Push(Stack *s,DataType x)   
{   
   
if(IsFull(s))   
    {   
        
cout<<"栈上溢";   
        exit(1);   
    }   
   
s->data[++s->top]=x;   
}   
   
DataType Pop(Stack *s)   
{   
   
if(Isempty(s))   
    {   
        
cout<<"栈为空";   
        exit(1);   
    }   
   
   
return s->data[s->top--];   
}   
   
   
//进制转换函数   
   
void Conversion(int i,int j)   
{     
   
int k;   
    Stack s;   
    Initial(&s);   
    while(i)   
    {   
        
Push(&s,i%j);   
        i=i/j;   
    }   
   
while(!Isempty(&s))   
    {   
        
k=Pop(&s);   
        cout<<k;   
    }   
   
cout<<endl;
}   
   
DataType top(Stack *s)   
{   
   
if(Isempty(s))   
    {   
        
cout<<"栈为空";   
        exit(1);   
    }   
   
return s->data[s->top];   
    }   
   
   
int main(void)   
{  
   
int m,n;
    cin>>m>>n;
    Conversion(m,n);   
    system("pause");
    return 0;
}   


[[it] 本帖最后由 zjl138 于 2008-6-26 15:39 编辑 [/it]]
#3
zjl1382008-06-26 15:45
再给个递归的吧,以前写的.

#include<iostream>   
using namespace std;   
void conversion(int a)   
{   
   if (!a) return;   
   conversion(a/8);   
   cout<<a%8;   
}   
int main(void)   
{   
     int a;   
     cout<<"输入你要转换的数"<<endl;   
     cin>>a;   
     conversion(a);   
     cout<<endl;   
     system("pause");   
     return   0;   
 }
#4
鱼鱼啦啦2008-06-27 21:14
你这好像是高级java啊,我们没学过这种类型的那~~有点看不懂的那~~
唔~~
#5
orzorz2008-06-27 21:39
[bo][un]鱼鱼啦啦[/un] 在 2008-6-27 21:14 的发言:[/bo]

你这好像是高级java啊,我们没学过这种类型的那~~有点看不懂的那~~
唔~~

orz....
java~? ho ho~
#6
编程小呆2010-04-01 13:08
一会我来回个
#7
许苏娟2010-04-10 13:14
conversion(int a){
stack s;
initial(&s);
if(!a) return;
push(s,a%8);
conversion(a/8);
k=pop(s);
cout<<k;
#8
sally024682015-11-25 21:36
回复 2楼 zjl138
这是C++吗?
1