求助: 利用栈,将十进制数转换成八进制的数
那位高手可以帮忙解决这个问题啊?十分感谢!!
利用栈,将十进制数转换成八进制的数
例:十进制转换成八进制:(66)10=(102)8
66/8=8 余 2
8/8=1 余 0
1/8=0 余 1
结果为余数的逆序:102
[quote][font=新宋体][size=2][color=#008000]/*****************************************************************
** HighlightCodeV3.0 software by yzfy(雨中飞燕) http://yzfy.org **
*****************************************************************/
[/color][color=#FF0000]#include<iostream>
[/color][color=#0000FF]using namespace [/color][color=#FF0000]std[/color];
[color=#FF0000]#define[/color][color=#FF00FF] stacksize 100
[/color]typedef [color=#0000FF]int [/color]DataType;
[color=#0000FF]typedef struct
[/color][color=#800000]{
[/color]DataType data[color=#800000][[/color]stacksize[color=#800000]][/color];
[color=#0000FF]int [/color]top;
[color=#800000]}[/color]Stack;
[color=#0000FF]void [/color][color=#008080]Initial[/color](Stack *s)
[color=#800000]{
[/color]s->top=-[color=#8000C0]1[/color]; [color=#008000]
[/color][color=#800000]}
[/color][color=#0000FF]int [/color][color=#008080]Isempty[/color](Stack *s)
[color=#800000]{
[/color][color=#0000FF]return [/color]s->top==-[color=#8000C0]1[/color];
[color=#800000]}
[/color][color=#0000FF]int [/color][color=#008080]IsFull[/color](Stack *s)
[color=#800000]{
[/color][color=#0000FF]return [/color]s->top==stacksize-[color=#8000C0]1[/color]; [color=#008000]
[/color][color=#800000]}
[/color][color=#0000FF]void [/color][color=#008080]Push[/color](Stack *s,DataType x)
[color=#800000]{
[/color][color=#0000FF]if[/color]([color=#008080]IsFull[/color](s))
[color=#800000]{
[/color][color=#FF0000]cout[/color]<<[color=#FF00FF]"栈上溢"[/color];
[color=#FF0000]exit[/color]([color=#8000C0]1[/color]);
[color=#800000]}
[/color]s->data[color=#800000][[/color]++s->top[color=#800000]][/color]=x;
[color=#800000]}
[/color]DataType [color=#008080]Pop[/color](Stack *s)
[color=#800000]{
[/color][color=#0000FF]if[/color]([color=#008080]Isempty[/color](s))
[color=#800000]{
[/color][color=#FF0000]cout[/color]<<[color=#FF00FF]"栈为空"[/color];
[color=#FF0000]exit[/color]([color=#8000C0]1[/color]);
[color=#800000]}
[/color][color=#0000FF]return [/color]s->data[color=#800000][[/color]s->top--[color=#800000]][/color];
[color=#800000]}
[/color][color=#008000]//进制转换函数
[/color][color=#0000FF]void [/color][color=#008080]Conversion[/color]([color=#0000FF]int [/color]i,[color=#0000FF]int [/color]j)
[color=#800000]{
[/color][color=#0000FF]int [/color]k;
Stack s;
[color=#008080]Initial[/color](&s);
[color=#0000FF]while[/color](i)
[color=#800000]{
[/color][color=#008080]Push[/color](&s,i%j);
i=i/j;
[color=#800000]}
[/color][color=#0000FF]while[/color](![color=#008080]Isempty[/color](&s))
[color=#800000]{
[/color]k=[color=#008080]Pop[/color](&s);
[color=#FF0000]cout[/color]<<k;
[color=#800000]}
[/color][color=#FF0000]cout[/color]<<[color=#FF0000]endl[/color];
[color=#800000]}
[/color]DataType [color=#008080]top[/color](Stack *s)
[color=#800000]{
[/color][color=#0000FF]if[/color]([color=#008080]Isempty[/color](s))
[color=#800000]{
[/color][color=#FF0000]cout[/color]<<[color=#FF00FF]"栈为空"[/color];
[color=#FF0000]exit[/color]([color=#8000C0]1[/color]);
[color=#800000]}
[/color][color=#0000FF]return [/color]s->data[color=#800000][[/color]s->top[color=#800000]][/color];
[color=#800000]}
[/color][color=#0000FF]int [/color][color=#FF0000]main[/color]([color=#0000FF]void[/color])
[color=#800000]{
[/color][color=#0000FF]int [/color]m,n;
[color=#FF0000]cin[/color]>>m>>n;
[color=#008080]Conversion[/color](m,n);
[color=#008080]system[/color]([color=#FF00FF]"pause"[/color]);
[color=#0000FF]return [/color][color=#8000C0]0[/color];
[color=#800000]} [/color][/size][/font][/quote]
[[it] 本帖最后由 zjl138 于 2008-6-26 15:39 编辑 [/it]] 再给个递归的吧,以前写的.
[quote]
#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;
}
[/quote] 你这好像是高级java啊,我们没学过这种类型的那~~有点看不懂的那~~
唔~~[em08] [quote][bo][un]鱼鱼啦啦[/un] 在 2008-6-27 21:14 的发言:[/bo]
你这好像是高级java啊,我们没学过这种类型的那~~有点看不懂的那~~
唔~~[em08] [/quote]
orz....
java~? ho ho~
页:
[1]
