| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦   
共有 553 人关注过本帖
标题:求助: 利用栈,将十进制数转换成八进制的数
收藏  订阅  推荐  打印
鱼鱼啦啦
Rank: 1
等级:新手上路
帖子:10
积分:204
注册:2008-6-26
求助: 利用栈,将十进制数转换成八进制的数

那位高手可以帮忙解决这个问题啊?
  十分感谢!!


利用栈,将十进制数转换成八进制的数
例:十进制转换成八进制:(66)10=(102)8
66/8=8 余 2
8/8=1 余 0
1/8=0 余 1
结果为余数的逆序:102
2008-6-26 14:51
zjl138
Rank: 4
等级:高级会员
帖子:764
积分:9144
威望:1
注册:2007-11-12

任意进制转换.
引用:
/*****************************************************************
** HighlightCodeV3.0 software by yzfy(雨中飞燕) http://yzfy.org **
*****************************************************************/
#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;
}   
[ 本帖最后由 zjl138 于 2008-6-26 15:39 编辑 ]

i like linux...
2008-6-26 15:35
zjl138
Rank: 4
等级:高级会员
帖子:764
积分:9144
威望:1
注册:2007-11-12

再给个递归的吧,以前写的.
引用:
#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;   
}

i like linux...
2008-6-26 15:45
鱼鱼啦啦
Rank: 1
等级:新手上路
帖子:10
积分:204
注册:2008-6-26

你这好像是高级java啊,我们没学过这种类型的那~~有点看不懂的那~~
唔~~
2008-6-27 21:14
orzorz
Rank: 2
等级:注册会员
帖子:99
积分:1132
注册:2008-6-25

引用:
鱼鱼啦啦 在 2008-6-27 21:14 的发言:

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

不打不相识,不吵也不相识,偶然间竟遇到一直找寻的大牛.
2008-6-27 21:39
共有 552 人关注过本帖
发新话题
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.277980 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved